hec*_*hec 5 deployment environment ruby-on-rails vps capistrano3
我正在使用capistrano gem将我的ruby on rails应用程序的生产环境部署到虚拟专用服务器上.我运行以下命令来部署:
bundle exec cap production deploy
Run Code Online (Sandbox Code Playgroud)
除非我尝试检查我当前的生产版本在哪个环境中运行,否则一切似乎都运行良好.
我用来检查这个的一种方法是运行:
rails console
Rails.env
Run Code Online (Sandbox Code Playgroud)
我得到的答案是"发展",这是非常可怕的.
在另一个测试期间:当我在当前版本中运行以下内容时:
rails db
Run Code Online (Sandbox Code Playgroud)
我收到一条错误,指出未创建mydatabase_development.
我的应用程序似乎运行良好,但我不知道这是否会导致重大问题向前发展.首先:有没有办法确定我的实时副本是否真的在开发中运行?其次:鉴于我遇到问题,如何配置capistrano来部署生产环境?
请记住,rails console根据您的环境RAILS_ENV或RACK_ENV在您的环境中参与当前环境.如果您没有在服务器上明确设置它,那么它可能默认为development.
解决此问题的一种方法是在您.bash_profile或您使用的任何外壳配置文件中强制它.例如:
export RAILS_ENV=production
Run Code Online (Sandbox Code Playgroud)
这应该是可用的,当你使用你的Rails shell时,它将正确启动.
请注意,您甚至无法在生产服务器上以开发模式启动,因为不应该有一个具有该名称的条目config/database.yml.最佳做法是config/database.yml 仅在生产服务器上存储并在Capistrano部署期间将其移出.
将此添加到您的config/deploy.rb:
set :linked_files, %w[
config/database.yml
]
Run Code Online (Sandbox Code Playgroud)
然后创建一个仅生产配置,在shared/config/database.yml部署时将链接到位.请务必config/database.yml从版本控制系统中排除,以免部署.
您的网站可能正常的原因是因为像Passenger这样的启动器会自动设置RACK_ENV为production除非另行配置.但是,这不会影响您的shell,默认情况下development.
| 归档时间: |
|
| 查看次数: |
1386 次 |
| 最近记录: |