projectmoon
5ea07b8953
The primary benefit of this is to avoid Rocket's database integration, which has become problematic in this codebase with the update to the new async style. Because the async database API is actually synchronous under the hood, this introduces some annoying lifetime requirements that basically force us to use owned data everywhere. The original pattern was to have a separate data layer that could invoke queries from `self` (the db connection). By using a true async database driver, we can get this back, because the lifetimes are once again flexible instead of the ones forced by Rocket. |
||
---|---|---|
migrations | ||
proto | ||
src | ||
static/scripts | ||
templates | ||
.env | ||
.gitignore | ||
COPYING | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE | ||
README.md | ||
Rocket.toml | ||
build.rs | ||
diesel.toml | ||
rust-toolchain |
README.md
Tenebrous Sheets
An open source character sheet service for tabletop roleplaying games.
Currently under heavy development.
Build Instructions
These are very basic build instructions. They assume you already have cargo set up and installed. Building the application requires Rust Nightly! See rustup documentation for more, particularly the part about using Rust Nightly.
Install Dependencies
Install dependencies. The exact method depends on your OS.
- sqlite3 and development headers (Void Linux:
xbps-install sqlite sqlite-devel
, Ubuntu:apt install sqlite3 libsqlite3-dev
). - protoc: protocol buffers compiler. There is one baked into the build, so you should not need this unless you are not using Linux/Mac/Windows.
Initial Setup
Follow these instructions from the root of the repository. Set up database:
cargo install diesel_cli --no-default-features --features sqlite
diesel setup
diesel migration run
Run Application
If you are using rustup
, then it should automatically switch to the
nightly version of Rust in this repository. This is because of the
rust-toolchain
file.
Command line "instructions" to build and run the application:
cargo run
The sqlite database is currently always created in the same directory
that cargo run
was invoked from, so make sure you invoke it from the
same place every time.