0

我在本地机器(OS X El Capitan)上运行 Rails 4.2.5 应用程序。它在开发模式下运行良好。

但后来我决定看看它在生产模式下是如何工作的,所以切换到生产并运行服务器。

bundle install --deployment --without development test
bundle exec rake db:create RAILS_ENV=production
bundle exec rake db:migrate RAILS_ENV=production
bundle exec rake db:seed RAILS_ENV=production
bundle exec rake assets:precompile RAILS_ENV=production
bundle exec rails s -e production

并非一切看起来都很好。所以我做了一些改变,直到一切正常。

之后,我需要添加一些实现的功能,所以再次切换回开发模式并运行服务器。

bundle install
bundle exec rake db:migrate
bundle exec rake db:seed
bundle exec rails s

服务器运行没有问题,但我发现它正在使用生产数据库而不是开发数据库。

我试图通过执行清除所有缓存,bundle exec rake tmp:cache:clear但没有帮助。

仅供参考,我正在使用 postgres 进行生产和开发。

这是database.yml文件:

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 30

development:
  <<: *default
  username: <%= ENV['OATV_POSTGRES_USERNAME'] %>
  password: <%= ENV['OATV_POSTGRES_PASSWORD'] %>
  database: <%= ENV['OATV_POSTGRES_DATABASE_DEVELOPMENT'] %>

test:
  <<: *default
  username: <%= ENV['OATV_POSTGRES_USERNAME'] %>
  password: <%= ENV['OATV_POSTGRES_PASSWORD'] %>
  database: <%= ENV['OATV_POSTGRES_DATABASE_TEST'] %>

production:
  <<: *default
  url: <%= ENV['DATABASE_URL'] %>

当然,我已经在本地机器上设置了所有环境变量,因为我需要在开发、测试和生产模式下进行测试。

这里可能的原因是什么?

感谢您提前回答。

4

1 回答 1

2

Just to write it here. Possible solutions:

1.Restart the server (it should clear any unwanted variables which were set by production environment, and not cleared when running in development mode) E.g. url: <%= ENV['DATABASE_URL'] %> was set by the production environment, but wasn't set by development mode

2.Change:

   development:
     <<: *default

to:

  development:
    <<: *default
    url: postgres:///db/database-name

So you would point to your local development database manually, instead of using already saved URL in production mode

Or (maybe) third:

3.Run bundle exec rails s -e development

于 2016-04-14T12:27:03.183 回答