【发布时间】:2015-02-13 08:54:08
【问题描述】:
因此,我正在将一个运行在 Apache 和 Phusion Passenger 上的 Rails 4 应用程序部署到 DigitalOcean 上托管的 Ubuntu droplet。部署后,由于 Rails 生产没有找到用于生产的 secret_key_base 令牌,我得到了 500 个。但是,如果我运行echo $SECRET_KEY_BASE,它会返回由我的 deploy.rb 生成的 rake secret。
设置它的 deploy.rb 任务是:
namespace :deploy do
task :start do ; end
task :stop do ; end
desc "Setup ENV variables"
task :env_vars do
on "root@xxx.xxx.xxx.xx" do
execute "export SECRET_KEY_BASE=#{`bundle exec rake secret`}"
end
end
end
before "deploy", "deploy:env_vars"
但是,Rails 仍然没有接受它。我什至通过 ssh 连接到我的服务器并在 rails console 中进行了检查,ENV["SECRET_KEY_BASE"] 返回了正确的秘密令牌。
我认为使用 Capistrano 的 :default_env 会起作用,但这似乎只是为部署任务设置环境变量,而不是实际上在服务器上。有没有简单的方法来解决这个问题?我的后备方案是将秘密放在 secrets.yml 中,因为 repo 是私有的,但我宁愿不这样做。
【问题讨论】: