我在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。
答案 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),问题应该得到解决。