rspec使用時、ruby1.9.2で LoadErrorが出たのを修正
まず結論:specファイルでのrequireでのエラー。1.9.2からカレントが$LOAD_PATHにはいらなくなったことによる影響。そこをなんとか修正。
vi message_filter.rb
class MessageFIlter end
vi spec/message_filter_spec.rb
require 'spec' require 'message_filter' describe MessageFilter end
以前なら動いていましたが
$ spec spec/message_filter_spec.rb <internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- message_filter (LoadError) 以下略...
なんて怒られる。ruby 1.9.2ではセキュリティ上の都合で$LOAD_PATHに"."ことカレントディレクトリが含まれなくなりました。カレントディクトリからの相対パスでrequireしても動かないということです。
代わりとしてKernel#require_relativeというのがあるのでこれを使うとよさそうです。
vi spec/message_filter_spec.rb
require 'spec' require_relative '../message_filter' describe MessageFilter do end
とすると動きました。
$ spec spec/message_filter_spec.rb Finished in 0.032107 seconds 0 examples, 0 failures
もしくは$LOAD_PATHに直接プロジェクトのパスをぶち込むという方法で
vi spec/message_filter_spec.rb
$LOAD_PATH << File.dirname(File.dirname(__FILE__)) require 'spec' require 'message_filter' describe MessageFilter do end
としても動きました。