如何使用rails安全地存储Google Api密钥并在脚本中使用它们?

时间:2016-05-30 23:14:20

标签: ruby-on-rails google-maps-api-3 api-key

我正在尝试安全地存储我在rails项目中使用的Google api密钥。我尝试将其存储在我的secrets.yml文件中,但如果我在我的google脚本& key = ENV ['google_api']中说,则无法获取它。

我很确定这不是方法,但在搜索主题后,我无法真正找到明确答案。谁能提供一些帮助?

谢谢, 托马斯

UPDATE ,这是我用来获取布局文件中的密钥的代码: 问题,我仍然收到我的api_key为“nil”的错误。

  <script>
    var GOOGLE_API_KEY="#{ENV['GOOGLE_API_KEY']}"
  </script>
  <%= javascript_include_tag "//maps.google.com/maps/api/js?v=3.23&key=#{ENV['GOOGLE_API_KEY']}&libraries=geometry,places&language=&hl=&region=&callback=initMap"%>

2 个答案:

答案 0 :(得分:2)

您需要将脚本调用放在application.html.erb文件中,以便ruby可以解析ENV['google_api']。这是一个示例应用程序文件(在HAML中):

!!!
%html
  %head
    %title Pursuit
    = stylesheet_link_tag 'application', media: 'all'
    = csrf_meta_tags

    :javascript
      var GOOGLE_API_KEY="#{ENV['GOOGLE_API_KEY']}"
    = javascript_include_tag 'application'
    = javascript_include_tag "//maps.googleapis.com/maps/api/js?libraries=places&key=#{ENV['GOOGLE_API_KEY']}"

  %body
    = render 'layouts/menu'
    .row
      .col.m12.l10.offset-l1
        = yield

答案 1 :(得分:2)

我正在使用figaro gem。对我来说,工作时将环境变量添加到application.yml文件。

GOOGLE_API_KEY: there_put_the_key

然后在上面 app/views/layouts/application.html.erb (如果要将源添加到所有视图,您可以将此行添加到特定视图)只需添加此行

<%= javascript_include_tag "//maps.google.com/maps/api/js?key=#{ENV['GOOGLE_API_KEY']}" %>