web-dev-qa-db-ja.com

rake asset:precompile Rails_ENV = productionが必要に応じて機能しない

コマンドrake assets:precompile Rails_ENV=productionを使用してアセットをプリコンパイルしようとしていますが、常に以下のエラーが表示されます。

** Invoke assets:precompile (first_time)
    ** Execute assets:precompile
    /usr/bin/Ruby /usr/bin/rake assets:precompile:all Rails_ENV=production Rails_GROUPS=assets --trace
    ** Invoke assets:precompile:all (first_time)
    ** Execute assets:precompile:all
    ** Invoke assets:precompile:primary (first_time)
    ** Invoke assets:environment (first_time)
    ** Execute assets:environment
    ** Invoke environment (first_time)
    ** Execute environment
    ** Invoke tmp:cache:clear (first_time)
    ** Execute tmp:cache:clear
    ** Execute assets:precompile:primary
    rake aborted!
    LoadError: cannot load such file -- uglifier
      (in /home/cool_tech/cool_tech/app/assets/javascripts/application.js)
    /usr/lib/Ruby/gems/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in `require'
    /usr/lib/Ruby/gems/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in `block in require'
    /usr/lib/Ruby/gems/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:236:in `load_dependency'
    /usr/lib/Ruby/gems/2.0.0/gems/activesupport-3.2.14/lib/active_support/dependencies.rb:251:in `require'
    /usr/lib/Ruby/gems/2.0.0/gems/actionpack-3.2.14/lib/sprockets/compressors.rb:31:in `registered_js_compressor'
    /usr/lib/Ruby/gems/2.0.0/gems/actionpack-3.2.14/lib/sprockets/bootstrap.rb:18:in `block in run'
    /usr/lib/Ruby/gems/2.0.0/gems/actionpack-3.2.14/lib/sprockets/compressors.rb:80:in `call'
    /usr/lib/Ruby/gems/2.0.0/gems/actionpack-3.2.14/lib/sprockets/compressors.rb:80:in `compressor'
    /usr/lib/Ruby/gems/2.0.0/gems/actionpack-3.2.14/lib/sprockets/compressors.rb:74:in `compress'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/processing.rb:265:in `block in js_compressor='
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/processor.rb:29:in `call'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/processor.rb:29:in `evaluate'
    /usr/lib/Ruby/gems/2.0.0/gems/tilt-1.4.1/lib/tilt/template.rb:103:in `render'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/context.rb:193:in `block in evaluate'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/context.rb:190:in `each'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/context.rb:190:in `evaluate'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/bundled_asset.rb:26:in `initialize'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/base.rb:252:in `new'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/base.rb:252:in `build_asset'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/index.rb:93:in `block in build_asset'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/caching.rb:19:in `cache_asset'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/index.rb:92:in `build_asset'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/base.rb:169:in `find_asset'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/index.rb:60:in `find_asset'
    /usr/lib/Ruby/gems/2.0.0/gems/actionpack-3.2.14/lib/sprockets/static_compiler.rb:19:in `block in compile'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/base.rb:219:in `block in each_logical_path'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/base.rb:206:in `block (2 levels) in each_file'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/base.rb:196:in `each'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/base.rb:196:in `each_entry'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/base.rb:204:in `block in each_file'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/base.rb:203:in `each'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/base.rb:203:in `each_file'
    /usr/lib/Ruby/gems/2.0.0/gems/sprockets-2.2.2/lib/sprockets/base.rb:217:in `each_logical_path'
    /usr/lib/Ruby/gems/2.0.0/gems/actionpack-3.2.14/lib/sprockets/static_compiler.rb:18:in `compile'
    /usr/lib/Ruby/gems/2.0.0/gems/actionpack-3.2.14/lib/sprockets/assets.rake:56:in `internal_precompile'
    /usr/lib/Ruby/gems/2.0.0/gems/actionpack-3.2.14/lib/sprockets/assets.rake:70:in `block (3 levels) in <top (required)>'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:240:in `call'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:240:in `block in execute'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:235:in `each'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:235:in `execute'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:179:in `block in invoke_with_call_chain'
    /usr/lib/Ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:165:in `invoke'
    /usr/lib/Ruby/gems/2.0.0/gems/actionpack-3.2.14/lib/sprockets/assets.rake:60:in `block (3 levels) in <top (required)>'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:240:in `call'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:240:in `block in execute'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:235:in `each'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:235:in `execute'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:179:in `block in invoke_with_call_chain'
    /usr/lib/Ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:165:in `invoke'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/application.rb:150:in `invoke_task'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/application.rb:106:in `block (2 levels) in top_level'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/application.rb:106:in `each'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/application.rb:106:in `block in top_level'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/application.rb:115:in `run_with_threads'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/application.rb:100:in `top_level'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/application.rb:78:in `block in run'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/application.rb:176:in `standard_exception_handling'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/application.rb:75:in `run'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/bin/rake:33:in `<top (required)>'
    /usr/bin/rake:23:in `load'
    /usr/bin/rake:23:in `<main>'
    Tasks: TOP => assets:precompile:primary
    rake aborted!
    Command failed with status (1): [/usr/bin/Ruby /usr/bin/rake assets:precomp...]
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/file_utils.rb:54:in `block in create_Shell_runner'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/file_utils.rb:45:in `call'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/file_utils.rb:45:in `sh'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/file_utils_ext.rb:37:in `sh'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/file_utils.rb:82:in `Ruby'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/file_utils_ext.rb:37:in `Ruby'
    /usr/lib/Ruby/gems/2.0.0/gems/actionpack-3.2.14/lib/sprockets/assets.rake:12:in `Ruby_rake_task'
    /usr/lib/Ruby/gems/2.0.0/gems/actionpack-3.2.14/lib/sprockets/assets.rake:21:in `invoke_or_reboot_rake_task'
    /usr/lib/Ruby/gems/2.0.0/gems/actionpack-3.2.14/lib/sprockets/assets.rake:29:in `block (2 levels) in <top (required)>'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:240:in `call'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:240:in `block in execute'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:235:in `each'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:235:in `execute'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:179:in `block in invoke_with_call_chain'
    /usr/lib/Ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/task.rb:165:in `invoke'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/application.rb:150:in `invoke_task'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/application.rb:106:in `block (2 levels) in top_level'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/application.rb:106:in `each'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/application.rb:106:in `block in top_level'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/application.rb:115:in `run_with_threads'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/application.rb:100:in `top_level'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/application.rb:78:in `block in run'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/application.rb:176:in `standard_exception_handling'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/lib/rake/application.rb:75:in `run'
    /usr/lib/Ruby/gems/2.0.0/gems/rake-10.2.2/bin/rake:33:in `<top (required)>'
    /usr/bin/rake:23:in `load'
    /usr/bin/rake:23:in `<main>'
    Tasks: TOP => assets:precompile

誰が何が間違っているのか考えていますか?ありがとう。

33
Green

交換

rake assets:precompile Rails_ENV=production

rake assets:precompileRails_ENV=production bundle exec rake assets:precompileは正確なrakeタスクです)

プリコンパイルはプロダクションモードでのみ行われるため、環境を明示的に指定する必要はありません。

更新:

Gemfileに次の行を追加してみてください。

group :assets do
  gem 'therubyracer'
  gem 'sass-Rails', "  ~> 3.1.0"
  gem 'coffee-Rails', "~> 3.1.0"
  gem 'uglifier'
end

次にbundle installを実行します。

それがうまくいくことを願っています:)

52

このgemをgemfileに追加しましたか?

# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'

そのgemをアセットグループから移動してからもう一度bundleコマンドを実行してください。

6
Rajdeep Singh

問題を説明するためのエラーは次のとおりです。

LoadError: cannot load such file -- uglifier
      (in /home/cool_tech/cool_tech/app/assets/javascripts/application.js)

これは、application.jsのどこかで、アプリがuglifier(おそらくファイルの上部のmanifest領域)を参照していることを意味します。問題を修正するには、uglifierへの参照を削除するか、uglifierファイルがアプリに存在することを確認する必要があります。


修正

GemFileにgemを追加できなかった場合は、application.jsマニフェスト内のuglifierへの参照を削除することで簡単に修正できます。これはもちろん一時的なものですが、少なくともアセットをプリコンパイルすることはできます

3
Richard Peck

今日この問題がありました。私はそれが私の要求について明示的であることを修正しました

gem 'uglifier', '>= 1.0.3', require: 'uglifier'

私はまだ資産グループにいました。

0
Andrew WC Brown

bundle updateなしでプリコンパイルすると、バックアッププロジェクトがうまく機能することがわかりました。更新されたgemで何かがおかしいかもしれませんが、どのgemにエラーがあるのか​​わかりません。

0
Green