gpt4 book ai didi

ruby-on-rails - 使用 Capistrano 3 在部署时设置 secret_key_base

转载 作者:行者123 更新时间:2023-12-04 05:47:06 24 4
gpt4 key购买 nike

因此,我正在将一个运行在 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"]返回正确的 secret token 。

我想使用 Capistrano 的 :default_env会起作用,但这似乎只是为部署任务设置环境变量,而不是实际上在服务器上。有没有简单的方法来解决这个问题?我的后备方案是将 secret 放在 secrets.yml 中。因为 repo 是私有(private)的,但我宁愿不这样做。

最佳答案

这个任务有一个 gem :
https://github.com/capistrano-plugins/capistrano-secrets-yml

安装

将此添加到 Gemfile:

group :development do
gem 'capistrano', '~> 3.2.1'
gem 'capistrano-secrets-yml', '~> 1.0.0'
end

进而:

$捆绑安装

设置和使用
make sure your local config/secrets.yml is not git tracked. It should be on the disk, but gitignored.

在本地 config/secrets.yml 中填充生产 secret :
production:
secret_key_base: d6ced...

添加到 Capfile:
require 'capistrano/secrets_yml'

通过执行以下任务在远程服务器上创建 secrets.yml 文件:
$ bundle exec cap production setup

您现在可以继续执行其他部署任务。

关于ruby-on-rails - 使用 Capistrano 3 在部署时设置 secret_key_base,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28495711/

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