Macro diesel_migrations::embed_migrations[][src]

macro_rules! embed_migrations {
    () => { ... };
    ($migrations_path : expr) => { ... };
}
Expand description

This macro will read your migrations at compile time, and embed a module you can use to execute them at runtime without the migration files being present on the file system. This is useful if you would like to use Diesel’s migration infrastructure, but want to ship a single executable file (such as for embedded applications). It can also be used to apply migrations to an in memory database (Diesel does this for its own test suite).

You can optionally pass the path to the migrations directory to this macro. When left unspecified, Diesel Codegen will search for the migrations directory in the same way that Diesel CLI does. If specified, the path should be relative to the directory where Cargo.toml resides.

Examples

embed_migrations!("../migrations/sqlite");

fn main() {
    let connection = establish_connection();

    // This will run the necessary migrations.
    embedded_migrations::run(&connection);

    // By default the output is thrown out. If you want to redirect it to stdout, you
    // should call embedded_migrations::run_with_output.
    embedded_migrations::run_with_output(&connection, &mut std::io::stdout());
}