23

一般的なプロジェクトでバンドラーを使用し、具体的には Rails を使用する場合、Gemfile で定義された gem にのみアクセスできます。これは理にかなっていますが、制限される可能性があります。ほとんどの場合、チームの他のメンバーが使用していない特定の RSpec フォーマッターを使用したい場合に、制限があることがわかります。Gemfile にない限り、アクセスできません。

それを回避する方法はありますか、それともGemfileに追加する必要がありますか?

更新: 私の問題は Bundler ではなく Spork でした。Spork なしで RSpec を実行した場合、必要なフォーマッターを使用しても問題はありませんでした。

更新 #2: Bundler の使用が依然として問題の原因であるようです。Spork を使用する場合と使用しない場合の違いは、Spork なしで RSpec を実行すると、プロジェクトをロードして Bundler の「サンドボックス」に入る前にフォーマッタをロードすることです。

バンドラーを使用:

$ bundle exec irb
>> require 'fivemat'
LoadError: cannot load such file -- fivemat

from (irb):1:in `require'
from (irb):1
from /Users/arikfr/.rvm/rubies/ruby-1.9.3-p194/bin/irb:16:in `<main>'

バンドラーなし:

$ irb
>> require 'fivemat'
=> true
4

6 に答える 6

18

ChiliProject では、ロード時Gemfile.localにメインに含まれる をユーザーが作成できるようにしていGemfileます。これにより、ユーザーは、Gemfile更新を容易にするために変更することなく、追加の gem を指定できます。

そのために、Gemfile の下部に次のコードを含めました。

gemfile_local = File.expand_path('Gemfile.local', __dir__)
if File.readable?(gemfile_local)
  puts "Loading #{gemfile_local}..." if $DEBUG
  instance_eval(File.read(gemfile_local))
end

自体は、Gemfile.local経由でリポジトリから除外されます.gitignore

于 2012-09-02T15:56:49.593 に答える
0

それでもこれを行うことにした場合(恐ろしい考え):

Ruby コードを Gemfile に追加して、~/.gemfile (またはそのようなファイル) が存在する場合はそれをロードできます。

何かのようなもの:

eval(IO.read('~/.gemfile'), binding) if FileTest.exists?("~/.gemfile")
于 2012-09-02T15:34:30.670 に答える