在ruby中的环境变量中添加urls api密钥

我有一个我在其中一个控制器中使用的URL。 有没有更好的地方放这个url? url使用API​​密钥,我想知道是否有更好的地方添加此url和/或api密钥,以便它不会添加到控制器类代码中,并且更可编辑? 如果我将它添加为环境变量或其他任何我如何从我的控制器类访问它? 谢谢。 它是一个ruby和铁路项目

如果您希望保留源代码之外的API密钥和密码等内容,那么使用环境变量可能是个好主意。 使用ENV对象从代码中访问它们:

 my_api_key = ENV['MY_API_KEY'] 

要使用此技术,您需要在启动应用程序之前在您的环境中设置变量,以及如何执行此操作取决于您的本地设置,并且可能也会因开发和生产而异。

在开发中,您可以简单地在shell中设置环境变量,例如使用bash:

 $ export MY_API_KEY=foobar123abc $ rails s 

现在rails将启动并可以访问此环境变量。 您还可以为单个命令设置变量:

 $ MY_API_KEY=foobar123abc rails s 

根据服务/ api的不同,您可以将其中一些设置为config/environments/development.rb (或test.rb )中的缺省开发/测试值:

 ENV['MY_API_KEY'] = 'non_secret_api_key_that_can_be_shared_around' 

在生产中设置环境变量取决于您部署应用程序的方式。 Phusion有一篇关于在Passenger中使用环境变量的文章 。 还有一篇关于在Heroku中使用环境变量的有用文章,即使您没有使用它们进行部署,也值得一读。

您可以将其添加到application.rb文件中

 config.service { :api_key => 'api_key' } 

或者更好的是,将它添加到development.rb和production.rb文件中,以便您可以更好地测试它。

您可以从控制器中访问此api_key

 Rails.application.config.service[:api_key]