`require':无法加载这样的文件--oj(LoadError)

时间:2017-12-13 01:00:17

标签: ruby sinatra

我只了解Ruby的基础知识并尝试修复此错误。已经有同样的问题,但无法从这些问题中解决。

当我在Ruby项目中运行以下命令时

rerun 'ruby app.rb'

我收到以下错误。

[rerun] Webhook-receiver launched

/Users/myhome/.rbenv/versions/2.4.2/lib/ruby/2.4.0/
rubygems/core_ext/kernel_require.rb:55:
in `require': cannot load such file -- oj (LoadError)

from  /Users/myhome/.rbenv/versions/2.4.2/lib/ruby/2.4.0/rubygems/
core_ext/kernel_require.rb:55:
in `require' from app.rb:2:in `<main>'

[rerun] Webhook-receiver Launch Failed
[rerun] Watching . for **/*.{rb,js,coffee,css,scss,sass,erb,html,haml,ru,yml,slim,md,feature}

任何帮助都会很棒。非常感谢你

1 个答案:

答案 0 :(得分:4)

只是为了为其他人提供详细而有条理的答案,因为您已经解决了这个问题。在开发Ruby应用程序时,如果需要存在于外部gem中的代码,则可以使用Bundler来跟踪和管理依赖项。它使用名为Gemfile的文件来注册项目所依赖的依赖项,以及将这些依赖项提取到您的计算机的源。 Gemfile的基本语法示例。

# Registering the sources of gem packages
source 'https://rubygems.org'
[...]

# Requiring a gem for this project
gem 'package_1' # registers a dependency
gem 'package_2', '>=2.0.0' # registers a dependency, with minimum version required
gem 'package_3', '>= 1.5.0', '< 1.9.0' # registers a dependency, with minimum and maximum version required
[...]

完成所有这些操作后,当您运行bundle install时,gem文件中指定的依赖项将被提取到您的计算机,您可以运行该程序。如果要查看计算机上gem的更多信息,可以运行bundle info package(下面是mysql gem的示例)

  * mysql (2.9.1)
    Summary: This is the MySQL API module for Ruby
    Homepage: http://github.com/luislavena/mysql-gem
    Path: /var/lib/gems/2.3.0/gems/mysql-2.9.1