Ruby API 包装器和 Rails

Ruby API wrapper and Rails

好的,我在 Gem 表单上为一些 REST API 提供了一个 Ruby 包装器,在安装 gem 之后我可以创建 Ruby 文件,只要我使用 require 'gem_file_name" 一切正常...

现在,我希望能够在 Rails 项目中使用这个 gem,这样我就可以调用这些方法并在不同的页面中显示结果。 严格来说,gem 不能与 rails 一起使用,我还可以将它添加到 Rails Gem 文件中吗?

现在API需要一个Token和一个账号,就是这些问题...

  1. 我在 config/initializers/ 中创建了一个具有相同 gem_name.rb 的文件 上面有两个变量:令牌和帐号。 这些变量的实际值作为环境变量在 config/local_env.yml 中。重点是当我启动 rails s 时出现错误:Uninitialized constant.

  2. 假设我设法解决了问题 1,我是否可以在不在每个 erb 页面上使用 require 'gem_file_name' 的情况下使用包装器上的方法?

非常感谢。

Rails 提供 config/application.rb 文件,用于指定各种 Rails 组件的设置。我们想在任何其他设置之前设置我们的环境变量。 Rails 提供了 config.before_configuration 方法。

您需要在 config/application.rb 中添加以下代码才能使用 config/local_env.yml:

config.before_configuration do
     env_file = File.join(Rails.root, 'config', 'local_env.yml')
     YAML.load(File.open(env_file)).each do |key, value|
       ENV[key.to_s] = value
     end if File.exists?(env_file)
end

所以,这就是我所做的:

  1. config/secrets.yml 上的标记创建了一个变量 -> api_token: verylongstring
  2. .gitignore
  3. 上添加了 secrets.yml 文件
  4. 在控制器中创建了一个 before_action 我想使用 API 建立连接并 Rails.application.secrets.api_tokensecrets.yml 文件中调用令牌变量