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が小文字を返すようになった。なんだったんだ。