Ruby on rails 如何在rails配置路径中访问yaml

Ruby on rails 如何在rails配置路径中访问yaml,ruby-on-rails,ruby,gem,yaml,Ruby On Rails,Ruby,Gem,Yaml,我正在编写一个ruby gem,我想让用户使用自己的yaml文件配置,但我不知道如何测试用户_config.yml是否存在于rails配置路径中。 仅当此文件存在于配置路径中时,我才想使用user_config.yml。您可以使用$load_path变量访问Rails应用程序的加载路径,该变量为数组类型 因此 还有另一个有用的方法,叫做#exists?这当然会检查文件是否存在。有关更多信息,请参阅文件类文档 希望这能让你开始。您的问题相当模糊,如果需要更多帮助,请详细回答。Rails.root(

我正在编写一个ruby gem,我想让用户使用自己的yaml文件配置,但我不知道如何测试用户_config.yml是否存在于rails配置路径中。

仅当此文件存在于配置路径中时,我才想使用user_config.yml。

您可以使用$load_path变量访问Rails应用程序的加载路径,该变量为数组类型

因此

还有另一个有用的方法,叫做#exists?这当然会检查文件是否存在。有关更多信息,请参阅文件类文档

希望这能让你开始。您的问题相当模糊,如果需要更多帮助,请详细回答。

Rails.root
(或早期版本的Rails中的
Rails\u root
)提供应用程序根目录的路径。从那里,您可以看到您感兴趣的文件是否存在

e、 g


对不起,这很难解释。如果我让用户_config.yml进入配置路径(rails_app/config/user_config.yml),我如何访问该文件?我可以这样使用吗:YAML.load_file(“#{$load_PATH}/config/user_config.yml”)?正如我在最初的回答中所说,$load_PATH变量是一个数组,所以您不想使用字符串插值。有关加载文件的建议,请参见我答案中的编辑。@BrunnoDosSantos要从yaml中获取哈希值,您确实可以使用yaml模块
configs\u hash=YAML.load\u文件(“path/to/config.yml”)[RAILS\u ENV]
,其中
RAILS\u ENV
是“开发”、“测试”等。Luke,再次抱歉。。。但我想知道如何友好地使用rails\u app/config。正如我所说,我正在gem中编写这段代码,我不知道rails\u应用程序路径是什么。这就是我在最初的问题中想问的问题。现在你可能会使用
Rails.root.join('config','user\u config.yml')
if $LOAD_PATH.include?('/path/where/user/should/put/their/user_config.yml')
  # EDIT
  config_options = File.new('rails_app/config/user_config.yml', 'r')
else
  # EDIT
  config_options = File.new('path/to/default/config.yml', 'r')
end
path = File.join(Rails.root, "config", "user_config.yml")
if File.exists?(path)
  # do something
end