<class:Railtie>': undefined method `register_preprocessor' for nil:NilClass (NoMethodError) - bundle updateしたら、「sprocket-rails」が 3.0.0になってハマった

##環境
- Ruby 2.2.3
- Rails 4.2.4

## 概要
2015/12/23、bundle updateをしてから、gemでbootstrapを入れようと思って作業していたら、railsコマンドでエラーが出るようになった。


**1. 問題**
railsコマンドを叩くとエラーが発生し、実行できなくなった

```lang:error
$ rails s
.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/less-rails-2.7.0/lib/less/rails/railtie.rb:19:in `block in <class:Railtie>': undefined method `register_preprocessor' for nil:NilClass (NoMethodError)
```

**2. 想定される原因**
エラーが出るようになる前に、今回行った作業は下記2点

- bundle update
- 'therubyracer', 'less-rails', 'twitter-bootstrap-rails'をbundle install

bootstrapに関する上記3点のgemを取り除けば、railsコマンドは正常に動くようだ。



**3. 原因の特定**
2015/12/18にリリースされたばかりの**sprockets-rails 3.0.0**と、今回インストールした**less-rails-2.7.0**との相性が悪いみたい。

**4. 対策と問題解決**
sprocket-railsをダウングレード


では、順を追って、詳細を書いていきます。

## 1. 問題
**railsコマンドを叩くとエラーが発生し、実行できなくなった**

bundle updateを行った後、
bootstrapのインストールをしようとしたらエラーが出た。

```
$ rails generate bootstrap:install less

.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/less-rails-2.7.0/lib/less/rails/railtie.rb:19:in `block in <class:Railtie>': undefined method `register_preprocessor' for nil:NilClass (NoMethodError)
```

less-rails-2.7.0/lib/less/rails/railtie.rbの19行目の、register_preprocessorってメソッドがundefinedだよっていうエラー。


Gemfileに追加した記述は、bootstrapインストールのための下記３つ。

```lang:Gemfile
gem 'therubyracer'
gem 'less-rails'
gem 'twitter-bootstrap-rails'
```

ちなみに他のrailsコマンドでもエラーが出る。

```lang:error
$ rails s

.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/less-rails-2.7.0/lib/less/rails/railtie.rb:19:in `block in <class:Railtie>': undefined method `register_preprocessor' for nil:NilClass (NoMethodError)
```

## 2. 想定される原因
**エラーが出るようになる前に、今回行った作業**

- bundle update
- 'therubyracer','less-rails','twitter-bootstrap-rails'をbundle install

bootstrapに関する上記3点のgemを取り除けば、railsコマンドは正常に動くようだ。

## 3. 原因の特定
いろいろと調べていたところ、どうやら5日前(2015/12/18)あたりにリリースされたばかりの**sprockets-rails 3.0.0**と、今回インストールした**less-rails-2.7.0**との相性が悪いみたい。
[参考][Doesn't work with sprocket-rails v3.0](https://github.com/fnando/i18n-js/issues/378)

sprocket-railsのgithubで、5日前(2015/12/18)に下記のコミットログあり。
[github]https://github.com/rails/sprockets-rails

```lang:commit-log
Release 3.0.0
rafaelfranca committed 5 days ago
```
5日前の2015/12/18に**sprockets-rails 3.0.0**をリリースしたようだ。


## 4. 対策と問題解決
**sprockets-railsをダウングレード**

bundle showをしてみると、**sprockets-rails 3.0.0**になっていた。

```
$ bundle show
(略)
  * sprockets-rails (3.0.0)
```

以前のバージョン2.3.3に下げるため、sprocket-railsのダウングレードを実施。

まずは、3.0.0のアンインストール。

```
$ gem uninstall sprockets-rails

Select gem to uninstall:
 1. sprockets-rails-2.3.3
 2. sprockets-rails-3.0.0
 3. All versions
> 2
```

Gemefileで、sprocket-railsのバージョン指定。

```lang:Gemfile
gem 'sprockets-rails', '2.3.3'
```

当然だが、bundle updateしないと怒られるので

```
$ bundle show
You have requested:
  sprockets-rails = 2.3.3

The bundle currently has sprockets-rails locked at 3.0.0.
Try running `bundle update sprockets-rails`
```

bundle udpateを実行。

```
$ bundle update
```

これで、railsコマンドが使用できるようになりました。
まだ情報が少ないので取り急ぎですが、以上です。


[参考]
[Doesn't work with sprocket-rails v3.0](https://github.com/fnando/i18n-js/issues/378)
[stackoverflow](http://ja.stackoverflow.com/questions/20266/rake-dbmigrate%E5%AE%9F%E8%A1%8C%E6%99%82%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC)