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

Access a hash value from another ruby script

我目前有 2 个 API,需要 2 个不同的凭据。我想提交对 Github 的更改,但我不希望看到这些凭据,因此我决定将我的所有凭据保存在单独的 ruby 文件中的 hash 中,然后想访问它在我的脚本中。同时,将该文件添加到 .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. 在 Rails 中有常规且 方便的 方法可以做到这一点。在 .environment 文件中添加您所有的私人凭据。
  2. 从您 gitignore.
  3. 的另一个 ruby 脚本访问哈希值
  4. 或者如果你坚持的话,你可以用更长的方式来做。

第一种方式:直接在文件中需要的地方使用环境变量。如果您在 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包含您以后可以在需要的地方访问的凭据。 gitignored 个文件:

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

希望对解释有所帮助!