2012-06-24 17 views
3

我有一個相當複雜的Rails Web應用程序這是近4歲:)。它與許多客戶一起生活,每天都在使用它,所以當我對它做出重大改變時,我必須少一些騎士。增量升級到Rails的資產管道

我已經設法將它遷移到rails 3.2.2並仍然有效,但仍有很多代碼仍然使用Scriptaculous,Prototype的Ajax調用(例如分頁)等等。

我要慢慢所有這些遷移到使用jQuery UJS和CoffeeScript的,但我必須在跨多個「版本」時間零零碎碎做這些改變,最好是一個控制器。

但我看到,打開的資產是一個布爾開關。

你是如何遷移現有的代碼,以資產管道不破壞大量的代碼?我應該採取哪些預防措施?

回答

2

railscasts的這些事件對我幫助很大。

  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 

移動你的資產(的javascrip TS,字體,CSS,圖像等),以應用程序/資產,礦山這樣的:

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

,並在CSS中,URL助手更改爲類似的字體,鏈接,圖像的URL,或者資產網址。你可以在這裏找到更多的信息,https://github.com/rails/sass-rails。也許您會希望使用登臺服務器來檢查資產流水線是否正常工作,至少對於您的應用所服務的靜態資產而言。也要確保有多個JavaScript文件加載。 (當我升級到資產管道之前,這讓我頭痛)。

希望得到這個幫助。

3

如果它不是爲時已晚,這是我們發現有資產管道的伎倆啓用,仍然有公共文件夾中的許多CSS和JS:

爲了保持對靜態文件的「老」標籤助手,我們在它們被資產管道覆蓋之前將它們別名。我們在application.rb中添加此片段中require 'rails/all'以上:

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_」(或其他)的「新」的標籤。現在,我們可以同時擁有靜態資產文件public /和資產管道管理的資產。

現在,我們沒有達到這種方法麻煩(除非它不與圖像工作!),但我們開始......

+0

這爲我工作,但它似乎缺憾。我希望這個功能是內置的。 – quoo