Hello, I have been trying to get cucumber working with MacRuby, and I have run into a bug. I have tracked the source of it down to a block of code in cucumber's code base[BLOCK 1]. I have condensed this down to a much smaller example[BLOCK 2]. In ruby 1.9.1 the second block results in 'yellow,bold', but in macruby the second block results in nil. My guess is that there is a bug in the merge implementation or the constructor implementation. I am not familiar enough with ruby to know which, so I will take a look at both. I feel this should be added as a test case, but I am not sure where to put that, since I am new to the project. Any tips? -Scott ----- BLOCK 1 ---------- ALIASES = Hash.new do |h,k| if k.to_s =~ /(.*)_param/ h[$1] + ',bold' end end.merge({ 'missing' => 'yellow', 'pending' => 'yellow', 'failed' => 'red', 'passed' => 'green', 'outline' => 'cyan', 'skipped' => 'cyan', 'comment' => 'grey', 'tag' => 'blue' }) if ENV['CUCUMBER_COLORS'] # Example: export CUCUMBER_COLORS="passed=red:failed=yellow" ENV['CUCUMBER_COLORS'].split(':').each do |pair| a = pair.split('=') ALIASES[a[0]] = a[1] end end ALIASES.each do |method, color| unless method =~ /.*_param/ code = <<-EOF def #{method}(string=nil, &proc) #{ALIASES[method].split(",").join("(") + "(string, &proc" + ")" * ALIASES[method].split(",").length} end # This resets the colour to the non-param colour def #{method}_param(string=nil, &proc) #{ALIASES[method+'_param'].split(",").join("(") + "(string, &proc" + ")" * ALIASES[method+'_param'].split(",").length} + #{ALIASES[method].split(",").join(' + ')} end EOF eval(code) end end -------------- END BLOCK 1 -------------- ------- BLOCK 2 ------------------ ALIASES = Hash.new do |h,k| if k.to_s =~ /(.*)_param/ h[$1] + ',bold' end end.merge({ 'missing' => 'yellow' }) puts ALIASES['missing_param'] --------- END BLOCK 2 ---------