我想从我的 main_app 中读取包含在 Rails Engine Gem 中的 .yml 文件。该文件位于 config/test.yml
。
IO.read("config/test.yml")
失败并显示 No such file or directory @rb_sysopen
如果我将文件移动到主应用程序中,一切正常。但我需要 Gem 中的这个文件。
最佳答案
解决方案一
您可以将根路径存储在主 gem 文件的常量中,并在代码的其他位置检索它。您必须确保 gem 在您的应用程序中的代码运行之前得到初始化,否则您将遇到错误,因为常量不会被定义。
# lib/my_gem.rb
GEM_ROOT = File.expand_path("../..", __FILE__)
# app/.../some_class.rb
IO.read("#{GEM_ROOT}/config/test.yml")
方案二
最明智的做法是,您可以通过编程方式从 Bundler
获取 gem 路径,然后使用该根路径检索您的 yml 文件的完整路径。
看看这个answer你可以很容易地适应你的情况
关于ruby-on-rails - 如何从 Gem 读取文件 (.yml),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24722623/