大神使用sudo在.bash_profile文件中找不到环境参数SECRET_KEY_BASE

God using sudo fails to find the environment parameter SECRET_KEY_BASE in the .bash_profile file

我将这些行添加到 /home/web/.bash_profile。网络是 Rails 应用程序的用户。

SECRET_KEY_BASE=xxxxxxxxxxxxxxxxxxxxx
export SECRET_KEY_BASE

我将这一行添加到 /etc/sudoers

Defaults env_keep += "SECRET_KEY_BASE"

此命令returns 预期结果。

sudo ruby -e 'puts ENV["SECRET_KEY_BASE"]'

如果我运行没有上帝的独角兽,它可以从环境中找到SECRET_KEY_BASE,并正常执行。

bundle exec unicorn_rails -c config/unicorn.rb -E production -D

运行 Unicorn 在没有 God 的情况下使用 sudo 也表现正常。

sudo bundle exec unicorn_rails -c config/unicorn.rb -E production -D

但是当我 运行 Unicorn with God 使用 sudo 时,它找不到 SECRET_KEY_BASE 并且出错。

sudo god start my_app

my_app.god中的启动命令是这样的

God.watch do |w|
  w.start = "cd #{rails_root} && bundle exec unicorn_rails -c config/unicorn.rb -E #{rails_env} -D"
  w.uid = 'web'
  w.gid = 'web'
...
end

看来问题出在上帝身上,而不是.bash_profile和独角兽身上。除了我应该尝试什么?

我将这一行添加到 my_app.god

ENV["SECRET_KEY_BASE"] = 'xxxxxxxxxxxxxxxxxxxxxxxx'

我知道这不是一个很酷的解决方案,但它确实有效。 SECRET_KEY_BASE 未作为源代码包含在 Git 存储库中。