【问题标题】:'LoadError: cannot load such file' for local gem本地 gem 的“LoadError:无法加载此类文件”
【发布时间】:2013-03-28 02:34:59
【问题描述】:

我在 Rails 应用程序中使用本地 gem(此处为 clearconnect),但在尝试要求它时收到以下错误:

LoadError: cannot load such file -- clearconnect

无论我在哪里尝试要求 gem,都会发生这种情况。当问题最初发生时,“require”语句位于 lib 文件中,此后我尝试在“config/application.rb”中以及通过 rails 控制台要求它,但没有成功。通过控制台要求在我的应用程序的 Gemfile 中指定的其他 gem 是成功的,如果这有任何帮助的话。

到目前为止我已经尝试/检查过的事情:

我的gem对应的.gem文件已经放在vendor目录下,下面一行在我的Gemfile中:

gem 'clearconnect', '0.0.1', :path => 'vendor'

更新 Gemfile 后运行 bundle install 会产生以下结果:

Using clearconnect (0.0.1) from source at vendor

“bundle exec gem list”列出了我的 gem,从 Rails 控制台运行“Gem.loaded_specs”也是如此。

我创建了一个新的 Rails 应用程序并以相同的方式包含我的 gem,并收到相同的错误。

在这一点上,我认为问题出在我在 Gemfile 中指定我的 gem 的方式上,或者是 gem 本身的问题(尽管它在本地没有问题)。宝石可以在这里找到:chrahunt/clearconnect

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    您需要输入 gem 的完整路径,不仅仅是“vendor”,还有“vendor/gems/mygem-VERSION”

    【讨论】:

    • 我的 gem 位于供应商文件夹 vendor/clearconnect-0.0.1.gem 我编辑了 Gemfile 以包含文件本身,但是当我运行“捆绑安装”时出现错误。 .../vendor/clearconnect-0.0.1.gem does not exist 应该指定 gem 位于该目录的根目录中,谢谢您的建议。
    • NP - 如果这让您获胜,您可以随时将其标记为已回答 :-)
    【解决方案2】:

    线

    Using clearconnect (0.0.1) from source at vendor

    除了在 Gemfile 中指定的路径存在之外并没有确认太多(通过更改路径以指向另一个位置并且没有收到错误来确认)。用于验证 gem 已安装的其他点似乎以类似的方式运行,导致真正的问题是 Bundler 不支持在 Gemfile 中指定本地 .gem 文件 [github issue here]。问题中提到的解决方法:

    Put the gem in vendor/cache and run (ironically) 'bundle install --no-cache'.

    工作得很好,我没有任何进一步的错误。我还能够成功地将应用程序部署到 Heroku,而无需任何额外配置。

    总结:

    将您希望包含在应用程序中的 .gem 文件放在vendor/cache 目录中。像往常一样在应用程序的 Gemfile 中指定您的 gem(没有 :path),确保明确说明版本号。就我而言,这是:

    gem 'clearconnect', '0.0.1'

    运行bundle install --no-cache(推理here),问题应该得到解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-25
      • 2015-05-30
      • 2015-01-22
      • 2012-10-25
      • 2020-12-05
      相关资源
      最近更新 更多