所以在 Ubuntu 服务器上,我在我的日志中得到了这个:
#<RuntimeError: Missing `secret_key_base` for 'production'
environment, set this value in `config/secrets.yml`>
/home/deploy/apps/project/shared/bundle/ruby/2.4.0/gems/railties-5.1.4/lib/rails/application.rb:510:in `validate_secret_key_config!'
/home/deploy/apps/project/shared/bundle/ruby/2.4.0/gems/railties-5.1.4/lib/rails/application.rb:247:in `env_config'```
我的浏览器:
An unhandled lowlevel error occurred. The application logs may have details.
我的secrets.yml(在deploy/apps/project/current/config & deploy/apps/project/shared/config):
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
部署文件
...
namespace :deploy do
desc 'Rails Secrets'
task :secret do
on roles(:app) do
execute "export SECRET_KEY_BASE=`bundle exec rake secret`"
end
end
before :finishing, :secret
...
end
我也试过手动添加
SECRET_KEY_BASE
在 /etc/profile
.当我输入这个命令时它存在:printenv
(因为是我手动添加的),但是退出时root
它不再存在于 printenv
.ENV 变量不存在于
printenv
中命令。在我进行部署之后 ( cap production deploy:initial
)。如何解决此错误?
最佳答案
似乎您登录的用户与您用来添加 keystore 的用户不同。您以 root 身份登录,但我认为您没有使用 root
部署或启动服务器, 对?
如果您使用名为 deploy
的用户进行部署也就是说,您应该以 deploy
的身份登录并将环境变量添加到部署的上下文(例如 ~/.bashrc
)。我不是 100% 确定 /etc/profile
会在这里工作。另外,记得在添加 var 后重新启动 rails 服务器
关于ruby-on-rails - `secret_key_base` 环境缺少 'production',请在 Ubuntu 服务器上的 config/secrets.yml 中设置此值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50603623/