【问题标题】:Unable to load gem during runtime - cannot load such file运行时无法加载 gem - 无法加载此类文件
【发布时间】:2012-04-12 02:08:39
【问题描述】:

我的 Gemfile 中有以下声明

gem 'foo', :git => 'git@github.com:bar/foo.git'

在我运行 bundle install 后,它能够检索到以下文件夹下的 gem

$ ls ~/.rvm/gems/ruby-1.9.3-p0@samples/bundler/gems/foo-4dc3d7bf8271

但是在我的程序中使用 gem 并使用 require 'foo' 并运行它会引发以下问题。

custom_require.rb:36:in `require': 无法加载此类文件 -- foo (加载错误)

我该如何解决这个问题?

编辑

/home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1
/home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/i686-linu
x
/home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby
/home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/vendor_ruby/1.9.1
/home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/vendor_ruby/1.9.1/i686-li
nux
/home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/vendor_ruby
/home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1
/home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/i686-linux
/home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/
custom_require.rb:36:in `require': cannot load such file -- foo (LoadError)
        from /home/ec2-user/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.
9.1/rubygems/custom_require.rb:36:in `require'

【问题讨论】:

  • hrm,我通常不需要 gem,但我在上面看到的另一件事是 gem 名称后面应该跟一个版本号。 foo-1.3.4,仅仅是因为你的例子吗?
  • foo-4dc3d7bf8271 - 这是因为我分叉了一个项目并对其进行了一些更改,因此我试图直接从 github 使用这个 gem
  • 在您的要求之前添加一行puts $:(或使用Rails.logger.debug $:,如果它的Rails 应用程序)并检查您的gem 路径是否在列表中。还要检查,文件foo.rb 是否位于其路径中,它的名称可能略有不同。
  • @Nash - 当我尝试运行我的示例 ruby​​ 程序时,将上述错误添加为问题的一部分。
  • 也许,您需要指定如何要求该 gem,例如:gem 'dylansm-wirble', :require => 'wirble'

标签: ruby-on-rails gem gemfile faker


【解决方案1】:

确保在您需要来自 Gemfile 的任何 gem 之前调用 require 'bundler/setup'。但在 Rails 的情况下,它肯定会发生,因为rails server 调用了包含这样一行的config/boot.rb。

【讨论】:

    猜你喜欢
    • 2015-03-03
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多