【问题标题】:Ruby API wrapper and RailsRuby API 包装器和 Rails
【发布时间】:2015-10-08 08:31:27
【问题描述】:

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

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

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

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

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

提前非常感谢。

【问题讨论】:

  • 是的,您可以将纯 ruby​​ gem 添加到 rails,因为默认情况下 Gemfile 中的所有内容都是必需的,您不必添加显式要求。但是对于 1)我们需要看到一些实际的代码:这太模糊了。
  • 看来问题出在 env 变量上。在config/local_env.yml 路径中创建 YAML 文件然后我应该能够在 rails 控制台上调用该变量吗? API_TOKEN: very-long-string-with-the-token 使用 ENV["API_TOKEN"]

标签: ruby-on-rails ruby api wrapper


【解决方案1】:

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

【讨论】:

【解决方案2】:

所以,这就是我所做的:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    相关资源
    最近更新 更多