我的 rails 4.2.5 应用程序服务器在开发模式下一直连接到生产数据库而不是开发数据库
My rails 4.2.5 app server keeps connecting to production db instead of development db in development mode
我在我的本地机器上 运行ning Rails 4.2.5 应用程序 (OS X El Capitan)。
它在开发模式下运行良好。
但后来我决定看看它在生产模式下是如何工作的,所以切换到生产模式和 运行 服务器。
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'] %>
当然,我已经在我的本地机器上设置了所有的环境变量,因为我需要在开发、测试和生产模式下进行测试。
这里可能的原因是什么?
提前感谢您的回答。
就写到这里吧。
可能的解决方案:
1.重新启动服务器(它应该清除所有不需要的变量
生产环境设置,运行时不清除
发展模式)
例如。 url: <%= ENV['DATABASE_URL'] %>
生产环境设置,开发模式未设置
2.变化:
development:
<<: *default
至:
development:
<<: *default
url: postgres:///db/database-name
因此您将手动指向本地开发数据库,而不是在生产模式下使用已保存的 URL
或者(也许)第三个:
3.运行 bundle exec rails s -e development
我在我的本地机器上 运行ning Rails 4.2.5 应用程序 (OS X El Capitan)。 它在开发模式下运行良好。
但后来我决定看看它在生产模式下是如何工作的,所以切换到生产模式和 运行 服务器。
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'] %>
当然,我已经在我的本地机器上设置了所有的环境变量,因为我需要在开发、测试和生产模式下进行测试。
这里可能的原因是什么?
提前感谢您的回答。
就写到这里吧。 可能的解决方案:
1.重新启动服务器(它应该清除所有不需要的变量
生产环境设置,运行时不清除
发展模式)
例如。 url: <%= ENV['DATABASE_URL'] %>
生产环境设置,开发模式未设置
2.变化:
development:
<<: *default
至:
development:
<<: *default
url: postgres:///db/database-name
因此您将手动指向本地开发数据库,而不是在生产模式下使用已保存的 URL
或者(也许)第三个:
3.运行 bundle exec rails s -e development