从另一个ruby脚本访问哈希值

时间:2015-10-26 01:55:13

标签: ruby-on-rails ruby model-view-controller hash key-value

我目前有2个需要2个不同凭据的API。我想将更改提交到Github,但我不希望看到这些凭据,因此我决定将所有凭据保存在hash的单独ruby文件中,然后想要访问它在我的脚本中。同时,将该文件添加到.gitignore。但我无法从当前脚本访问hash

这是我的credentials.rb

credentials = { 
    APIKEY: '12'
    PASSWORD: '34'
    sid: '45'
    token: '56'
}

这是我的main.rb

class ApisController < ApplicationController

  def api
    url = "https://#{credentials[APIKEY]}:#{credentials[PASSWORD]}@test"
  end

end

我不确定如何在main.rb中调用该哈希值。

1 个答案:

答案 0 :(得分:1)

有三种方法可以做到这一点:

  1. 有传统的&amp; 方便在Rails中执行此操作的方法。在.env熨烫文件中添加所有私人凭据。
  2. 从您gitignore
  3. 的另一个ruby脚本中访问哈希值
  4. 如果你坚持的话,或者你可以做得更长。
  5. 第一种方式:直接在您需要的文件中使用环境变量。如果你需要yaml:

    your_yaml_file.yml

     credentials_or_whatever:
           APIKEY: <%= ENV['API_KEY'] %>
           PASSWORD: <%= ENV['API_PASSWORD'] %>
    

    或者如果您需要main.rb

    class ApisController < ApplicationController
    
      def api
        url = "https://#{credentials['APIKEY']}:#{credentials['PASSWORD']}@test"
      end
    
    end
    

    第二种方式:如果出于某种原因,您必须使用gitignore而不仅仅使用环境文件的哈希,那么您的credentials.rb包含您以后的凭据访问您需要的地方。 gitignore d档:

    credentials = { 
        "APIKEY": "12",
        "PASSWORD": "34"
        "sid": "45"
        "token": "56"
    }
    

    然后是您的main.rb

    class ApisController < ApplicationController
    
      def api
        url = "https://#{credentials["APIKEY"]}:#{credentials["PASSWORD"]}@test"
      end
    
    end
    

    第三种方式:在环境变量中添加您的私有凭据,然后使用它们来创建您的gitignore哈希:

    您的credentials.rb文件:

    credentials = { 
        "APIKEY": ENV['APIKEY'],
        "PASSWORD": ENV['PASSWORD'],
        "sid": ['SID'],
        "token": ENV['TOKEN']
    }
    

    在第一种和第二种情况下,您的环境变量文件可能如下所示:

    .env(在你的rails根文件夹中):

    APIKEY = 12
    PASSWORD = 34
    SID = 1234
    TOKEN = 5678
    

    我希望这有助于解释!