gpt4 book ai didi

ruby-on-rails - rails 4 : Capistrano development environment instead of production?

转载 作者:行者123 更新时间:2023-12-04 18:42:00 24 4
gpt4 key购买 nike

我正在将带有 capistrano gem 的 ruby​​ on rails 应用程序的生产环境部署到虚拟专用服务器上。我运行以下命令进行部署:

bundle exec cap production deploy

除非我尝试检查当前生产版本在什么环境中运行,否则一切似乎都运行良好。

我用来检查这个的一种方法是运行:
rails console
Rails.env

我得到的答案是“发展”,这很可怕。

在另一个测试中:当我在当前版本中运行以下命令时:
rails db

我收到一条错误消息,指出未创建 mydatabase_development。

我的应用程序似乎运行良好,但我不知道这是否会导致 future 出现重大问题。首先:有没有办法确定我的实时副本是否真的在开发中运行?其次:鉴于我有一个问题,我如何配置capistrano来部署生产环境?

最佳答案

请记住,rails console按照 RAILS_ENV 的规定参与当前环境或 RACK_ENV在你的环境中。如果你没有在你的服务器上明确设置它,那么它可能会默认为 development .

解决此问题的一种方法是在您的 .bash_profile 中强制使用它或您使用的任何 shell 配置文件。例如:

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来自您的版本控制系统,因此它不会被部署。

您的网站可能没问题的原因是像Passenger 这样的启动器会自动设置 RACK_ENVproduction除非另有配置。但是,这不会影响您的 shell ,默认为 development .

关于ruby-on-rails - rails 4 : Capistrano development environment instead of production?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24047825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com