1

私の生産マシンは多少制限されているため (raspberry pi)、生産マシンにインストールする宝石はできるだけ少なくしたいと考えています。依存関係を減らすために、開発マシンでアセットのプリコンパイルを行い、それらを本番環境にデプロイしたいと考えています。そのため、実稼働マシンでプリコンパイルを行う必要はなく、アセット パイプラインで必要なすべての gem も必要ありません。

そこで、Gemfile 内のすべての gem を assets グループに移動し、config/application.rb を変更しました。

Bundler.require *Rails.groups(:assets => %w(development test))

開発およびテスト環境では、すべて正常に動作します。

しかし、開発マシンでプリコンパイルを行いたい場合は...

RAILS_ENV='production' bundle exec rake assets:precompile

... アセット グループの宝石が欠落しているため、壊れています。

しかし、アセット グループを本番環境に単純に追加することはできません。これは、本番環境にすべてのアセット gem をインストールする必要があるためです (やりたくないことです)。

誰かがそれを解決する方法を知っていますか?

4

1 に答える 1

1

dev m/c でコンパイルしてからrake assets:precompile、public/assets フォルダーをリモート リポジトリにコミットできます。そのため、運用サーバーが開始されると、アセット フォルダーから既にプリコンパイルされたアセットが取得されます。js/css/image を変更したことを確認し、それに応じてアセット ファイルを更新します。

Gemfile に記載されているすべての gem をインストールする必要があります。特定の gem を使用する必要がない場合は、Gemfile から削除してください。元。rubyracer gem は、js のコンパイルに使用される Gemfile に存在します。問題を回避するには、コンパイルされたアセットが存在しない場合のフォールバックを false にする必要があります。これは、js コンパイラがないために実行時にコンパイルできないためです。

于 2014-01-20T08:53:32.467 に答える