【问题标题】:require bindata in ruby on rails application在 ruby​​ on rails 应用程序中需要 bindata
【发布时间】:2023-04-08 22:42:02
【问题描述】:

我有一组文件位于 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作为例子。

我的 Gemfile 中有 bindata。当我运行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 控制台中。

【问题讨论】:

    标签: ruby-on-rails rubygems bindata


    【解决方案1】:

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

    现在,

    require 'bindata'
    

    应该工作:)

    【讨论】:

    • 我很确定它应该可以工作,但是由于某种原因(可能我仍然做错了)它对我不起作用。我在问题中添加了更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    相关资源
    最近更新 更多