たとえば、subject でこのように書けて、
subject { model.errors }
it { is_expected.to be > 0 }
これを DRY にしたくて
def e &blk | |
s = Struct.new(:a,:b,:c).new(1,2,3) | |
s.instance_eval(&blk) | |
end | |
def foo | |
e { a + b + c } | |
end | |
puts foo #=> 6 |
class Foo | |
extend Ruby::Spock | |
spec 'maximum of two numbers', ->(*) { | |
expect { | |
assert { [a, b].max == c } | |
} | |
where [ | |
[ :a, :b, :c ], | |
[ 1, 3, 3 ], #=> . |
## | |
# 知りたかったこと | |
def foo(a: 1, b: 2, c: 3, d: 4) | |
p a, b, c, d | |
end | |
# 1. bar の引数定義を a~d のキーワード引数として foo へすべて委譲したい | |
# 2. bar の引数定義を a~d のキーワード引数とさらに e: 5 を追加したい | |
def bar( ??? ) |
class Injectee | |
def hello | |
puts :hello | |
end | |
end | |
module DI | |
class Injector | |
def initialize(module_object) | |
@module = module_object |
たとえば、subject でこのように書けて、
subject { model.errors }
it { is_expected.to be > 0 }
これを DRY にしたくて
が分離していて、それがコード上の構造で表現されているのがよいと思います。 分離すると、どこかで結合しないといけないのでマッピングが発生します。 そこは互いのインターフェイスをどう解釈するかという表現なので明示的になっているほうがよいと思います。
今後何度も書くことになるだろうから repo へコミットする .gitignore の使い方について書いておく。まあ、ゆるーく使って余分に ignore 書きまくってもいいんですが覚えておくと、はかどります。なお、man に書いているというつっこみを受けた。
以下の方針で運用すると扱いやすくなります。
.gitignore
ファイルへはプロジェクト固有でバージョン管理から外したいものを書く
~/.config/git/ignore
private | |
def fixup(data) | |
return nil if ! data | |
return_data = output.isatty ? data : data.gsub(/\cM/,"") | |
if return_data.respond_to?(:force_encoding) | |
return_data.force_encoding('utf-8') if return_data.respond_to?(:force_encoding) | |
end | |
if running_on_windows? | |
begin |