Skip to content
A serverless web application framework for collaboration and scale.
Rust Go JavaScript HTML Shell HCL Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci fix spacing issue in circleci Jan 11, 2020
app updated readme Jan 11, 2020
build http protobuf (#14) Jan 8, 2020
cmd/embly http protobuf (#14) Jan 8, 2020
compilers
embly-rs
embly-wrapper-rs
examples updated readme Jan 11, 2020
nix add python and zola to nix bootstrap Jan 11, 2020
notes Mvp (maybe) (#10) Oct 3, 2019
pkg http protobuf (#14) Jan 8, 2020
tests
tools http protobuf (#14) Jan 8, 2020
.dockerignore Nix/Circleci/Docs (#13) Jan 6, 2020
.gitignore http protobuf (#14) Jan 8, 2020
Cargo.toml Nix/Circleci/Docs (#13) Jan 6, 2020
Makefile add build_blog_examples Jan 11, 2020
go.mod Local dev improvements (#11) Jan 1, 2020
go.sum http protobuf (#14) Jan 8, 2020
readme.md readme fix Jan 11, 2020
rustfmt.toml Tool MVP (#2) Aug 11, 2019

readme.md

embly

A serverless web application framework for collaboration and scale.

For more background and details about what embly is read here or here

Hello World

Create a new folder and add the following files and directory structure:

├── embly.hcl
└── hello
    ├── Cargo.toml
    └── src
        └── main.rs

Now add the following file contents:

embly.hcl:

function "hello" {
  runtime = "rust"
  path    = "./hello"
}

gateway {
  type = "http"
  port = 8765
  route "/" {
    function = "${function.hello}"
  }
}

hello/Cargo.toml:

[package]
name = "hello"
version = "0.0.1"
edition = "2018"

[dependencies]
embly = "0.0.5"

hello/src/main.rs:

extern crate embly;
use embly::{
  http::{run_catch_error, Body, Request, ResponseWriter},
  prelude::*,
  Error,
};

async fn execute(_req: Request<Body>, mut w: ResponseWriter) -> Result<(), Error> {
  w.write_all(b"Hello World")?; // writing our hello response bytes
  Ok(()) // if an error is returned the server will respond with an HTTP error
}

// this function is run first
fn main() {
  run_catch_error(execute); // this is the embly::http::run function that is specific to http responses
}

You can now run your project for local development with embly dev, although the fastest way to get started is with docker:

docker run -v /var/run/docker.sock:/var/run/docker.sock  -v $(pwd):/app -p 8765:8765 -it embly/embly embly dev

More on how to run embly in the installation section.

The embly Command

$ embly
Usage: embly [--version] [--help] <command> [<args>]

Available commands are:
    build     Build an embly project
    bundle    Create a bundled project file
    db        Run various database maintenace tasks. 
    dev       Develop a local embly project
    run       Run a local embly project

Installation

embly uses docker to download and run build images. It's recommended that you run embly from within a docker container and give it access to the docker socket. If you are in the root of an embly project you can start the dev server like so:

docker run -v /var/run/docker.sock:/var/run/docker.sock  -v $(pwd):/app -p 8765:8765 -it embly/embly embly dev

If you would like to run embly locally you'll need to have cargo and go installed. The following sequence of commands should work:

go get github.com/embly/embly/cmd/embly
cargo install embly-wrapper
cargo install lucetc

Links


embly used to be wasabi, which was more focused on providing full operating system functionality within a webassembly runtime. That code is available here.

You can’t perform that action at this time.