3

私は4年近く前のかなり複雑なRailsWebアプリケーションを持っています:)。毎日多くのお客様にご利用いただいておりますので、根本的な変更を加えた場合は、少し気を抜かなくてはなりません。

Rails 3.2.2に移行しても機能しますが、Scriptaculous、PrototypeのAjax呼び出し(ページネーションなど)などを使用するコードはたくさんあります。

これらすべてをjQueryUJSとCoffeescriptを使用するようにゆっくりと移行したいのですが、これらの変更を少しずつ、できれば複数の「リリース」にわたって一度に1つのコントローラーで行う必要があります。

しかし、アセットをオンにすることはブールスイッチであることがわかります。

多くのコードを壊すことなく、既存のコードをアセットパイプラインにどのように移行しましたか?私が取るべき予防措置は何ですか?

4

2 に答える 2

3

手遅れではない場合は、アセットパイプラインを有効にして、パブリックフォルダーに多くのcssとjsを保持していることがわかったトリックを次に示します。

静的ファイルの「古い」タグヘルパーを保持するために、アセットパイプラインによってオーバーライドされる前にエイリアスを作成します。このスニペットrequire 'rails/all'をapplication.rbの上に追加します。

require 'rails'

ActiveSupport.on_load(:action_view) do
  alias_method :without_asset_pipeline_js,  :javascript_include_tag
  alias_method :without_asset_pipeline_css, :stylesheet_link_tag
  alias_method :without_asset_pipeline_img, :path_to_image
end

したがって、私たちの見解では、私たちはまだそれらにアクセスできます。ただし、すべてのタグを変更する必要があります...したがって、初期化子を追加して「古い」タグを復元し、「新しい」タグの前に「asset_」(またはその他)を付けます。これで、パブリック/の静的アセットファイルとアセットパイプラインによって管理されるアセットの両方を使用できるようになりました。

今のところ、このアプローチで問題が発生することはありませんでしたが(画像では機能しないことを除いて!)、私たちは始まりです...

于 2012-09-14T17:41:29.573 に答える
2

これらのrailscastのエピソードは、私を大いに助けてくれました。

  1. http://railscasts.com/episodes/279-understanding-the-asset-pipeline
  2. http://railscasts.com/episodes/282-upgrading-to-rails-3-1
  3. http://railscasts.com/episodes/318-upgrading-to-rails-3-2

サマリー:

Gemfileを設定します

group :assets do
  gem 'sass-rails'
  gem 'coffee-rails'
  gem 'yui-compressor' # i'm using yui for compressor
end

アセット(javascripts、fonts、css、imagesなど)をアプリ/アセットに移動します。次のようにマイニングします。

app/
  assets/
    fonts/
    images/
    javascripts/
    stylesheets/

cssで、urlヘルパーをfont-url、image-url、assets-urlなどに変更します。詳細については、https://github.com/rails/sass-railsをご覧ください。ステージングサーバーを使用して、少なくともアプリが提供する静的アセットについて、アセットのパイプラインが正常に機能しているかどうかを確認することをお勧めします。また、javascriptファイルが複数回ロードされていることを確認します。(アセットパイプラインにアップグレードする前は、頭痛の種でした)。

この助けを願っています。

于 2012-06-24T02:50:29.133 に答える