woshidan's blog

そんなことよりコードにダイブ。

Rails チュートリアルでstylesheet_link_tagの行が止まる

チュートリアルの5章で'bootstrap-sass'のgemを入れてもBootstrapのcssが反映される様子は無いし、さらに進めていったら、custom.css.scssを足したあたりで、以下のようなメッセージがでて止まりました。

 

症状

検証用アドレス

http://0.0.0.0:3000/static_pages/home

止まった行

<%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true %>

 エラーメッセージ

undefined method `environment' for nil:NilClass

 

エラーが出ていた箇所が

in app/assets/stylesheets/custom.css.scss

 

原因

css,javascriptの読み込みを行うSprocketsに関するgemがインストールされていなかったこと。

 

app/assets/stylesheets/application.css.scss内のコメント内で

 *= require_self
 *= require_tree .

 の部分は、自分自身と自身の存在するディレクトリ、ならびサブディレクトリのファイルを読み込みますよ、ということが書いてあるのですが、これを動かしているのがSprocketsというgemなのですが、これが5章のcss追加していくところまで入ってませんでした、という話でした。

 

三回目なのに見逃したのか、と哀しくなったので、三章、四章を検索してみたのですが見つけられず。

 

対処

StackOverflowにあったので、sprocketsを入れればいいんだな、と思っていたのですが、結局以下の三つのgemを入れたら動きました。もしかしたら、最後のだけでもいいかもしれないです。Railsは4.0.2です。

gem 'sprockets', '2.11.0'
gem 'slim', '2.0.0'
gem 'sprockets-rails', '2.0.0'

 

焦った。environmentなんて出てきたから環境変数かと思って最初はconfigの中を見る必要があるかと思ってそわそわしたし、

なんか前回は後ろの方で動いていた記憶があったのに、なかなか動かなかったから焦った。

 

追記

sprocketsが二つ並んでいておかしいな、と思ったら下のほうは
sprockets-railsの誤りでしたので、訂正しました。