Edited at

sprockets-railsでつまずいた

More than 1 year has passed since last update.


背景

Railsを利用していた時のトラブルシュートです。

新しくrailsのプロジェクトを作成した時に、

いきなりrakeのタスクが使用できなくなり、

解決するのに時間がかかったので、メモで記述します。


内容

とある時にいつも通りにrails new して、

何気なくscaffold を実行すると、以下のエラーが発生した。


$ rails g scaffold item
/root/.rbenv/versions/2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- bundler/setup (LoadError)
from /root/.rbenv/versions/2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'

from /usr/share/nginx/hoge/vendor/bundle/ruby/2.2.0/gems/spring-1.6.1/lib/spring/commands.rb:33:in `<module:Spring>'
from /usr/share/nginx/hoge/vendor/bundle/ruby/2.2.0/gems/spring-1.6.1/lib/spring/commands.rb:4:in `<top (required)>'

from /root/.rbenv/versions/2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /root/.rbenv/versions/2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'

from /usr/share/nginx/hoge/vendor/bundle/ruby/2.2.0/gems/spring-1.6.1/lib/spring/application.rb:77:in `preload'
from /usr/share/nginx/hoge/vendor/bundle/ruby/2.2.0/gems/spring-1.6.1/lib/spring/application.rb:143:in `serve'

from /usr/share/nginx/hoge/vendor/bundle/ruby/2.2.0/gems/spring-1.6.1/lib/spring/application.rb:131:in `block in run'
from /usr/share/nginx/hoge/vendor/bundle/ruby/2.2.0/gems/spring-1.6.1/lib/spring/application.rb:125:in `loop'

from /usr/share/nginx/hoge/vendor/bundle/ruby/2.2.0/gems/spring-1.6.1/lib/spring/application.rb:125:in `run'
from /usr/share/nginx/hoge/vendor/bundle/ruby/2.2.0/gems/spring-1.6.1/lib/spring/application/boot.rb:18:in `<top (required)>'

from /root/.rbenv/versions/2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /root/.rbenv/versions/2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'

from -e:1:in `<main>'

結論をいうと、sprockets-railsの3.0.0が原因らしい。

### 確認する。

$ bundle show |fgrep sprockets-rails
* sprockets-rails (3.0.0)

### 削除する。
$ gem uninstall sprockets-rails

You have requested to uninstall the gem:
sprockets-rails-3.0.0

rails-4.2.5 depends on sprockets-rails (>= 0)
sass-rails-5.0.4 depends on sprockets-rails (< 4.0, >= 2.0)
web-console-2.2.1 depends on sprockets-rails (< 4.0, >= 2.0)
If you remove this gem, these dependencies will not be met.
Continue with Uninstall? [yN] y
Successfully uninstalled sprockets-rails-3.0.0

### Gemfileに追加する。
$ echo "gem 'sprockets-rails', '2.3.3'" >> Gemfile

### bundle update をする。
$ bundle update sprockets-rails

### 確認する。
$ bundle show |fgrep sprockets-rails
* sprockets-rails (2.3.3)

### 再度scaffoldする
$ rails g scaffold item

という流れでうまく処理が通りました。