生产环境使用临时数据库而不是生产数据库

时间:2013-04-11 18:28:01

标签: ruby-on-rails deployment passenger

我有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.rbconfig/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环境中运行?

1 个答案:

答案 0 :(得分:1)

使用RackEnv production指定生产环境。


另外,我在config/database.yml

中发现了这一点
staging:
  # ...
  database: some_app
  # ...

production:
  # ...
  database: some_app
  # ...

暂存和生产环境都配置为使用相同的数据库。

  

Rails正在使用登台数据库而不是生产数据库。

不,他们都在共享一个共同的数据库。

我相信你想做这样的事情:

staging:
  # ...
  database: some_app_staging
  # ...

production:
  # ...
  database: some_app_production
  # ...

现在有两个不同的数据库,每个数据库都在适当的环境中使用。