При попытке загрузить gem 'uglifier' произошла ошибка. (Bundler:: GemRequireError)

Почему я получаю эту ошибку?

[email protected]:~/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>

Ответ 1

Вы должны выполнить следующую команду для установки NodeJS в Ubuntu

sudo apt-get install nodejs

или запустите это для OSX

brew install nodejs

Uglifier - это JS-обертка, и для нее требуется JS-среда выполнения или интерпретатор JS. Я бы выбрал установку NodeJS.

Ответ 2

В Gemfile по умолчанию Rails строка для gem 'therubyracer' закомментирована. Если вы раскомментируете его, вы получите этот драгоценный камень, и он должен работать.

От " Начало работы с Rails":

Компиляция сжатия JavaScriptScript и JavaScript требует, чтобы в вашей системе было время выполнения JavaScript, при отсутствии времени выполнения вы увидите ошибку execjs при компиляции активов. Обычно Mac OS X и Windows поставляются с установленной версией JavaScript. Rails добавляет камень therubyracer к сгенерированному Gemfile в комментариях для новых приложений, и вы можете раскомментировать его, если вам это нужно. therubyrhino - рекомендуемое время выполнения для пользователей JRuby и по умолчанию добавляется к Gemfile в приложениях, созданных в JRuby. Вы можете исследовать все поддерживаемые среды выполнения на ExecJS.

Ответ 3

Я думаю, что это требует времени выполнения JS. Попробуйте установить nodejs.

Ответ 4

Произошла ошибка при создании db.

Проблема заключается в том, что Node.js попытался установить без sudo в script:

sudo apt-get install nodejs