' LoadError:无法加载此类文件'为本地宝石

时间:2013-03-28 02:35:00

标签: ruby-on-rails ruby

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

LoadError: cannot load such file -- clearconnect

无论我在哪里尝试使用宝石,都会发生这种情况。当问题最初发生时,'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

2 个答案:

答案 0 :(得分:1)

您需要将完整路径放到gem上,而不仅仅是“vendor”,而是“vendor / gems / mygem-VERSION”

答案 1 :(得分:0)

该行

Using clearconnect (0.0.1) from source at vendor

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

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

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

总结:

将要包含的.gem文件放在vendor/cache目录中的应用程序中。在应用程序的Gemfile中指定您的gem,如正常(no:path),确保明确说明版本号。就我而言,这是:

gem 'clearconnect', '0.0.1'

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