Wystąpił błąd podczas próby załadowania „ulepszacza” klejnotu. (Bundler :: GemRequireError)

119

Dlaczego otrzymuję ten błąd?

shibly@mybox:~/blog$ rails server
/home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:80:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'uglifier'. (Bundler::GemRequireError)
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:72:in `each'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:72:in `block in require'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:61:in `each'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler/runtime.rb:61:in `require'
    from /home/shibly/.gem/ruby/2.2.4/gems/bundler-1.11.2/lib/bundler.rb:99:in `require'
    from /home/shibly/blog/config/application.rb:7:in `<top (required)>'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:78:in `require'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:78:in `block in server'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:75:in `tap'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:75:in `server'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
    from /home/shibly/.gem/ruby/2.2.4/gems/railties-4.2.5/lib/rails/commands.rb:17:in `<top (required)>'
    from bin/rails:9:in `require'
    from bin/rails:9:in `<main>
słabo
źródło
Czy rozwiązałeś ten problem? Mam dokładnie ten sam problem. Używam Ruby 2.2.4 z Rails 4.2.5 na Ubuntu.
Tylko uczeń
2
spróbuj sudo apt-get install nodejs
user3754535

Odpowiedzi:

252

Powinieneś uruchomić następujące polecenie, aby zainstalować NodeJS w Ubuntu

sudo apt-get install nodejs

lub uruchom to dla OSX

brew install nodejs

Uglifier jest opakowaniem JS i wymaga uruchomionego środowiska wykonawczego JS lub interpretera JS. Wybrałbym instalację NodeJS.

Marcos Serpa
źródło
4
dlaczego potrzebuje js env?
DragonKnight,
1
Działa :) Dzięki, ale po co nam to nodejs do zainstalowania?
Alankar More
1
Potrzebujemy środowiska wykonawczego JS, @AlankarMore;). Tak więc, NodeJS jest to zwykle mój wybór, głównie dlatego, że jest zbudowany na silniku V8 Chrome ( developers.google.com/v8 ). W Railsach mamy dziś dużo JS. Potrzebujemy środowiska skonfigurowanego do uruchamiania wszystkich tych rzeczy. Obejmuje to opakowania, środowiska wykonawcze / tłumacze ...
Marcos Serpa,
1
Jeśli instalujesz nodejs ze źródła, upewnij się, że plik binarny jest zainstalowany /usr/bin/nodejstam, gdzie execjs spodziewa się go znaleźć.
Rok Strniša
1
@AboozarRajabi Nodejs nie jest niezbędny, ale środowisko wykonawcze JS lub interpreter już tak. I to jest rola NodeJS tutaj, w naszym przypadku. Jeśli nie NodeJS, będziesz potrzebować innego środowiska wykonawczego / interpretera JS.
Marcos Serpa
36

W domyślnym Rails Gemfile, wiersz dla gem 'therubyracer' jest zakomentowany. Jeśli odkomentujesz go, zdobędziesz ten klejnot i powinien działać.

Z „ Pierwsze kroki z Railsami ”:

Kompresja zasobów CoffeeScript i JavaScript wymaga, aby w systemie było dostępne środowisko wykonawcze JavaScript. W przypadku braku środowiska wykonawczego execjspodczas kompilacji zasobów zostanie wyświetlony błąd. Zazwyczaj Mac OS X i Windows są dostarczane z zainstalowanym środowiskiem wykonawczym JavaScript. Railsy dodają therubyracerperełkę do wygenerowanego Gemfilew komentarzu wiersza dla nowych aplikacji i możesz odkomentować, jeśli tego potrzebujesz. therubyrhinojest zalecanym środowiskiem uruchomieniowym dla użytkowników JRuby i jest dodawany domyślnie do Gemfileaplikacji generowanych pod JRuby. Możesz sprawdzić wszystkie obsługiwane środowiska wykonawcze w ExecJS .

user3780968
źródło
2
Dzięki! Było to łatwiejsze i wydaje się czystsze niż poleganie na NodeJS.
ConnorWGarvey
Chociaż ta odpowiedź działa, wymyka się temu, że powinieneś raczej mieć (do produkcji) odpowiednie środowisko wykonawcze execjs, takie jak node.js
Cyril Duchon-Doris
0

Wystąpił błąd podczas tworzenia bazy danych.

Problem polega na tym, że Node.js próbował zainstalować bez sudow skrypcie:

sudo apt-get install nodejs
gleb glazkov
źródło