2015-05-22 69 views
0

我有一个API密钥,我保存到​​,我想将其保存为我的Rails应用程序中的全局变量。我认为这会工作,这是我config/initializers/my_constants.rbRuby on Rails - 源文件并将ENV变量保存为全局

`source "/home/user/api/keys"` 
API_PASS = ENV["API_PASSWORD"] 

这是​​(没有真正的价值,很明显):

#!/bin/bash 
export API_PASSWORD="--------" 

源命令似乎并没有做任何事情。 API_PASS只设置为零。我怎样才能做到这一点?

+0

为什么不在环境变量中设置shell? –

+0

@DaveNewton - 我想将它自动化。所以我想我会制作一个脚本来调用源命令,然后部署服务器。但我认为在处理我的cron任务时,我仍然必须打开该文件并将其解析出来。 – Isaac

回答

3

上述方法不起作用,因为backtick命令启动它自己的shell并结束它,因此这些变量永远不会包含在脚本的其余部分中。

我想你必须自己解析文件并将条目添加到ENV中。我会看看dotenv gem,看看你是否可以将它指向你自己的环境文件。他们为你做了所有艰苦的工作。

https://github.com/bkeepers/dotenv

+0

我想我要创建一个使用source命令的脚本,然后为此部署。我想我必须在cron任务中处理这个密码时解析出这个文件。我可能只是打开文件并用regex自己解析内容。谢谢你解释为什么back ticks失败! – Isaac