1

Rails アプリケーションでローカルの gem (ここでは clearconnect) を使用していますが、require しようとすると次のエラーが表示されます。

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」には、Rails コンソールから「Gem.loaded_specs」を実行する場合と同様に、私の gem がリストされます。

新しい Rails アプリケーションを作成し、同じ方法で gem を含めましたが、同じエラーが発生しました。

この時点で、Gemfile で自分の gem を指定する方法に問題があるか、gem 自体に問題があると考えています (ただし、ローカルでは問題はありません)。gem は次の場所にあります: chrahunt/clearconnect

4

2 に答える 2

1

この線

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 で通常のように (:path なしで) gem を指定し、バージョン番号を明示的に指定してください。私の場合、これは次のとおりです。

gem 'clearconnect', '0.0.1'

実行してbundle install --no-cache(推論here )、問題を解決する必要があります。

于 2013-03-28T19:16:27.473 に答える
1

「vendor」だけでなく、「vendor/gems/mygem-VERSION」というgemへのフルパスを入力する必要があります。

于 2013-03-28T06:48:43.780 に答える