1

我在 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

4

2 回答 2

1

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

于 2013-03-28T06:48:43.780 回答
1

线

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(没有 :path),确保明确说明版本号。就我而言,这是:

gem 'clearconnect', '0.0.1'

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

于 2013-03-28T19:16:27.473 回答