私は、バンドラーがどのように動作するかを理解しようとするために、いろいろなことをやっています。私はちょうど3私の作業ディレクトリ内のファイルがあります。必要なgemがGemfileにあるとしたら、 `bundle exec ruby [file]`でNameErrorを取得するのはなぜですか?
Gemfile Gemfile.lock test.rb
をすべてGemfileがありgem "slop"
あるとtest.rb
は次のようになります。
puts Slop.parse
私はbundle exec test.rb
を実行すると、私はNameError
によるものを得ますrequire
の声明を持たない:
[[email protected]xx my_app]$ bundle exec ruby test.rb
test.rb:1:in `<main>': uninitialized constant Slop (NameError)
しかし、私はbundle console
を実行した場合、バンドラーが正しく宝石をロードし、私は明示的にrequire "slop"
を入力せずにコンソールからSlop.parse
を実行することができます。
[[email protected] my_app]$ bundle console
irb(main):001:0> Slop.parse
=> #<Slop::Result:0x00000001339838...
だから私は何をしないのですか?私はrequire: false
が私のGemfile
にないので、bundle exec ruby test.rb
を実行したときにSlop
をロードして、ファイルにrequire "slop"
行を入れる必要はないはずです。
ないアイデアを「スロップ」を必要としない追加する必要があります – sixty4bit