Rubyブロックをいつ使用するかを理解しようとしています.configureするには、次rspec-rails
のようなことをする必要があることがわかりました:
RSpec::configure do |config|
config.foo = bar
end
この場合、これをブロックとして実行すると便利なのはなぜですか?
Rubyブロックをいつ使用するかを理解しようとしています.configureするには、次rspec-rails
のようなことをする必要があることがわかりました:
RSpec::configure do |config|
config.foo = bar
end
この場合、これをブロックとして実行すると便利なのはなぜですか?
すべての前に . を付けるのは面倒だからRSpec.configuration
です。あなたはどちらが好きですか?
RSpec.configuration.some_config_option = 5
RSpec.configuration.some_other_config_option = 6
RSpec.configuration.yet_another_config_option = :foo
または:
RSpec.configure do |c|
c.some_config_option = 5
c.some_other_config_option = 6
c.yet_another_config_option = :foo
end
明らかに、その後に構文を記述c = RSpec.configuration
して使用することもできc.
ます...しかし、ブロックは構成コードを適切にスコープ/区切ります。
砂糖だけです。これは(簡略化された)ソースです:
module Rspec
def self.configuration
@configuration ||= RSpec::Core::Configuration.new
end
def self.configure
yield configuration if block_given?
end
# rest omitted
end
https://github.com/rspec/rspec-core/blob/master/lib/rspec/core.rbでソースを参照してください。
これは、あなたも書くことができることを意味します
config = Rspec.configuration
config.foo = bar
ブロック内で、スコープを変更します。ブロック内の RSpec に限定されていると思います。また、ブロック内で config.foo = bar と言うことができるのも便利だと思います(20以上の構成があることを想像してください)。