2013-04-11 4 views
1

У меня есть 4 среды Rails.Производственная среда использует промежуточную базу данных, а не производственную базу данных

  • тест
  • развитие
  • постановка
  • производство

Рельсы развернутую прекрасно стадирования и производства, за исключением того факта, что производство Rails использует устроив базу данных вместо базы данных. Что я делаю не так? Что еще не проверил? Есть ли что-то в Капистрано, где нужна настройка базы данных?

Вот что нужно отметить.

Мое 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 

Рельсы среда для производства и постановки идентичны. Иными словами, 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?

ответ

1

Используйте RackEnv production, чтобы указать производственную среду.


Кроме того, я не могу не заметить это в config/database.yml:

staging: 
    # ... 
    database: some_app 
    # ... 

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

И постановка и производственной среды настроены использовать ту же базу данных.

Рельсы используют промежуточную базу данных вместо базы данных производства.

Нет, они оба имеют общую базу данных.

Я считаю, что вы хотите сделать что-то вроде этого:

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

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

В настоящее время существуют две различные базы данных, каждый из которых используется в их соответствующей среде.

+0

Куда должна идти эта линия? –

+0

В коде выше ... заменить 'RailsEnv production'. – Substantial

+0

Показывает, что он работает в стадии –

Смежные вопросы