2012年6月30日土曜日

rails sするとuninitialized constant V8::JSError (NameError)

初めてこんなエラーみたので、対処法を書きます。
uninitialized constant V8::JSError (NameError)ってやつ。

.rvm/gems/ruby-1.9.3-p125/gems/less-2.2.1/lib/less/java_script/v8_context.rb:61:in `rescue in lock': uninitialized constant V8::JSError (NameError)って出た後ばーってでるやつ。

gem は問題なく入っているのに、これが起きると原因不明でしたが、
おそらくgemに原因があると仮定。どうせlibv8まわりだろう。
でlibv8まわりだと、therubyracerが重要な役目。
この順番が違うだけでできなかったりする(らしい)

つらつら書いたけど、
自分のgemfileを丁寧にさらす。
source 'https://rubygems.org'

gem 'rails', '3.2.3'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'mysql2'
gem 'omniauth'
gem 'omniauth-twitter'
gem 'omniauth-facebook'
gem 'kaminari'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'twitter-bootstrap-rails'
  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  gem 'therubyracer', :platform => :ruby
  gem 'libv8'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'
# To use ActiveModel has_secure_password
gem 'bcrypt-ruby', '~> 3.0.0'
念のため、bundle install とbundle updateとgem updateとこのへんは最新版にしておきます。
二重にインストールされてていらないbundleがあれば、bundle clean --forceも適宜いれておくと風味が出ます

でここでエラーが消えればいいが、恐らく状態はかわらない←

そこでgem install therubyracerをどうせ焼け石に水だろと思いつつも水をかける
rails sすると、エラーが消えているwwうはwww焼け石に水で冷めたよwwってなる


以上です。

参考になったようでならなかったサイト
https://github.com/seyhunak/twitter-bootstrap-rails/issues/206