【发布时间】:2013-04-04 01:59:53
【问题描述】:
我有 4 个 Rails 环境。
- 测试
- 发展
- 分期
- 生产
Rails 完美地部署到了暂存和生产环境,除了生产 Rails 使用的是暂存数据库而不是生产数据库这一事实。我究竟做错了什么?我还没有检查什么? Capistrano 中是否需要设置数据库?
这里有一些注意事项。
我的config/database.yml 清楚地区分了暂存数据库和生产数据库。
staging:
adapter: mysql2
encoding: utf8
database: some_app
pool: 5
username: some_user
password: some_pass
host: staging.zzzzz.com
port: 1911
production:
adapter: mysql2
encoding: utf8
database: some_app
pool: 5
username: some_user
password: some_pass
host: production.zzzzz.com
port: 1611
生产和暂存的 Rails 环境是相同的。 换句话说,config/environments/staging.rb 和 config/environments/staging.rb 是相同的。
生产环境中的乘客服务器应该在生产环境中运行 Rails 应用程序。见RailsEnv production行
<VirtualHost *:80>
LoadModule passenger_module /opt/ruby-enterprise-1.8.7-2011.12/lib/ruby/gems/1.8/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /opt/ruby-enterprise-1.8.7-2011.12/lib/ruby/gems/1.8/gems/passenger-3.0.11
PassengerRuby /opt/ruby-enterprise-1.8.7-2011.12/bin/ruby
PassengerMaxPoolSize 20
Include conf/rhapcom.conf
Include conf/maintenance.conf
Include conf/redirects.conf
DocumentRoot /var/rails80/current/public
<Directory /var/rails80/current/public>
RailsEnv production
AllowOverride all
Options -MultiViews
</Directory>
</VirtualHost>
Include conf/oldrotw.conf
经过一番调查,我发现生产应用程序实际上是在集成环境中运行的。我通过Rails.env 进行了检查。如何向生产应用指定它应该在production 环境中运行?
【问题讨论】:
标签: ruby-on-rails deployment passenger