我有一组Ruby on Rails应用程序的lib目录中的文件。
我有一个需要使用这些文件的模型。在我的模型中,我有以下内容:
require_relative '../../some_path_to_file_without_extention'
(旁注;我很想知道一种方法来要求所有文件,而不是每个文件的require_relative)。
我require_relative的文件中有以下要求。
require "bindata"
当我尝试从require_relative文件访问函数时,我收到以下错误:
LoadError: cannot load such file -- bindata
这也适用于文件集中所需的其他宝石。我只选择了bindata
作为示例。
我的Gemfile中有bindata
。当我运行bundle show bindata
时,它会显示bindata
的路径。
我甚至将require 'bindata'
放入我的模型中,但它给了我相同的加载错误。
如何停止LoadError
?
非常感谢任何帮助。
当我运行bundle show
时。我得到以下内容:
Gems included by the bundle:
...
* bcrypt (3.1.11)
* bindata (2.3.4)
...
然后在控制台中,要求bcrypt工作,但bindata不工作。
irb(main):002:0> require 'bcrypt'
=> true
但是bindata没有。
irb(main):003:0> require 'bindata'
LoadError: cannot load such file -- bindata
好的,所以我知道必须要考虑我如何加载我的rails环境。
bundle exec irb
irb(main):001:0> require 'bindata'
=> true
所以我回去了几个git提交并继续尝试添加gems并查看它们是否会在我的rails控制台中加载。我回去的时间远远不够。不知道有什么不同。但是,我也注意到当我的spring服务器重新启动时,我的gem将加载到我的rails控制台中。
答案 0 :(得分:0)
要求lib文件夹中的所有文件,将config.autoload_paths << Rails.root.join('lib')
添加到application.rb
,此答案可以帮助您:https://stackoverflow.com/a/19650564/3739191
现在,
require 'bindata'
应该工作:)