この場合の利点は、Capybara::Poltergeist
それらのモジュールが必要になる前にモジュールが存在することです。これらのモジュールはすべてモジュールを拡張するためCapybara::Poltergeist
、これは、モジュールが実際に使用可能になる前にそれらがロードされないようにする方法にすぎません。モジュール定義の後に require ステートメントを配置しても、同じ効果があります。
次の点を考慮してください。
# foobar.rb
require './bar_module'
module Foo
module Bar
end
end
# bar_module.rb
module Foo::Bar
def baz
"hi!"
end
end
ネストされていない構文は、このモジュールが呼び出されるまでに既に存在しているFoo::Bar
と想定されるため、このセットアップは失敗します。Foo
最初のファイルを次のように変更します。
module Foo
module Bar
require './bar_module'
end
end
require が機能するのは、それがその処理Foo::Bar
を開始するまでに存在するためbar_module
です。
module Foo; module Bar
この特定の例では、Poltergeist は折りたたまれた構文 ( ) ではなく、ネストされたモジュール構文 ( ) を使用するため、実際的な効果はあまりありませんがmodule Foo::Bar
、基本的に「これらは、このモジュールが存在することを必要とする」と描写することをお勧めします。