在ruby中的环境变量中添加url api键

Cod*_*123 1 ruby rubygems ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

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

mat*_*att 5

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

my_api_key = ENV['MY_API_KEY']
Run Code Online (Sandbox Code Playgroud)

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

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

$ export MY_API_KEY=foobar123abc
$ rails s
Run Code Online (Sandbox Code Playgroud)

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

$ MY_API_KEY=foobar123abc rails s
Run Code Online (Sandbox Code Playgroud)

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

ENV['MY_API_KEY'] = 'non_secret_api_key_that_can_be_shared_around'
Run Code Online (Sandbox Code Playgroud)

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