Rails:如何将本地文件加载到模型中?

Kus*_*ush 2 ruby xml ruby-on-rails nokogiri

我有一个文件位于 /lib/dir/file.xml

我正在通过以下方式称呼它:

file = Nokogiri::XML(File.open('#{RAILS_ROOT}/lib/dir/file.xml'))
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误,我不确定自己在做什么错。该文件肯定存在。

Errno::ENOENT: No such file or directory - #{RAILS_ROOT}/lib/dir/file.xml
Run Code Online (Sandbox Code Playgroud)

如果有帮助的话,我会选择4和Ruby 2。如何加载此文件?

Kus*_*ush 5

我发现了问题所在。

RAILS_ROOT已折旧。您应该改为使用Rails.root

因此,这是为将来看到这种情况的人提供的解决方案:

root = Rails.root.to_s #make sure string    
file = Nokogiri::XML(File.open("#{root}/lib/dir/file.xml"))
Run Code Online (Sandbox Code Playgroud)