2011-09-18 5 views
18

私はRails開発で新しく、これはHerokuへの私の最初の展開です。 私は(導入後)自分のアプリケーションを実行すると、エラーがあります:Ruby on Railsレイクアセット:プリコンパイルエラー

2011-09-18T21:05:54+00:00 app[web.1]: Completed 500 Internal Server Error in 10ms 
2011-09-18T21:05:54+00:00 app[web.1]: 
2011-09-18T21:05:54+00:00 app[web.1]: ActionView::Template::Error (application.css isn't precompiled): 

私はこれをGoogleで検索し、私は自分の資産をプリコンパイルする必要があることがわかったが、これを実行しようとしたとき、私は他のエラーが見つかりました:

$ bundle exec rake assets:precompile RAILS_ENV=production 
rake aborted! 
No such process - /usr/lib/ruby/gems/1.8/gems/pg-0.11.0/lib/pg_ext.so 

(See full trace by running task with --trace) 

この問題の解決策はありませんでした。この問題に対処する方法を知っている人はいますか?

+1

'--trace'といっしょに実行して、もっと詳しい情報を得てください。ここからは、エラーがpg(postgres)gemから来ているように見えるので、データベース接続がアプリの起動に問題がある可能性があります。 –

+0

私は--traceで実行し、この問題を発見した: $ execをすくい資産をバンドル:プリコンパイルRAILS_ENV =生産を --trace **資産を起動します。プリコンパイル(FIRST_TIMEを) を**資産を実行します。プリコンパイル レーキが中止します! ????????????????????????????????????????????????????????????????????? (/usr/lib/ruby/gems/1.8/gems/jquery-rails-1.0.14/vendor/assets/javascripts/jquery-ui.min.js) タスク:TOP => assets:プリコンパイル - traceを使用してタスクを実行すると完全なトレースを参照してください) – fabiogasparro

+0

** application.css **または** application.css。[scss | sass] **ファイルからコードを貼り付けてください。 – stephenmurdoch

答えて

6

私も問題があります。しかし、あなたはローカルで、

rake assets:precompile RAILS_ENV=production 

を入力して、公開/資産でヒロクにプッシュすることができます。それは解決されました。

私もこの問題に走ったと私は次の操作を行って、それを解決し
35

config/environments/production.rbを開き、以下のオプションがtrueに設定されていることを確認します

# Don't fallback to assets pipeline if a precompiled asset is missed 
config.assets.compile = true 

次に実行します。

rake assets:precompile --trace RAILS_ENV=production 

希望すると便利です。

〜ケビン・

+0

これは私のために同じ問題を修正しました - ありがとうございます! – ellawren

+0

助けになりません。 'config.assets.compile = true'を設定しても私には役に立ちません。私は 'TypeError:Objectはこのプロパティまたはメソッドをサポートしていません.'を取得し、rakeタスクは有用なものを出力しません。 – Green

+0

# 'config.assets.precompile'と' config.assets.version'はconfig/initializers/assets.rbに移動しました – cloudsurfin

3

私は新しいCedar stackを使用することをお勧めします。 Rails 3.1では、配備時の資産と全体のプレイをよりコンパクトにするために、アプリケーションを少しコンパイルする必要があります.Gemfileにいくつかの宝石を追加し、Procfileを作成する必要があります。しかし、それはまだ簡単な方法です。

1

ああ、これは簡単です。 PG宝石があなたのレーキ作業を壊しています。長い経路で修正しようとするか、プリコンパイルを実行するためにgemfileからコメントアウトしてみることができます。

1

PGの宝石の上に投稿されたSimpletonが問題を引き起こしているようです。もっと良い解決策は、あなたのgemfile内のPG gemをプロダクションの中に移動して実行することです。 バンドル生産 を--withoutインストールし、それがサービスに戻って、サーバーに指示しますので、その後、あなたは、config.assets.compile = true使用config.serve_static_assets = true

最初のオプションが間違っているの

0

代わりに問題なくrakeタスクを実行することができますapp/assetsフォルダー。

+0

警告:コンフィグレーションオプション 'config.serve_static_assets'は、' public'フォルダ内の全てを提供するだけで、アセットパイプラインとは無関係であることを明確にするため、 'config.serve_static_files'に名前が変更されました。 'serve_static_assets'エイリアスはRails 5.0で削除されます。それに応じて設定ファイルを移行してください。 –

1

同じエラーメッセージがありました。私の問題は、間違って指定されたフォントのURLでした。

この回答の大部分は、私がそれをどのように理解したかを示しています。私が吐き出すために宝石を変更

** Invoke assets:precompile (first_time) 
** Invoke assets:environment (first_time) 
** Execute assets:environment 
** Invoke environment (first_time) 
** Execute environment 
** Execute assets:precompile 
rake aborted! 
NoMethodError: undefined method `[]' for nil:NilClass 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/sass_processor.rb:283:in `sprockets_context' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/sass_processor.rb:124:in `asset_path' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/sass_processor.rb:142:in `asset_url' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/sass_processor.rb:214:in `font_url' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/script/tree/funcall.rb:143:in `_perform' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/script/tree/node.rb:58:in `perform' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/script/tree/list_literal.rb:63:in `block in _perform' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/script/tree/list_literal.rb:63:in `map' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/script/tree/list_literal.rb:63:in `_perform' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/script/tree/node.rb:58:in `perform' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/perform.rb:397:in `visit_prop' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/base.rb:36:in `visit' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/perform.rb:160:in `block in visit' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/stack.rb:79:in `block in with_base' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/stack.rb:115:in `with_frame' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/stack.rb:79:in `with_base' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/perform.rb:160:in `visit' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/perform.rb:433:in `block (2 levels) in visit_rule' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/perform.rb:433:in `map' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/perform.rb:433:in `block in visit_rule' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/perform.rb:181:in `with_environment' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/perform.rb:431:in `visit_rule' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/base.rb:36:in `visit' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/perform.rb:160:in `block in visit' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/stack.rb:79:in `block in with_base' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/stack.rb:115:in `with_frame' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/stack.rb:79:in `with_base' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/perform.rb:160:in `visit' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/base.rb:52:in `block in visit_children' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/base.rb:52:in `map' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/base.rb:52:in `visit_children' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/perform.rb:169:in `block in visit_children' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/perform.rb:181:in `with_environment' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/perform.rb:168:in `visit_children' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/base.rb:36:in `block in visit' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/perform.rb:188:in `visit_root' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/base.rb:36:in `visit' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/perform.rb:159:in `visit' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/visitors/perform.rb:8:in `visit' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/root_node.rb:36:in `css_tree' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/tree/root_node.rb:20:in `render' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sass-3.4.22/lib/sass/engine.rb:281:in `render' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/sass_compressor.rb:48:in `call' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/sass_compressor.rb:28:in `call' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/processor_utils.rb:75:in `call_processor' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/processor_utils.rb:57:in `block in call_processors' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/processor_utils.rb:56:in `reverse_each' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/processor_utils.rb:56:in `call_processors' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/loader.rb:134:in `load_from_unloaded' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/loader.rb:60:in `block in load' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/loader.rb:317:in `fetch_asset_from_dependency_cache' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/loader.rb:44:in `load' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/cached_environment.rb:20:in `block in initialize' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/cached_environment.rb:47:in `load' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/base.rb:66:in `find_asset' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/base.rb:73:in `find_all_linked_assets' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/manifest.rb:142:in `block in find' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/legacy.rb:114:in `block (2 levels) in logical_paths' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/path_utils.rb:228:in `block in stat_tree' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/path_utils.rb:212:in `block in stat_directory' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/path_utils.rb:209:in `each' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/path_utils.rb:209:in `stat_directory' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/path_utils.rb:227:in `stat_tree' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/legacy.rb:105:in `each' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/legacy.rb:105:in `block in logical_paths' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/legacy.rb:104:in `each' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/legacy.rb:104:in `logical_paths' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/manifest.rb:140:in `find' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/manifest.rb:185:in `compile' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-rails-3.1.1/lib/sprockets/rails/task.rb:68:in `block (3 levels) in define' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/rake/sprocketstask.rb:147:in `with_logger' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-rails-3.1.1/lib/sprockets/rails/task.rb:67:in `block (2 levels) in define' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:248:in `block in execute' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:243:in `each' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:243:in `execute' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:187:in `block in invoke_with_call_chain' 
/Users/smithd98/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:180:in `invoke_with_call_chain' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:173:in `invoke' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:152:in `invoke_task' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:108:in `block (2 levels) in top_level' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:108:in `each' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:108:in `block in top_level' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:117:in `run_with_threads' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:102:in `top_level' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:80:in `block in run' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:178:in `standard_exception_handling' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:77:in `run' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/exe/rake:27:in `<top (required)>' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/bin/rake:23:in `load' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/bin/rake:23:in `<main>' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `eval' 
/Users/smithd98/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `<main>' 

:私は

RAILS_ENV=production SECRET_KEY_BASE=xxx rake assets:precompile --trace 

を実行しているときに、それが失敗していた資産のパスを取得できませんでしたが

は、代わりに私は、このスタックトレースを持っていましたこの

のようなファイル名

subl /Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/sass_processor.rb:124:in 

.btn-rect { 
    font-family: 'OpenSans-Light'; 
    src:font-url('fonts/OpenSans-Light.ttf') format('truetype'); 
} 

と持っている必要があります:私は

RAILS_ENV=production SECRET_KEY_BASE=xxx rake assets:precompile --trace 

を実行したときに

def asset_path(path, options = {}) 
    path = path.value 
    puts path 
    puts '123' 

    path, _, query, fragment = URI.split(path)[5..8] 
    puts '126' 
    path  = sprockets_context.asset_path(path, options) 
    puts '128' 
    query = "?#{query}" if query 
    puts '130' 
    fragment = "##{fragment}" if fragment 
    puts '132' 
    Autoload::Sass::Script::String.new("#{path}#{query}#{fragment}", :string) 
    end 

は、その後、私はその後、私は、問題は、フォントは次のように指定されていただった

** Invoke assets:precompile (first_time) 
** Invoke assets:environment (first_time) 
** Execute assets:environment 
** Invoke environment (first_time) 
** Execute environment 
** Execute assets:precompile 
fonts/OpenSans-Light.ttf 
123 
126 
rake aborted! 
NoMethodError: undefined method `[]' for nil:NilClass 
/Users/smithd98/.rvm/gems/ruby-2.3.1/gems/sprockets-3.7.0/lib/sprockets/sass_processor.rb:283:in `sprockets_context' 
...the rest of the stack trace is the same... 

を発見してしまいましたこのようになりました:

.btn-rect { 
    font-family: 'OpenSans-Light'; 
} 
+1

Davidさん、ありがとうございました。私はあなたのデバッグ方法に従って、問題を見つけました! 'sass_processor.rb:124'にナビゲートすることに問題がある人は、' gem open sprockets'コマンドを使用してファイルにナビゲートすることができます。それを保存するには ':w!sudo tee%>/dev/null'を使います –