我正在将带有capistrano gem的ruby on rails应用程序的生产环境部署到虚拟专用服务器上。我运行以下命令进行部署:
bundle exec cap production deploy
除非我尝试检查当前生产版本的运行环境,否则一切似乎都运行良好。
我用来检查它的一种方法是运行:
rails console
Rails.env
我得到的答案是“发展”,这非常令人恐惧。
在另一个测试中:在当前版本中运行以下命令时:
rails db
我收到一条错误消息,指出未创建mydatabase_development。
我的应用程序似乎运行良好,但是我不知道这是否会导致重大问题。首先:是否可以确定我的实时副本是否真正在开发中运行?其次:鉴于我有问题,如何配置capistrano来部署生产环境?
请记住,它会rails console
根据您所在的环境RAILS_ENV
或RACK_ENV
您所在的环境参与当前的环境。如果您未在服务器上明确设置此设置,则可能默认为development
。
解决此问题的一种方法是将其强制放入您.bash_profile
使用的外壳配置文件中。例如:
export RAILS_ENV=production
那应该使它可用,当您使用Rails shell时,它会正确启动。
注意,您甚至不应该在生产服务器上以开发模式启动,因为在中不应有该名称的条目config/database.yml
。最佳实践是config/database.yml
仅将其存储在生产服务器上,并在Capistrano部署期间将其移到另一端。
将此添加到您的config/deploy.rb
:
set :linked_files, %w[
config/database.yml
]
然后,您shared/config/database.yml
将在其中创建仅生产配置,该配置将在部署时链接到位。确保config/database.yml
从版本控制系统中排除它,以免其被部署。
您的网站可能还可以的原因是RACK_ENV
,production
除非另外配置,否则类似Passenger的启动器会自动设置为。不过,这不会影响您的外壳,默认为development
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句