2013-02-20 19 views
19

多くのユーザーのように、生産的なボックスにアセットをコンパイルするときのような問題があります。唯一の違いは、問題を解決するためにトレースからヒントを得ることができないということです。アセットをプリコンパイルするときにcommandがstatus()で失敗しました

rake assets:precompile RAILS_ENV=production --trace 
** Invoke assets:precompile (first_time) 
** Execute assets:precompile 
/usr/local/rbenv/versions/1.9.3-p362/bin/ruby /usr/local/rbenv/versions/1.9.3-p362/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! 
Command failed with status(): [/usr/local/rbenv/versions/1.9.3-p362/bin/r...] 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/file_utils.rb:53:in `block in create_shell_runner' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/file_utils.rb:45:in `call' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/file_utils.rb:45:in `sh' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/file_utils_ext.rb:39:in `sh' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/file_utils.rb:80:in `ruby' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/file_utils_ext.rb:39:in `ruby' 
/home/app/application/ruby/1.9.1/gems/actionpack-3.2.12/lib/sprockets/assets.rake:12:in `ruby_rake_task' 
/home/app/application/ruby/1.9.1/gems/actionpack-3.2.12/lib/sprockets/assets.rake:21:in `invoke_or_reboot_rake_task' 
/home/app/application/ruby/1.9.1/gems/actionpack-3.2.12/lib/sprockets/assets.rake:29:in `block (2 levels) in <top (required)>' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/task.rb:205:in `call' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/task.rb:200:in `each' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/task.rb:200:in `execute' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/task.rb:144:in `invoke' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 levels) in top_level' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/application.rb:94:in `each' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/application.rb:94:in `block in top_level' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/application.rb:88:in `top_level' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/application.rb:66:in `block in run' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/application.rb:63:in `run' 
/usr/local/rbenv/versions/1.9.3-p362/bin/rake:32:in `<main>' 
Tasks: TOP => assets:precompile 

効果的にステータスコードはありません。失敗するだけです。レーキを直接かbundle exec経由で呼び出すと、それは何の違いもありません。グローバルrbenvのインストールと環境 Debianのスクイズボックスについて

(あなたのような/usr/local/rbenvトレースから見ることができます)。 Ruby 1.9.3 2012-12-25 patchlevel 362.

これに関するヒントやアイデアはありますか?

答えて

18

私は多かれ少なかれ解決することができるので、私は自分自身でこれに答えるつもりです。誰かが追加をしている場合は、躊躇しないで自分の答えを書くか、この答え/質問にコメントしてください。私がこれまでに出て見つけた何

あなただけの主要資産(assets:precompile:primary)をコンパイルするか、明示的にソースに関するヒントで終わるかもしれないassets:precompile:allを呼び出すことなどによりassets:precompileで遊んでいる場合あなたの問題。私の場合、public/tmp/の両方でErrno::EACCESに遭遇しました。何とか表示されなかったので、そこにファイルやフォルダを作成/削除する権限がユーザに与えられていることを確認してください。

私の場合、レールアプリをシャットダウンしてダウンしている間にプリコンパイルされているため、私の場合は時々動作しました。プリコンパイルでは多くのメモリが割り当てられるので、試行錯誤して、を実行しようとすると、最終的にはKilledというメッセージが得られます。あまりにも多くのメモリを使用しているため、タスクは単に殺されました。

別の問題は、スプロケットがプリコンパイル時にアセットパイプラインに挿入するためにbootstrapを見つけられなかったことです。移動gem 'bootstrap'group :assetsの外にこれを解決しました。これは、私がコマンドを使って遊んだときに私が暗示していたものでもありました。

この問題を解決するには、資産をローカルでコンパイルするのが最も良い方法です。端末にrake assets:precompile RAILS_ENV=developmentを投げ込み、public/assetsを展開してください。 開発環境のフォルダを展開した後にそのフォルダを削除することを忘れないでください。または、app/assets/*の変更が開発に反映されない理由についてデバッグが終了します。少なくともそれは私のために働く(tm)。

また、スワップパーティションを拡張することもできます。しかし、スワップを使う必要のあるVPSのコンパイルはしばらく時間がかかるかもしれないので、私は地元の方法に固執します。

+0

あなたは – rainkinz

6

私も同じ問題がありました。 私の場合はスワップを追加して修正しました(私のサーバーでは512RAMの場合は1GB)

+3

は同じ問題を持っていたOSによって殺されているプロセスについての右側にいました。デジタル海洋ホスティングでは、512RAM上のUbuntu 64ビットはバンドラにとって非常に小さいです。それを32ビットまたは1024RAMに変更しても問題ありません。 –

関連する問題