sqlite を pg アダプタに付け替えていた。一通り設定を終えて、開発サーバーを立ててみると、こんなエラーが発生した。Ruby 2.7 + hanami 1.3.3 + pg 1.2.3 で再現するはず。
bigdecimal とは標準ライブラリで、 Ruby 2.7 のリリースとともにバージョン2.0にアップデートされていたようだ。メジャーアップデートとして、BigDecimal.new
という API を廃止したよう。それでこのエラーが出る。
スタックトレースをみると、 sequel という gem からきている様子。hanami の ORM である rom の SQL アダプタである rom-sql が呼び出し元である。
で、 sequel のレポジトリを見に行ってみると、イシューがすでに上がっていた。
いわく sequel はすでに2年前のアップデートでこの問題には対応済みである。つまり、 sequel に依存している ROM および hanami が、依存をアップデートできていないことになる。
困ったな…と思いつつ hanami-model の gemspec を覗いてみる。すると、あれ? bigdecimal 1.4 が明記されている?
要するに、 hanami-model の master ではすでに対応済みであり、リリース待ちであった様子。該当のプルリクエストも確認できた。
とはいえこれはリリース前なので、ひとまず自分自身の Gemfile にも bigdecimal 1.4 への依存を明示的に追記して、なんとか動作は正常化できた。
source 'https://rubygems.org'
gem 'rake'
gem 'hanami', '~> 1.3'
gem 'hanami-model', '~> 1.3'
- gem 'sqlite3'
+ gem 'bigdecimal', '~> 1.4'
+ gem 'pg'
...