最近作的一個項目是把一個原來 Rails 2 的網站升級到 Rails 3.2。 這個 project 裏面用到了Asset Packager 來管理 Javascript 文件。Rails 3.1 開始採用 Assets Pipeline 來管理 Javascript,stylesheet,和 images 等資源。在研究了一下 Asset Packager 之後,發現它作的事情和 Assets Pipeline 接近。升級的策略比較直接,以下: javascript
1. 把 public/javascripts 下的文件拷貝到 app/assests/javascripts下。 java
2. 對應文件 config/asset_packages.yml 裏面的每一個javascript package 名字,在 app/assets/javascripts 下建立一個文件。這個文件的名字格式以下: #{package_name}_package.js 。這個文件裏面列出原來 package 包含的文件。 jquery
例如文件asset_packages.yml 裏面包含以下內容 app
javascripts:
- base:
- jquery/jquery-1.3.2
- jquery/jquery.livequery
- jquery/jquery.validate-1.5.1
- jquery/jquery.blockUI
- ui_and_layout:
- jquery/jquery-ui-1.7.2.custom
- jquery/jquery.layout 網站
如今文件base_package.js 裏面內容以下 ui
//= require jquery/jquery-1.3.2
//= require jquery/jquery.livequery
//= require jquery/jquery.validate-1.5.1
//= require jquery/jquery.blockUI spa
3. 原來代碼裏面用 javascript_include_merged 來引用這些 packages。如今咱們要用Assets Pipeline的方法來引用。我的認爲比較好的辦法是本身定義javascript_include_merged,讓它去調用javascript_include_tag。具體方法以下: 調試
# file app/helpers/application.rbend ip
4. 若是你使用assets precompiling,下面1行代碼須要加入對應的config 文件裏 資源
config.assets.precompile += %w( base_package.js )
以上步驟,不須要修改 View 裏面的代碼。調試也簡單。又是快樂的一天。