我通过运行此命令生成了本地密钥:
rake secret
然后在我的Ubuntu VPS中,我创建了这样的环境变量:
echo 'export SECRET_KEY_BASE=<locally_generated_secret_string>' >> ~/.bashrc
然后我通过运行这个来实现我的bashrc:
source ~/.bashrc
当我输入echo $SECRET_KEY_BASE
时,它会向我输出此生成的字符串
然后我通过capistrano上传了我的rails应用程序并启动了它。但是,日志仍显示此错误消息:
#<RuntimeError: Missing `secret_token` and `secret_key_base` for 'production' environment, set these values in `config/secrets.yml`>
为什么会这样?
答案 0 :(得分:3)
这可能是因为您的应用程序中没有任何地方可以设置它。
如果您检查了config/secrets.yml
文件,则会注意到secret_key_base
和development
都设置了test
,如下所示:
development:
secret_key_base: *******...
test:
secret_key_base: *******...
但也许不适用于production
。
您需要做的是为production
环境添加配置。因此,在secrets.yml
文件中,您将拥有类似的内容:
development:
secret_key_base: *******...
test:
secret_key_base: *******...
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
secret_token: <%= ENV["SECRET_TOKEN"] %>
通过将secret_key_base
设置为ENV["SECRET_KEY_BASE"]
,它将能够获取您导出到您的环境的值,同样适用于secret_token
。
希望这有帮助。