Posted at

Rails4 系 + compass-rails を使ってる際に Rails のバージョン上げると sprockets がコケる際の対処法

More than 5 years have passed since last update.

Rails4 + compass-rails を使っていて、Rails を 4.0.2 から 4.0.3 とかにバージョンアップすると以下の様なエラーが発生するようになることがあります。

Screen Shot 2014-04-10 at 13.44.06.png

エラーメッセージも「wrong number of arguments (2 for 1)」といった感じで身も蓋もない感じですね。


正直どうしたらええんじゃいってなります。


原因

落ち着いて、スタックトレースを見ると sprockets の呼び出しでコケてるのがわかります。

Screen Shot 2014-04-10 at 13.48.51.png

というわけで compass-rails の issue とか眺めたら、以下の pull req を見つけました。

Locking sprockets to 2.11 and bumping the version for now.

sprockets 側でメソッドシグネチャが変わったのでこけちゃうんですね。


解決方法

上記の pull-req と同様ですが、sprockets のバージョンを 2.11.0 以上に上がらないようにしてしまえばOKです。


Gemfile で

gem 'sprockets', '2.11.0'

といった感じで固定するとかですね。


compass-rails1.1.7 でもバージョンが固定されてるので、compass-rails をバージョンアップして Gemfile.lock の整合性とるとかでもOKです。

そのうち compass-rails 側も対応してくれると思うので、まずはこの方法でワークアラウンドしておくと幸せになれると思います。