最近作的一个项目是把一个原来 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 里面的代码。调试也简单。又是快乐的一天。