4

私のデプロイメント設定は、Heroku にアセットをプリコンパイルさせることです。( asset_sync経由で) CDN に送信できるようにプリコンパイルしたいのですが、Heroku でそれを行いたいので、リポジトリにコンパイル済みのアセットはありません。Heroku のガイドを使用してセットアップしましたが、うまく機能していました。速度を上げるために、 turbo-sprockets-rails3を追加しました。すべて正常に機能していましたが、停止しました。理由がわかりません。

public/assets(なしで)デプロイするassets:precompileと、HerokuでRakeタスクがタイムアウトします。実際にかかる時間を確認するために、シェル ( heroku run bash)に入りました。

~ $ time bundle exec rake assets:precompile
AssetSync: YAML file found /app/config/asset_sync.yml settings will be merged into the configuration
AssetSync: Syncing.
Using: Directory Search of /app/public/assets
AssetSync: Done.

real    19m29.575s
user    17m43.690s
sys 0m28.480s

20分!しかし、ローカル (2011 iMac) で実行すると、ほんの数分です。

$ env RAILS_ENV=production time bundle exec rake assets:precompile --trace
** Invoke assets:precompile (first_time)
** Execute assets:precompile
~/.rbenv/versions/1.9.3-p327-perf/bin/ruby ~/.rbenv/versions/1.9.3-p327-perf/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets --trace
** Invoke assets:precompile:all (first_time)
** Invoke assets:cache:clean (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
AssetSync: YAML file found ~/Code/Ruby/myproject-rails/config/asset_sync.yml settings will be merged into the configuration
** Execute assets:cache:clean
** Execute assets:precompile:all
AssetSync: Syncing.
Using: Directory Search of ~/Code/Ruby/myproject-rails/public/assets
Uploading: assets/application-3a6de939348195e9610f1321df27837a.js
Uploading: assets/application-3a6de939348195e9610f1321df27837a.js.gz
Uploading: assets/jquery.min-959a5819c76e1508f5a8655c289c0de8.map
Uploading: assets/jquery.min.map
Uploading: assets/rails_admin/rails_admin-76cfbf31a605916a55eee29464ca3e6d.js
Uploading: assets/rails_admin/rails_admin-76cfbf31a605916a55eee29464ca3e6d.js.gz
AssetSync: Done.
      179.92 real        19.29 user         3.98 sys

私は 1 週間以上前に Heroku のサポートを書きました。数日後、彼らはそれを Ruby ビルドバック チームにエスカレートすると言いましたが、まだ何も聞いていません。Stack Overflow の賢い人たちの中に解決策を考えている人はいますか?

4

1 に答える 1

4

解決策は、ローカル マシンのように、Heroku に Ruby 1.9.3 を使用するように指示することでした。どうやら 1.9.3 は、Heroku のデフォルトである 1.9.2 よりもアセットのコンパイルがはるかに高速です。

それを修正するには、Gemfile開始を確認してください。

source "https://rubygems.org"
ruby "1.9.3"
# ...

詳しくは、Ruby バージョンのHeroku ドキュメント を参照してください。

于 2013-01-29T16:11:42.037 に答える