www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - vibe / self contained standalone executable?

reply =?iso-8859-1?Q?Robert_M._M=FCnch?= <robert.muench saphirion.com> writes:
Is it possible to pack a complete "web-app" (serving web-pages and 
providing REST API) into a single executable so that no other files 
need to be accessed and everything is servered from something like a 
"virtual filesystem" which is in memory only?

-- 
Robert M. MŁnch
http://www.saphirion.com
smarter | better | faster
Jul 28 2019
parent reply Sebastiaan Koppe <mail skoppe.eu> writes:
On Sunday, 28 July 2019 at 13:45:50 UTC, Robert M. M√ľnch wrote:
 Is it possible to pack a complete "web-app" (serving web-pages 
 and providing REST API) into a single executable so that no 
 other files need to be accessed and everything is servered from 
 something like a "virtual filesystem" which is in memory only?
I am using https://dlang.org/spec/expression.html#import_expressions for text files. Don't know if it works on binary files as well.
Jul 28 2019
next sibling parent bauss <jj_1337 live.dk> writes:
On Sunday, 28 July 2019 at 14:14:06 UTC, Sebastiaan Koppe wrote:
 On Sunday, 28 July 2019 at 13:45:50 UTC, Robert M. M√ľnch wrote:
 Is it possible to pack a complete "web-app" (serving web-pages 
 and providing REST API) into a single executable so that no 
 other files need to be accessed and everything is servered 
 from something like a "virtual filesystem" which is in memory 
 only?
I am using https://dlang.org/spec/expression.html#import_expressions for text files. Don't know if it works on binary files as well.
It works on anything since it just loads in the data (as text I think?) from the file. But you can just convert it to a buffer etc.
Jul 28 2019
prev sibling parent reply =?iso-8859-1?Q?Robert_M._M=FCnch?= <robert.muench saphirion.com> writes:
On 2019-07-28 14:14:06 +0000, Sebastiaan Koppe said:

 I am using https://dlang.org/spec/expression.html#import_expressions 
 for text files. Don't know if it works on binary files as well.
And this works than good together with the vibe framework? So, it's not requiring or forcing one to use files or databases? -- Robert M. MŁnch http://www.saphirion.com smarter | better | faster
Jul 28 2019
next sibling parent rikki cattermole <rikki cattermole.co.nz> writes:
On 29/07/2019 2:42 AM, Robert M. M√ľnch wrote:
 On 2019-07-28 14:14:06 +0000, Sebastiaan Koppe said:
 
 I am using https://dlang.org/spec/expression.html#import_expressions 
 for text files. Don't know if it works on binary files as well.
And this works than good together with the vibe framework? So, it's not requiring or forcing one to use files or databases?
vibe.d uses this for their templates. For a VFS you would need to have your own API (can be library) that you explicitly use.
Jul 28 2019
prev sibling parent reply Sebastiaan Koppe <mail skoppe.eu> writes:
On Sunday, 28 July 2019 at 14:42:48 UTC, Robert M. M√ľnch wrote:
 On 2019-07-28 14:14:06 +0000, Sebastiaan Koppe said:

 I am using 
 https://dlang.org/spec/expression.html#import_expressions for 
 text files. Don't know if it works on binary files as well.
And this works than good together with the vibe framework? So, it's not requiring or forcing one to use files or databases?
Haven't tested it, but something like this: --- import vibe.core.core : runApplication; import vibe.http.server; void handleRequest(scope HTTPServerRequest req, scope HTTPServerResponse res) { if (req.path == "/file.txt") res.writeBody(import("file.txt"), "text/plain"); } void main() { auto settings = new HTTPServerSettings; settings.port = 8080; settings.bindAddresses = ["::1", "127.0.0.1"]; auto l = listenHTTP(settings, &handleRequest); scope (exit) l.stopListening(); runApplication(); } --- Of course you may want to use the router or the rest generator for this. See the examples in the repo.
Jul 28 2019
parent bauss <jj_1337 live.dk> writes:
On Sunday, 28 July 2019 at 18:54:37 UTC, Sebastiaan Koppe wrote:
 On Sunday, 28 July 2019 at 14:42:48 UTC, Robert M. M√ľnch wrote:
 On 2019-07-28 14:14:06 +0000, Sebastiaan Koppe said:

 I am using 
 https://dlang.org/spec/expression.html#import_expressions for 
 text files. Don't know if it works on binary files as well.
And this works than good together with the vibe framework? So, it's not requiring or forcing one to use files or databases?
Haven't tested it, but something like this: --- import vibe.core.core : runApplication; import vibe.http.server; void handleRequest(scope HTTPServerRequest req, scope HTTPServerResponse res) { if (req.path == "/file.txt") res.writeBody(import("file.txt"), "text/plain"); } void main() { auto settings = new HTTPServerSettings; settings.port = 8080; settings.bindAddresses = ["::1", "127.0.0.1"]; auto l = listenHTTP(settings, &handleRequest); scope (exit) l.stopListening(); runApplication(); } --- Of course you may want to use the router or the rest generator for this. See the examples in the repo.
Doing it like that is kinda pointless though because you can just serve static files. http://vibed.org/api/vibe.http.fileserver/serveStaticFiles
Jul 28 2019