yosemite で ruby が オカシー

別のマシンでテスト実行できるのに、新調したてのマシンではテスト実行できなくてソース追ってた。

$ be rake spec
/Users/koji/.rvm/rubies/ruby-2.2.0/bin/ruby -I/Users/koji/sites/momiji/vendor/bundle/ruby/2.2.0/gems/rspec-core-3.1.7/lib:/Users/koji/sites/momiji/vendor/bundle/ruby/2.2.0/gems/rspec-support-3.1.2/lib /Users/koji/sites/momiji/
vendor/bundle/ruby/2.2.0/gems/rspec-core-3.1.7/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb
/Users/koji/sites/momiji/vendor/bundle/ruby/2.2.0/gems/actionpack-4.1.4/lib/abstract_controller/helpers.rb:154:in `rescue in block in modules_for_helpers': 
Missing helper file helpers//users/koji/sites/momiji/app/helpers/application_helper.rb_helper.rb (AbstractController::Helpers::MissingHelperError)

見たことないエラーです。

スタックトレース追ってみると、ファイルパスへの正規表現で失敗してた。

# actionpack-4.1.4/lib/abstract_controller/helpers.rb
def all_helpers_from_path(path)
  helpers = Array(path).flat_map do |_path|
    extract = /^#{Regexp.quote(_path.to_s)}\/?(.*)_helper.rb$/
    names = Dir["#{_path}/**/*_helper.rb"].map { |file| file.sub(extract, '\1') }
    names.sort!
  end
  helpers.uniq!
  helpers
end

処理対象のファイルパスをよくみると一文字が大文字になってる。どこの時点で誤ったファイルパスになってるのかactivesupportも見てみたけどすでになっていて、rubyの時点で間違ってた。

[9] pry(ActionController::Base)> File.expand_path("./")
=> "/Users/koji/Sites/momiji"
$ pwd
/Users/koji/sites/momiji

2.1.5でも同じだったので(失敗しようがないのだが)rvmのインスコが失敗してるのかも。
ぐえー

1.9.3

irb(main):001:0> File.expand_path(".")
=> "/Users/koji/Sites/momiji"
irb(main):002:0> RUBY_VERSION
=> "1.9.3"

irb(main):001:0>  File.expand_path(".")
=> "/Users/koji/dotfiles/lib"
irb(main):002:0> RUBY_VERSION
=> "1.9.3"

ぐえー

直った(謎)

rm -rf ~/sites

してもっかいmkdir したら sitesが小文字を返すようになった。なんだったんだ。