[英]Production environment is using staging database rather than production database
我有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
环境中运行的应用?
使用RackEnv production
来指定生产环境。
另外,我不禁在您的config/database.yml
注意到这一点:
staging:
# ...
database: some_app
# ...
production:
# ...
database: some_app
# ...
暂存和生产环境都配置为使用相同的数据库。
Rails使用登台数据库而不是生产数据库。
不,他们俩都共享一个公共数据库。
我相信您想做这样的事情:
staging:
# ...
database: some_app_staging
# ...
production:
# ...
database: some_app_production
# ...
现在有两个不同的数据库,每个数据库都在各自的环境中使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.