Rails 的三个环境
Rails 的应用程序预设提供了三种不同的执行模式:
- development environment 开发模式,用在你的开发的时候
- test environment 测试模式,用在执行测试程式时
- production environment 正式上线模式,用在实际的上线运作环境
Rails 控制台默认使用的是“开发环境”:
$ rails console
Loading development environment
>> Rails.env
=> "development"
>> Rails.env.development?
=> true
>> Rails.env.test?
=> false
如前所示,Rails 对象有一个 env
属性,属性上还可以调用各环境对应的布尔值方法,例如,Rails.env.test?
,在“测试环境”中的返回值是 true
,而在其他两个环境中的返回值则是 false
。
如果需要在其他环境中使用控制台(例如,在“测试环境”中进行调试),只需把环境名称传递给 console
命令即可:
$ rails console test
Loading test environment
>> Rails.env
=> "test"
>> Rails.env.test?
=> true
Rails 本地服务器和控制台一样,默认使用“开发环境”,不过也可以在其他环境中运行:
$ rails server --environment production
如果要在“生产环境”中运行应用程序,先要提供生产环境数据库。在“生产环境”中执行 rake db:migrate
命令可以生成“生产环境”所需的数据库:
$ bundle exec rake db:migrate RAILS_ENV=production
(我发现在控制台、服务器和迁移命令中指定其他环境的方法不一样,这可能会产生混淆,所以我特意演示了三个命令的用法。)
顺便说一下,把应用程序部署到 Heroku 后,可以使用如下的命令进入远端的控制台:
$ heroku run console
Ruby console for yourapp.herokuapp.com
>> Rails.env
=> "production"
>> Rails.env.production?
=> true
Heroku 是用来部署网站的平台,自然会在“生产环境”中运行应用程序。