Ruby on rails Rails 4:Capistrano开发环境而不是生产环境?
我正在将带有CapistranoGem的RubyonRails应用程序的生产环境部署到虚拟专用服务器上。我运行以下命令进行部署: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
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
,如果您有一个。