1

Rubyブロックをいつ使用するかを理解しようとしています.configureするには、次rspec-railsのようなことをする必要があることがわかりました:

RSpec::configure do |config|
  config.foo = bar
end

この場合、これをブロックとして実行すると便利なのはなぜですか?

4

3 に答える 3

3

すべての前に . を付けるのは面倒だから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.ます...しかし、ブロックは構成コードを適切にスコープ/区切ります。

于 2013-03-28T23:32:45.390 に答える
2

砂糖だけです。これは(簡略化された)ソースです:

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
于 2013-03-28T20:55:17.453 に答える
1

ブロック内で、スコープを変更します。ブロック内の RSpec に限定されていると思います。また、ブロック内で config.foo = bar と言うことができるのも便利だと思います(20以上の構成があることを想像してください)。

于 2013-03-28T20:23:09.947 に答える