How to create a new environment in Ruby on Rails?

Solution 1:

Assuming you want create the hudson environment.

  1. Create a new environment file in config/environments/hudson.rb. You can start by cloning an existing one, for instance config/environments/test.rb.
  2. Add a new configuration block in config/database.yml for your environment.
  3. Update any other configuration file you might have under the config folder with your new environment, some gems create their own ymls under the config folder.
  4. That's all.

Now you can start the server

rails server -e hudson

or run the console

rails console hudson

And so on.

If you are using an older version of Rails, the commands are

ruby script/server -e hudson
ruby script/console hudson

Solution 2:

Updated Answer for Rails 5

Create new environment file:

config/environments/staging.rb

Modify the following files to add the environment key 'staging'

config/cable.yml
config/database.yml
config/secrets.yml
Gemfile (incase you have stage dependent gems)

The new environments can now be used as usual for eg:

rails server -e staging

rails console staging

Or to do conditional checks:

rails console staging, Rails.env.staging?

Good place to start for creating new environment and to modify these files is to copy production settings.

Solution 3:

If you're using webpacker in your Rails 5 app, also make sure to update your config/webpacker.yml. If you forget to add your new environment to config/webpacker.yml, it will just fall back to using your production config.