如何在rails中提取API环境变量

时间:2014-06-22 05:22:13

标签: ruby-on-rails rubygems environment-variables google-places-api

在rails中实现并且暂时只在本地运行。

使用谷歌地方的谷歌API服务器密钥是......让我们说..." abc123"

当我使用网址时,只能看到一个网址:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=abc123

它提取信息。

当我从mac终端输入env时,我列出了一个值:

PLACES_API=abc123

当我运行填写文字键的代码时:

@client = GooglePlaces::Client.new("abc123")

它工作正常。

但是,当我尝试使用

进行此操作时
@client = GooglePlaces::Client.new(ENV['PLACES_API'])

它出错了,当我试图把ENV [' PLACES_API']放空时。

我假设我没有正确使用env变量,但现在我想知道我做错了什么以及如何使用环境变量。

1 个答案:

答案 0 :(得分:1)

选项1

如果您在代码中使用ENV['PLACES_API'],那么在启动rails服务器之前,您必须导出密钥。在终端运行export PLACES_API="api key",然后启动服务器。

选项2(处理密钥的更好方法)

使用以下代码

gmap.yaml目录中创建文件config
development:
  secret: "api key"
test:
  secret: "api key"
production:
  secret: "api key"

现在使用以下代码

gmap.rb目录中创建一个新文件config/initializars
PLACES_API = YAML.load_file("#{::Rails.root}/config/gmap.yml")[::Rails.env]

现在您可以使用

访问密钥了
@client = GooglePlaces::Client.new(PLACES_API['secret'])