文档章节

从Asset Packager升级到Assets Pipeline

绿海荡舟
 绿海荡舟
发布于 2012/12/14 07:58
字数 357
阅读 91
收藏 0

最近做的一个项目是把一个原来 Rails 2 的网站升级到 Rails 3.2。 这个 project 里面用到了Asset Packager 来管理 Javascript 文件。Rails 3.1 开始采用 Assets Pipeline 来管理 Javascript,stylesheet,和 images 等资源。在研究了一下 Asset Packager 以后,发现它做的事情和 Assets Pipeline 接近。升级的策略比较直接,如下:

1. 把 public/javascripts 下的文件拷贝到 app/assests/javascripts下。

2. 对应文件 config/asset_packages.yml 里面的每个javascript package 名字,在 app/assets/javascripts 下创建一个文件。这个文件的名字格式如下: #{package_name}_package.js 。这个文件里面列出原来 package 包含的文件。

例如文件asset_packages.yml 里面包含如下内容

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 里面内容如下

  //= require jquery/jquery-1.3.2
  //= require jquery/jquery.livequery
  //= require jquery/jquery.validate-1.5.1
  //= require jquery/jquery.blockUI

3. 原来代码里面用 javascript_include_merged 来引用这些 packages。现在我们要用Assets Pipeline的方法来引用。个人认为比较好的办法是自己定义javascript_include_merged,让它去调用javascript_include_tag。具体方法如下:

# file app/helpers/application.rb
module ApplicationHelper
  def javascript_include_merged(*args)
    js_files = args.map {|arg| "#{arg}_package"}
    javascript_include_tag(*js_files)
  end

end

4. 如果你使用assets precompiling,下面1行代码需要加入对应的config 文件里

config.assets.precompile += %w( base_package.js )


以上步骤,不需要修改 View 里面的代码。调试也简单。又是快乐的一天。


© 著作权归作者所有

绿海荡舟

绿海荡舟

粉丝 0
博文 2
码字总数 685
作品 2
美国
高级程序员
私信 提问
Ruby on Rails Asset Tag Helpers

翻译并摘自http://guides.rubyonrails.org/layoutsandrendering.html Asset tag helpers provide methods for generating HTML that link views to feeds, JavaScript, stylesheets, images,......

山里来的鱼
2016/08/08
6
0
grails插件【Asset-Pipeline】

英文网址:http://bertramdev.github.io/asset-pipeline/guide/introduction.htm Asset-Pipeline是在grails应用中用于管理和配置静态资源的一款插件。他的功能包括处理和压缩css和js文件,他...

k_k_anna
2015/02/09
0
0
用 Webpack 和 ES6 转换快速开发 Rails 的富客户端

Fast Rich Client Rails Development With Webpack and the ES6 Transpiler 有更好的方式把 JavaScript 生态引入 Rails。 你有没有: 想知道是否有更好的方式在现有 Ruby on Rails 工程下使用...

开源中国匿名会员
2015/06/09
0
0
rails中的Controller Specific Assets

默认下,pipeline就是加载一个大的application.js和application.css,这里最大的一个问题是,打开一个页面,不管要不要,都得把所有的js和css都加载,我感觉这很不妥,不说文件个头较大,还有...

wmzsonic
2016/04/06
17
0
Rails 3.1.1.rc1 发布

8月31日,Rails 3.1 正式版已发布。今天Rails 3.1.1.rc1 发布了,为了漂亮的3.1.1稳定版,你可以try一下,提交bug。如果没什么问题的话,那么将在GoGaRuCo发布3.1.1最终版,时间下个9月16日。...

小卒过河
2011/09/15
376
3

没有更多内容

加载失败,请刷新页面

加载更多

linux日志切割工具 logrotate

Linux系统默认安装logrotate,默认的配置文件: /etc/logrotate.conf /etc/logrotate.d/ logrotate.conf:为主配置文件 logrotate.d:为配置相关子系统,用于隔离每个应用配置(Nginx、PHP、...

llzzzz
21分钟前
1
0
不得不收藏的大数据Hadoop教程:Hadoop集群搭建

搭建环境安装时间同步Yum install -y ntpdate 网络时间同步命了 服务器地址是阿里云ntpdate ntp1.aliyun.com 手动时间同步方式date -s "20190622 12:32:00" #yyyymmdd hh:mm:ss完全分布式服务...

好程序员IT
24分钟前
1
0
xhprof php性能分析工具

php7 没有官方版 下载地址git clone https://github.com/longxinH/xhprof cd xhprof/extension/ 进入目录指定phpconfig地址进行安装 extension=xhprof.so xhprof.output_dir=/tmp 安装包中x......

曲文
25分钟前
1
0
CentOS7安装GitLab的过程详解

安装Gitlab Step 1.安准基础依赖 $ yum install -y curl policycoreutils-python openssh-server Step 2.安装Postfix 说明:Postfix是一个邮件服务器,GitLab发送邮件需要用到 $ yum ins...

Linux_Anna
25分钟前
2
0
Centos 用docker安装Confluence

1. 下载官方镜像 docker pull atlassian/confluence-server:6.15.7-alpine 2. 创建并运行容器 docker run -m 1024M --memory-swap -1 -host --net=host --name wiki -d -p 8090:8090 -p 800......

熊小熊会写代码哦
38分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部