Sometimes you may need to setup custom environments beyond the standard test, development, and production that rails comes with. If you would like to have your staging server configured a little big differently than test and production (maybe higher logging levels for example), then you would need to create another environment for these configurations called staging.

Changes, Additions and Edits

### Gemfile In your Gemfile, you should add your new environment to the necessary groups. If your environment is similar to production, you should add staging next to everywhere you see the production group lie below.

group :development, :staging do
  gem 'log4r'
end

### Update config/database.yml You should create a new environment in your database.yml file. This will look something like this

default: &default
  adapter: postgresql
  pool: 5

staging:
  <<: *default
  database: w2w-staging

Environment Config

In config/environments/, you should add staging.rb. To make things easy, copy an existing environment that is most similar to the new one you are creating and make the adjustments you need from there.

Update Secrets.yml

If you are running rails 4.1, you will also need to update your secrets.yml file to handle new the new environment

staging:
  <<: *default
  secret_key_base: secrets_are_secretive_SALFJASFLKSAJFLSAFJOWERULSADFJLKSAFJD

Misc

Do a quick find on your project directory for any environment specific code being run. Look for things like Rails.env. and add your new environment to these conditionals like below

if Rails.env.test? || Rails.env.development? || Rails.env.staging?