This is an example app demonstrating how to deploy a ruby app to runway.
- clone this repo, and navigate into that directory
runway app createrunway app deployrunway open
You can then deploy changes by git commiting them, and running runway app deploy again.
This is the rails demo app.
There are different options - you can either do
rails new --skip-docker, and use runway's automatic detection of ruby projects for deployment- or just
rails new(as this example did), which will generate aDockerfile, and runway will then use that- the latest
railsgenerates a workingDockerfile, but previous versions might have a non-numericUSERline (which does not work on runway) - just apply this patch manually
- the latest
Rails's encrypted credentials file setup needs a build-time and run-time env
variable called RAILS_MASTER_KEY. rails new ... creates that key, in
config/master.key, but it's gitignored (as it should be), so runway won't see
it.
So we need to set it:
# normally, you would run `rails new` yourself, and then do
runway app config set RAILS_MASTER_KEY=$(cat config/master.key)
# for this example only, that value is
runway app config set RAILS_MASTER_KEY=7c2260da949a113f9b8f0a5d7d4556ba
It's important to not push a .bundle/config to runway. Just put .bundle
into the .gitignore (as it is in this example), and that should work.
You might need to run bundle lock --add-platform x86_64-linux, so the build
works on runway (but there will be an error message telling you that, if it is
necessary).
Other than that, rails apps work out of the box - bundle exec rails assets:precompile is automatically called, and the webserver is selected by
what you have in your Gemfile (puma by default, for rails).