15

On my development machine:

$ bundle exec rails console
Loading development environment (Rails 3.2.3)
1.9.3p194 :001 > Rails.env
 => "development"

This is expected. So far, so good.

Yet on my production server (to which I have deployed using Capistrano), I get exactly the same result:

$ bundle exec rails console
Loading development environment (Rails 3.2.3)
1.9.3p194 :001 > Rails.env
 => "development"

On either machine, I can instead do:

$ bundle exec rails console production
Loading development environment (Rails 3.2.3)
1.9.3p194 :001 > Rails.env
 => "production"

My question is: on the production server, shouldn't bundle exec rails console load the production environment by default, instead of the development environment? And if not, why not?

  • Thanks. This answered my question on how to run rails console as production. It does not follow the same pattern as rails server -e production. – erroric Jul 09 '13 at 17:56

2 Answers2

23

The rails executable can't know which environment should run on which machine.

you can put export RAILS_ENV=production in your ~/.bashrc or ~/.bash_profile file of the user you want to start the console with.

jigfox
  • 18,057
  • 3
  • 60
  • 73
5

RAILS_ENV is a variable like any other which will always default to development

if you like you can always open up '~/.bash_profile' on the production server and add this:

 alias sc="bundle exec rails console production"

then run source ~/.bash_profile to reload that file for your terminal session and you can just call sc to load up console.

TomDunning
  • 4,829
  • 1
  • 26
  • 33