Ruby on rails Rails 4:Capistrano开发环境而不是生产环境?

Ruby on rails Rails 4:Capistrano开发环境而不是生产环境?,ruby-on-rails,deployment,environment,vps,capistrano3,Ruby On Rails,Deployment,Environment,Vps,Capistrano3,我正在将带有CapistranoGem的RubyonRails应用程序的生产环境部署到虚拟专用服务器上。我运行以下命令进行部署: bundle exec cap production deploy 除非我尝试检查我当前的生产版本在什么环境下运行,否则所有这些都似乎工作得很好 我用来检查这一点的一种方法是运行: rails console Rails.env 我得到的答案是“发展”,这相当可怕 在另一个测试期间:在当前版本中运行以下操作时: rails db 我得到一个错误,表明mydata

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

bundle exec cap production deploy
除非我尝试检查我当前的生产版本在什么环境下运行,否则所有这些都似乎工作得很好

我用来检查这一点的一种方法是运行:

rails console
Rails.env
我得到的答案是“发展”,这相当可怕

在另一个测试期间:在当前版本中运行以下操作时:

rails db
我得到一个错误,表明mydatabase_开发未创建


我的应用程序似乎运行良好,但我不知道这是否会导致重大问题。首先:有没有办法确定我的live copy是否正在开发中运行?第二:鉴于我有一个问题,如何配置capistrano来部署生产环境

请记住,
rails console
根据您环境中的
rails_ENV
RACK_ENV
的指示参与当前环境。如果您没有在服务器上明确设置,那么它可能会默认为
development

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

export RAILS_ENV=production
这将使它可用,当你使用你的轨道外壳时,它将正确地启动

需要注意的是,您甚至不能在生产服务器上以开发模式启动,因为在
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_ENV
设置为
production
,除非另有配置。不过,这不会影响您的shell,默认为
development

您在哪个系统上运行
rails console
?在安装了Ubuntu 14.04发行版的VPS上运行
rails console
。我运行该命令的目录是:
/var/www/myapp/current/
Brilliant-answer-tadman。谢谢我是否需要对我的
config/application.yml
文件(figaro gem用于环境变量)和
config/database.yml
文件执行相同的操作?将API密钥、凭据、密码等检查到源代码存储库中通常是个坏主意。这样的东西应该安全地存储在您的服务器上,并且只存储在您的服务器上,除了安全备份之外。通常我会制作一个
config/database.example.yml
文件,作为每个开发人员可以自定义的模板。同样的情况也适用于其他事情,如
application.yml
,如果您有一个。