0

我有一组文件位于 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

这也发生在文件集中需要的其他 gem 上。我只是选择了bindata一个例子。

bindata的 Gemfile 中有。当我运行bundle show bindata时,它向我显示了bindata.

我什至放入require 'bindata'了我的模型,但它给了我同样的加载错误。

我该如何停止LoadError

任何帮助将不胜感激。

更新 1

当我跑步时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

更新 2

好的,所以我知道这与我加载 Rails 环境的方式有关。

bundle exec irb
irb(main):001:0> require 'bindata'
=> true

更新 3

所以我返回了一些 git 提交并继续尝试添加 gem 并查看它们是否会加载到我的 rails 控制台中。如果确实如此,我就已经足够远了。不知道有什么不同。但是,我也注意到当我的 spring 服务器重新启动时,我的 gem 会加载到我的 rails 控制台中。

4

1 回答 1

0

要要求 lib 文件夹中的所有文件,请添加config.autoload_paths << Rails.root.join('lib')到您的application.rb,此答案可以帮助您:https ://stackoverflow.com/a/19650564/3739191

现在,

require 'bindata'

应该管用 :)

于 2016-11-17T17:18:35.237 回答