ruby-on-rails - 如何从 Gem 读取文件 (.yml)

标签 ruby-on-rails ruby file gem

我想从我的 ma​​in_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/

相关文章:

ruby-on-rails - 根据数组元素个数生成多条记录

ruby-on-rails - 通过 Rails 控制台编辑数据库记录

ruby-on-rails - 匿名 Controller 的 Rspec stubing View

linux - 为什么在多个终端上同时运行同一个Python脚本时没有错误?

java - 为什么从我的文件中读取的最小数字总是 0? ( java )

ruby-on-rails - 使用 selenium 作为 webdriver 的 Rails 集成测试 - 无法登录

ruby-on-rails - 当 Devise 用户超出我的默认范围时,如何允许他们登录?

ruby-on-rails - rails4 中的未定义方法 `user?'

ruby-on-rails - Heroku ruby​​ buildpack 错误 - 未定义的局部变量或方法 `install_language_pack_gems'

windows - 文件的获取日期