jon*_*hue 3 ruby rubygems ruby-on-rails constants
我的 gem 在config/my_gem.yml 中生成以下文件:
test: true
Run Code Online (Sandbox Code Playgroud)
现在我想将test的值加载到我的 gems 模块中以便能够调用:
MyGem.test
=> true
Run Code Online (Sandbox Code Playgroud)
那是我的尝试:
在 Rails 应用程序中 - config/initializers/my_gem.rb:
CONFIG_PATH = "#{Rails.root}/config/my_gem.yml"
MY_GEM = YAML.load_file(CONFIG_PATH)[Rails.env]
Run Code Online (Sandbox Code Playgroud)
在 gem - lib/my_gem.rb 中:
def self.test
::MY_GEM[:test]
end
Run Code Online (Sandbox Code Playgroud)
但是我得到一个例外,因为MY_GEM它没有被识别为一个常量(在lib/my_gem.rb 中)
c:/RailsInstaller/Ruby2.3.0/lib/ruby/gems/2.3.0/gems/my_gem-0.1.0/lib/my_gem.rb:11:in `test': 未初始化的常量 MY_GEM (NameError)
您应该能够通过在您的 gem 中执行此操作来加载应用程序 yaml 文件:
YAML.load_file('config/my_gem.yml')
Run Code Online (Sandbox Code Playgroud)
这要求工作目录是 Rails 应用程序的根目录——当您在该目录中调用 rails 命令时就是这种情况。
| 归档时间: |
|
| 查看次数: |
1912 次 |
| 最近记录: |