けんごのお屋敷

2013-09-06

database_cleaner v1.1.0 以上を SQLite で使うと落ちる

とある Rails の開発で database_cleaner という gem を使っていました。テストを走らせた後に DB を綺麗サッパリにしてくる便利 gem です。これの最新版を SQLite で使っていたのですが、どうもこんなエラーが出て落ちてしまいます。

`db_version': undefined local variable or method `postgresql_version' for #<ActiveRecord::ConnectionAdapters::SQLite3Adapter:0x007fa2cea3af48> (NameError)

おっと DB は SQLite を使ってるのに、なぜか postgresql_version というメソッドを呼びだそうとしてるようです。はて、なんでだ…

結論から言うと database_cleaner のバージョン 1.1.0 からあるバグのようです。ずっとソースを追いかけていって、バグの箇所は特定できたので修正しようと思ったら既に pull-request が出ていました。

たぶんそのうち取り込まれると思うので、そうすれば SQLite でも使うことが出来るようになると思います。

取り急ぎ SQLite で最新版の databse_cleaner を使いたければ、コメントにもあるように Gemfile に

gem 'database_cleaner', "~> 1.1.1", :git => 'https://github.com/tommeier/database_cleaner', ref: 'b0c666e'

とすればいけるようですね。

  • このエントリーをはてなブックマークに追加