我在生产服务器上有一个Rails应用程序和一个.rb
文件,我这样做:
Rails.configuration.my_sect = if Rails.env.development? || Rails.env.test?
{
secret_key: 'some_secrete',
public_key: 'some_public'
}
else
{
secret_key: ENV['key1'],
public_key: ENV['key2']
}
end
该应用程序位于Linux服务器上。将secret_key
和public_key
的值放在服务器上的最佳位置是什么,以便始终可以访问ENV['key1']
和ENV['key2']
?
我不想使用任何宝石或Capistrano。
答案 0 :(得分:1)
我会将它们放在服务器脚本中,因为例如,~/.bashrc
之类的shell配置文件未加载到cron脚本或其他方案中。
"服务器脚本"可以像key1=foo key2=baz rails s
一样简单。
答案 1 :(得分:0)
将/config/en_vars.rb
添加到.gitignore
创建文件config/en_vars.rb
并将变量放在那里:
ENV['key1']='foo'
ENV['key2']='bar'
然后在config/environment.rb
中添加require
行下面的行:
en_vars = File.join(Rails.root, 'config/en_vars.rb')
load(en_vars) if File.exists?(en_vars)
答案 2 :(得分:0)
即使您说您不想使用任何宝石,我建议您使用dotenv
;即使不建议在生产环境中使用它。
否则,最简单的 plain 解决方案是:
"$PROJECT_DIR/.env"
).gitignore
在应用程序服务器启动之前执行它,类似于
source "$PROJECT_DIR/.env" && rails server
但那是dotenv
的创造,为什么要重新发明轮子?