Railsを入れたら、Compass と Sassでエラーが出る様になった。

2015年5月5日

※ 追記有り

仕事でもプライベートでも、フロントエンドを開発をする時に、
compassとscssを使って、スタイルを記述している。

scssを書いて、compass watchでコンパイルする。
Scssを使うと、生のCSSを書くよりも、後でメンテナンスもしやすいし、綺麗に書けてすごく良い。

だが、ある日Railsを入れたら、突然compassコマンドが使えなくなった

Ruby on Railsを入れたら、Compass と Sass でエラーが出る様になる

ある日、自分のMacにRuby on Railsを入れようと思ってインストール。
インストールする過程で、なんか色々エラーが出てなかなかうまくいかず、色々試行錯誤したのち、できた。

果たしてどんな事をしたのかは今や定かではないが、そんなドラスティックな事はしていないはず。

結局
rails server コマンドを打ち、
http://localhost:3000/
でブラウザからアクセスすると

ちゃんとrailsのデフォルト画面が出る。というところまで行った。
よしこれでRailsガリガリやっていくぞー!と思ったのも束の間

Compassでコンパイルしようとすると、なぜかこんなエラーを吐く様になった

/Library/Ruby/Site/2.0.0/rubygems/dependency.rb:315:in `to_specs': Could not find ‘compass’ (>= 0) among 0 total gem(s) (Gem::LoadError)
Checked in 'GEM_PATH=/Users/hiroki_tkg/.gem/ruby/2.0.0:/Library/Ruby/Gems/2.0.0:/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0', execute `gem env` for more information
	from /Library/Ruby/Site/2.0.0/rubygems/dependency.rb:324:in `to_spec'
	from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_gem.rb:58:in 'gem'
	from /usr/bin/rails:22:in `<main>'

compass -v も scss -v もこのエラーメッセージ。
上記、compassの部分が、かわるだけ。

これじゃcssを変更できないやないかーい!

色々と試行錯誤

ググって複数の解決策を模索した結果、gemをupdateするのが良いらしい。
でもgem updateをしても

 % sudo gem install rubygems-update
Password:
Successfully installed rubygems-update-2.4.3
Parsing documentation for rubygems-update-2.4.3
Done installing documentation for rubygems-update after 0 seconds
1 gem installed

こうゆうメッセージが出るのだが、依然としてcompassは使えない。。。

stackover flowで色々みたり、色々なワードでググったけど、結局分からず。。

エラーメッセージの言う様に
dependency.rbを開いてみるも、良く分からず。。

原因はPermission?

途方に暮れていると、どこで見たともなく、本当になんとなくsudo をつけてcompassコマンドを打ったら、動いた!
エラーメッセージにはPermissionなんて一ミリも書かれていないけど、なんか動いた!

と思ったのも束の間

今度はgit コマンドでエラーが出ている事が判明

www [master●] % git add .
error: open(".sass-cache/f3f463382ec668ffae001db22c98ed79b0cf6b39/style.scssc"): Permission denied
error: unable to index file .sass-cache/f3f463382ec668ffae001db22c98ed79b0cf6b39/style.scssc
fatal: updating files failed

git add できない。。
これじゃ開発自体できないやないかーい!

でも、sassファイルを編集したときのみ出るエラーで、どうやらsass-cacheを操作しようとすると出るくさい。

まぁ sudo つければ良いんですけどね。
でも毎回つけるのは、だるいよね。。

今度はrails serverでエラーが出る様になった

おまけに rails serverでサーバーを立ち上げようとしたら、こんな警告が。。

sudo rails server
Warning: Running `gem pristine --all` to regenerate your installed gemspecs (and deleting then reinstalling your bundle if you use bundle --path) will improve the startup performance of Spring.

どゆことや。。
Railsを苦労して入れて、使える様になったのに、また色々やるうちに、Railsが使えなくなっていたらしい。。w

でも、このエラーメッセージどおり
gem pristine –allをするとwarningは出なくなった。

Permission、PATH、再インストールするも改善せず

しかし、sass関連のファイルをaddしたりdiffで見たりする場合は、sudoをつけなければ、怒られる。
sassファイルを編集した後、git diffとかをすると以下のエラーが出る

error: open(".sass-cache/f3f463382ec668ffae001db22c98ed79b0cf6b39/style.scssc"): Permission denied
fatal: cannot hash .sass-cache/f3f463382ec668ffae001db22c98ed79b0cf6b39/style.scssc

dependency.rbとかそのへんのPermissionが変わっちゃったのかなぁ。。
と思って、

dependency.rb、
/usr/bin/sass
/usr/bin/sass-convert

のPermissionをchmod 777 で変更したけど、依然変化はなし。

エラーメッセージをもう一回よく見てみると、GEMのパスが通ってないっぽい。

/Library/Ruby/Site/2.0.0/rubygems/dependency.rb:315:in `to_specs': Could not find ‘compass’ (>= 0) among 0 total gem(s) (Gem::LoadError)
Checked in 'GEM_PATH=/Users/hiroki_tkg/.gem/ruby/2.0.0:/Library/Ruby/Gems/2.0.0:/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0', execute `gem env` for more information
	from /Library/Ruby/Site/2.0.0/rubygems/dependency.rb:324:in `to_spec'
	from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_gem.rb:58:in `gem'
	from /usr/bin/rails:22:in `<main>'

http://qiita.com/hyshhryk/items/7e728ad57d963454b142

上記リンクを参考に、PATHを通そうともがくも効果無し

どうしたものか。。

そして、最後の手段
Sassとcompassをアンインストールして、再インストールしてもダメでした。。

もう打つ手無し。

現状の問題と解決策

色々と過程を書きましたが、結果こんな感じです。

現状の問題

・Compassコマンドをうつとエラーが出てしまう
・Sass関連ファイルを編集後、gitで操作しようとするとエラーになる

現状の解決策

・普段からrootでログインしておく
・毎回sudoをつける

現状こんな面倒くさい解決策を取っております。。笑
どうにか直したいんだけど、ここまでで止まってしまってはや2週間。不便な毎日を過ごしています。

もし解決策や、こうしたら良いんじゃないの?っていうアドバイスがありましたら、コメント欄にてご教授いただけたら幸いです。

【追記】
Railsを実行しようとすると出るエラーメッセージ

~ % rails -v
/Library/Ruby/Site/2.0.0/rubygems/dependency.rb:315:in `to_specs’: Could not find ‘railties’ (>= 0) among 21 total gem(s) (Gem::LoadError)
Checked in ‘GEM_PATH=/Users/hiroki_tkg/.rvm/gems/ruby-1.9.3-p551:/Users/hiroki_tkg/.rvm/gems/ruby-1.9.3-p551@global’, execute `gem env` for more information
from /Library/Ruby/Site/2.0.0/rubygems/dependency.rb:324:in `to_spec’
from /Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_gem.rb:58:in `gem’
from /usr/bin/rails:22:in

エラーメッセージを読むと、railtiesってのが見つからないと書いてあるので、gemでrailtiesをインストール

gem install railties
Fetching: thor-0.19.1.gem (100%)
Successfully installed thor-0.19.1
Fetching: thread_safe-0.3.5.gem (100%)
Successfully installed thread_safe-0.3.5
Fetching: minitest-5.6.1.gem (100%)
Successfully installed minitest-5.6.1
Fetching: tzinfo-1.2.2.gem (100%)
Successfully installed tzinfo-1.2.2
Fetching: json-1.8.2.gem (100%)
Building native extensions. This could take a while…
Successfully installed json-1.8.2
Fetching: i18n-0.7.0.gem (100%)
Successfully installed i18n-0.7.0
Fetching: activesupport-4.2.1.gem (100%)
Successfully installed activesupport-4.2.1
Fetching: rails-deprecated_sanitizer-1.0.3.gem (100%)
Successfully installed rails-deprecated_sanitizer-1.0.3
Fetching: mini_portile-0.6.2.gem (100%)
Successfully installed mini_portile-0.6.2
Fetching: nokogiri-1.6.6.2.gem (100%)
Building native extensions. This could take a while…
Successfully installed nokogiri-1.6.6.2
Fetching: rails-dom-testing-1.0.6.gem (100%)
Successfully installed rails-dom-testing-1.0.6
Fetching: loofah-2.0.1.gem (100%)
Successfully installed loofah-2.0.1
Fetching: rails-html-sanitizer-1.0.2.gem (100%)
Successfully installed rails-html-sanitizer-1.0.2
Fetching: erubis-2.7.0.gem (100%)
Successfully installed erubis-2.7.0
Fetching: builder-3.2.2.gem (100%)
Successfully installed builder-3.2.2
Fetching: actionview-4.2.1.gem (100%)
Successfully installed actionview-4.2.1
Fetching: rack-1.6.0.gem (100%)
Successfully installed rack-1.6.0
Fetching: rack-test-0.6.3.gem (100%)
Successfully installed rack-test-0.6.3
Fetching: actionpack-4.2.1.gem (100%)
Successfully installed actionpack-4.2.1
Fetching: railties-4.2.1.gem (100%)
Successfully installed railties-4.2.1
Installing ri documentation for thor-0.19.1
Installing ri documentation for thread_safe-0.3.5
Installing ri documentation for minitest-5.6.1
unable to convert “\x80” from ASCII-8BIT to UTF-8 for test/zoneinfo/America/Argentina/Buenos_Aires, skipping
unable to convert “\xEC” from ASCII-8BIT to UTF-8 for test/zoneinfo/America/New_York, skipping
unable to convert “\x8E” from ASCII-8BIT to UTF-8 for test/zoneinfo/Australia/Melbourne, skipping
unable to convert “\xFF” from ASCII-8BIT to UTF-8 for test/zoneinfo/EST, skipping
unable to convert “\xF8” from ASCII-8BIT to UTF-8 for test/zoneinfo/Etc/UTC, skipping
unable to convert “\xB5” from ASCII-8BIT to UTF-8 for test/zoneinfo/Europe/Amsterdam, skipping
unable to convert “\x80” from ASCII-8BIT to UTF-8 for test/zoneinfo/Europe/Andorra, skipping
unable to convert “\xF3” from ASCII-8BIT to UTF-8 for test/zoneinfo/Europe/London, skipping
unable to convert “\xB8” from ASCII-8BIT to UTF-8 for test/zoneinfo/Europe/Paris, skipping
unable to convert “\x8E” from ASCII-8BIT to UTF-8 for test/zoneinfo/Europe/Prague, skipping
unable to convert “\xF8” from ASCII-8BIT to UTF-8 for test/zoneinfo/Factory, skipping
unable to convert “\xF3” from ASCII-8BIT to UTF-8 for test/zoneinfo/posix/Europe/London, skipping
unable to convert “\xEC” from ASCII-8BIT to UTF-8 for test/zoneinfo/posixrules, skipping
unable to convert “\xF3” from ASCII-8BIT to UTF-8 for test/zoneinfo/right/Europe/London, skipping
Installing ri documentation for tzinfo-1.2.2
Installing ri documentation for json-1.8.2
Installing ri documentation for i18n-0.7.0
Installing ri documentation for activesupport-4.2.1
Installing ri documentation for rails-deprecated_sanitizer-1.0.3
Installing ri documentation for mini_portile-0.6.2
Installing ri documentation for nokogiri-1.6.6.2
Installing ri documentation for rails-dom-testing-1.0.6
Installing ri documentation for loofah-2.0.1
Installing ri documentation for rails-html-sanitizer-1.0.2
Installing ri documentation for erubis-2.7.0
Installing ri documentation for builder-3.2.2
Installing ri documentation for actionview-4.2.1
unable to convert “\x89” from ASCII-8BIT to UTF-8 for test/multipart/binary, skipping
unable to convert “\xC3” from ASCII-8BIT to UTF-8 for test/multipart/invalid_character, skipping
Installing ri documentation for rack-1.6.0
Installing ri documentation for rack-test-0.6.3
Installing ri documentation for actionpack-4.2.1
Installing ri documentation for railties-4.2.1
20 gems installed

すると、rails -vが実行できた!!原因良く分かってないですが、エラーメッセージは見るもんですね。

scssが使えなかったところも、
gem install compass
で楽々解決。これで上記悩んでいた部分は解消しました。

本当に思うけど、
プログラミングでうまくいかず、はまってしまって、ググりまくっても全然解決できないのに、しばらく日を置いてみるとあっさり解決できちゃうこの現象に名前つけたい。。