- 浏览: 2075741 次
- 性别:
- 来自: NYC
文章分类
- 全部博客 (628)
- Linux (53)
- RubyOnRails (294)
- HTML (8)
- 手册指南 (5)
- Mysql (14)
- PHP (3)
- Rails 汇总 (13)
- 读书 (22)
- plugin 插件介绍与应用 (12)
- Flex (2)
- Ruby技巧 (7)
- Gem包介绍 (1)
- javascript Jquery ext prototype (21)
- IT生活 (6)
- 小工具 (4)
- PHP 部署 drupal (1)
- javascript Jquery sort plugin 插件 (2)
- iphone siri ios (1)
- Ruby On Rails (106)
- 编程概念 (1)
- Unit Test (4)
- Ruby 1.9 (24)
- rake (1)
- Postgresql (6)
- ruby (5)
- respond_to? (1)
- method_missing (1)
- git (8)
- Rspec (1)
- ios (1)
- jquery (1)
- Sinatra (1)
最新评论
-
dadadada2x:
user模型里加上 protected def email ...
流行的权限管理 gem devise的定制 -
Sev7en_jun:
shrekting 写道var pattern = /^(0| ...
强悍的ip格式 正则表达式验证 -
jiasanshou:
好文章!!!
RPM包rpmbuild SPEC文件深度说明 -
寻得乐中乐:
link_to其实就是个a标签,使用css控制,添加一个参数: ...
Rails在link_to中加参数 -
aiafei0001:
完全看不懂,不知所然.能表达清楚一点?
"$ is not defined" 的问题怎么办
首先,这个是一篇粉饰Rails2.3的文章,挑选了十个方面展示Rails2.3的改进.
1. Rails在Development的模式下启动更快.
这是个所有程序员都会感激的事,在development模式下rails使用lazy加载的方式启动.大幅度的提升了启动速度.
使用空的工程文件,可以得到如下的真是数据对比:
当然,真实环境一定会比这个值要慢毕竟这里没有加载任何依赖的类库.
2. 官方对于Rails Engines支持
得益于Merb的slices方法的实现,Rails将官方支持Engines到rails核心.Engines可以有自己的models,views和自己的routes,在之前,Engines一直都是以插件存在,这样就是往往,会遇到rails不版本的不支持的问题.
Rails Engines有一些很棒的功能,请查看Rails Engines网站参考.
3. Routing 的提升
RESTful routes 现在将使用更少的内存,因为类似formatted_*的路由将不再生成,这意味这将节省大概50%的内存
如果,有如下router:
如果你希望读取XML格式版的user资源,那么你将:
在Rails2.3 only和except 选项将不允许在嵌套路由使用,因为之前的功能会导致误解.
4. JSON 功能的提升
在ActiveSupport::JSON中,如下功能得到提升:
to_json 在JSON spec改进了引号使用
加强了对Unicode字符的处理,不会显示乱码
5. Default scopes功能
在Rails2.3之前的版本理,如果,你在执行find的时候,没有附加选项,你将得到一个没有任何排序,或限制的的查询.现在,在Rails2.3上你可以通过Default scopes来使用这样的功能,演示代码如下:
Default的scope会被任何的定制选项覆盖.
Example:
6. 嵌套的事务执行
传递
就可以创建一个嵌套的事务处理
7. Asset Host Objects
自从Rails2.1开始,就可以配置Rails使用asset_host这个Proc,例如,一些浏览器不允许SSl请求从不安全的源加载images文件.如果,想要保证SSL始终从相同的host请求,可以如下:
Rails2.3中会如下处理,以便不会显得混乱:
8. 更容易的更新Rails timestamp字段
如果,你希望试图更新Rails自动生成的timestamp字段,例如:created_at和update_at, 你会发现这是件相当痛苦的事,因为,在Rails2.3之前,这是没有考虑可以允许的.
现在,你可以通过类似,如下的代码,更新这个字段:
那么,相同的如果,你不希望你的用户,修改这个字段,那么记着把这个字段,标记成attr_protected.
9. 嵌套属性和表单
这个改进,可以大幅度的改进复杂表单的描述和处理复杂对象.
首先,嵌套属性可以允许父对象代理授权子对象
很简洁的,这将保存父对象和它关联models,如果,有错误,它们都不会被保存.
使用 FormBuilder实例的 fields_for方法, 表单可以出复杂的对象,示例如下:
10. Rails Metal
You can now write very simple Rack endpoints for highly trafficked routes, like an API. These are slotted in before Rails picks up the route.
A Metal endpoint is any class that conforms to the Rack spec (i.e., it has a call method that takes an environment and returns the an array of status code, headers, and content).
Put your class in app/metal (not generated by default). Return a 404 response code for any requests you don’t want to handle. These will get passed on to Rails.
There’s a generator you can use to create an example Metal end point:
In my sample app, I have what I would consider the “minimally useful” Rails Metal endpoint. It responds to /users.js and returns the list of users as JSON.
If you want a little bit more help, you can use any other Rack-based framework, for example Sinatra.
For more details on how Rails Metal works, check out Jesse Newland’s article about it.
1. Rails在Development的模式下启动更快.
这是个所有程序员都会感激的事,在development模式下rails使用lazy加载的方式启动.大幅度的提升了启动速度.
使用空的工程文件,可以得到如下的真是数据对比:
引用
script/server -d:
Rails 2.2: 1.461s
Rails 2.3: 0.869s
Rails 2.2: 1.461s
Rails 2.3: 0.869s
当然,真实环境一定会比这个值要慢毕竟这里没有加载任何依赖的类库.
2. 官方对于Rails Engines支持
得益于Merb的slices方法的实现,Rails将官方支持Engines到rails核心.Engines可以有自己的models,views和自己的routes,在之前,Engines一直都是以插件存在,这样就是往往,会遇到rails不版本的不支持的问题.
Rails Engines有一些很棒的功能,请查看Rails Engines网站参考.
3. Routing 的提升
RESTful routes 现在将使用更少的内存,因为类似formatted_*的路由将不再生成,这意味这将节省大概50%的内存
如果,有如下router:
map.resources :users
如果你希望读取XML格式版的user资源,那么你将:
user_path(123, :format => 'xml')
在Rails2.3 only和except 选项将不允许在嵌套路由使用,因为之前的功能会导致误解.
map.resources :users, :only => [:index, :new, :create] do |user| # now will generate all the routes for hobbies user.resources :hobbies end
4. JSON 功能的提升
在ActiveSupport::JSON中,如下功能得到提升:
to_json 在JSON spec改进了引号使用
Before: {123 => 'abc'}.to_json => '{123: "abc"}' Now: {123 => 'abc'}.to_json => '{"123": "abc"}'
加强了对Unicode字符的处理,不会显示乱码
Before: ActiveSupport::JSON.decode("{'hello': 'fa\\u00e7ade'}") => {"hello"=>"fa\\u00e7ade"} Now: ActiveSupport::JSON.decode("{'hello': 'fa\u00e7ade'}") => {"hello"=>"façade"}
5. Default scopes功能
在Rails2.3之前的版本理,如果,你在执行find的时候,没有附加选项,你将得到一个没有任何排序,或限制的的查询.现在,在Rails2.3上你可以通过Default scopes来使用这样的功能,演示代码如下:
class User < ActiveRecord::Base default_scope :order => '`users`.name asc' end
Default的scope会被任何的定制选项覆盖.
User.all # 将使用默认scope User.all(:order => 'name desc') # 将会按照name降序输出.
Example:
User.create(:name => 'George') User.create(:name => 'Bob') User.create(:name => 'Alice') puts User.all.map { |u| "#{u.id} - #{u.name}" } 3 - Alice 2 - Bob 1 - George
6. 嵌套的事务执行
传递
:requires_new => true给 ActiveRecord::Base
就可以创建一个嵌套的事务处理
User.transaction do user1 = User.create(:name => "Alice") User.transaction(:requires_new => true) do user2 = User.create(:name => "Bob") end end
7. Asset Host Objects
自从Rails2.1开始,就可以配置Rails使用asset_host这个Proc,例如,一些浏览器不允许SSl请求从不安全的源加载images文件.如果,想要保证SSL始终从相同的host请求,可以如下:
ActionController::Base.asset_host = Proc.new { |source, request| if request.ssl? "#{request.protocol}#{request.host_with_port}" else "#{request.protocol}assets.example.com" end }
Rails2.3中会如下处理,以便不会显得混乱:
class SslAssetHost def call(source, request) if request.ssl? "#{request.protocol}#{request.host_with_port}" else "#{request.protocol}assets.example.com" end end end ActionController::Base.asset_host = SslAssetHost.new
8. 更容易的更新Rails timestamp字段
如果,你希望试图更新Rails自动生成的timestamp字段,例如:created_at和update_at, 你会发现这是件相当痛苦的事,因为,在Rails2.3之前,这是没有考虑可以允许的.
现在,你可以通过类似,如下的代码,更新这个字段:
User.create(:name => "Alice", :created_at => 3.weeks.ago, :updated_at => 2.weeks.ago) => #<User id: 3, name: "Alice", created_at: "2009-03-08 00:06:58", updated_at: "2009-03-15 00:06:58">
那么,相同的如果,你不希望你的用户,修改这个字段,那么记着把这个字段,标记成attr_protected.
9. 嵌套属性和表单
这个改进,可以大幅度的改进复杂表单的描述和处理复杂对象.
首先,嵌套属性可以允许父对象代理授权子对象
class User < ActiveRecord::Base has_many :hobbies, :dependent => :destroy accepts_nested_attributes_for :hobbies end User.create(:name => 'Stan', :hobbies_attributes => [{:name => 'Water skiing'} {:name => 'Hiking'}])
很简洁的,这将保存父对象和它关联models,如果,有错误,它们都不会被保存.
使用 FormBuilder实例的 fields_for方法, 表单可以出复杂的对象,示例如下:
<% form_for(@user) do |f| %> <div> <%= f.label :name, "User name:" %> <%= f.text_field :name %> </div> <div> <h2>Hobbies</h2> <% f.fields_for(:hobbies) do |hf| %> <div> <%= hf.label :name, "Hobby name:" %> <%= hf.text_field :name %> </div> <% end %> </div> <%= f.submit 'Create' %> <% end %>
class UsersController < ApplicationController def new # In this contrived example, I create 3 dummy objects so I'll get # 3 blank form fields. @user = User.new @user.hobbies.build @user.hobbies.build @user.hobbies.build end end
10. Rails Metal
You can now write very simple Rack endpoints for highly trafficked routes, like an API. These are slotted in before Rails picks up the route.
A Metal endpoint is any class that conforms to the Rack spec (i.e., it has a call method that takes an environment and returns the an array of status code, headers, and content).
Put your class in app/metal (not generated by default). Return a 404 response code for any requests you don’t want to handle. These will get passed on to Rails.
There’s a generator you can use to create an example Metal end point:
script/generate metal classname
In my sample app, I have what I would consider the “minimally useful” Rails Metal endpoint. It responds to /users.js and returns the list of users as JSON.
class UsersApi def self.call(env) # if this path was /users.js, reply with the list of users if env['PATH_INFO'] =~ /^\/users.js/ [200, {'Content-Type' => 'application/json'}, User.all.to_json] else # otherwise, bail out with a 404 and let Rails handle the request [404, {'Content-Type' => 'text/html'}, 'not found'] end end end
If you want a little bit more help, you can use any other Rack-based framework, for example Sinatra.
For more details on how Rails Metal works, check out Jesse Newland’s article about it.
发表评论
-
eloquent ruby 读书笔记
2012-02-22 07:24 1464节省时间就草记,只记录新鲜,容易忘的 1. case 的判 ... -
Rails 3 in action 读书笔记
2012-02-11 23:54 1365那天看到IE有战友贴了这个书,就想找个时间读读,有收获随笔记下 ... -
The Rails3 Way, Second Edition
2011-04-25 10:23 1692顺便链接一个agile web development wi ... -
the rspec book 下载
2010-09-20 18:17 4337这是写rspec 和 cucumber 一直翻的书,当前最 ... -
电子书推荐 Textmate使用的书
2010-09-07 10:00 1568引用TextMate is a powerful too ... -
ruby电子书资源
2010-08-14 11:49 1757引用 Though we don't like to adm ... -
关于ruby 重构的电子书 资料两本
2010-08-09 20:10 1810Refactoring Ruby Edition 电子书 ... -
pro git 中文版下载
2010-07-06 10:17 11914感觉所有git的问题可以 ... -
peeping into memcached
2009-04-21 23:52 0http://blog.evanweaver.com/arti ... -
Agile Web Development with Rails 3rd 正式版
2009-04-08 13:33 3402Agile Web Development with Rail ... -
在Rails下连接SQL Server 2005 分页
2009-04-03 01:57 2406For a Rails/SQLServer applicati ... -
REST与Web services
2009-04-01 14:33 3098问题:你如何看待一个房间中两个或多个架构师?回答:是争论。既然 ... -
使用cucumber测试过程中de-bug
2009-04-01 01:51 1478最近,Rails工程中,做测试和集成测试的时候,Cucumbe ... -
在Rails 2.3 中测试cookie
2009-03-31 18:48 2009Testing Cookies in Rails 2.3 近 ... -
使用Rspec的好处
2009-03-31 18:44 1969本文将从下面几个方面,来阐述使用Rspec的好处 * ... -
5个使用Rails控制台的有用技巧
2009-03-31 18:36 4826update: 2011/10/26 1. 只想测试不想,真 ... -
The Ruby Programming Language 介绍
2009-03-29 11:35 1640点击这里下载chm part1 ... -
一些个人的在线资料
2009-03-28 11:56 1116MoutainWest Conference 视频的 ... -
从scope说起
2009-03-27 00:42 1257预计将从scope说起 以便理解Rails 2.3支持的d ... -
Ruby1.8和Ruby1.9的不同
2009-03-25 17:13 2286Someone recently emailed the r ...
相关推荐
rails 2.3 chm文档 官方最新版
Railsbrain是一个专注于Rails框架的在线资源平台,而这个“railsbrain网站的rails2.3文档(bug修复版)”显然是一份针对Rails 2.3版本的更新文档,旨在修复用户在浏览和交互过程中遇到的问题。Rails是Ruby编程语言的...
Ruby on Rails Guide:是rails官方教程,本人为了大家学习查阅的方便,制成chm格式。就如同java doc的chm格式一样方便。
在这个API文档中,你可以找到关于以下关键知识点的详细信息: 1. **Ruby语法基础**:虽然这个文档主要关注Rails框架,但了解Ruby的基础知识至关重要。这包括变量、常量、方法、类、模块、继承和元编程等概念。 2. ...
Rails 3.2 API 是一个重要的开发资源,主要用于Ruby on Rails框架的开发。Rails是基于Ruby语言的一个开源Web应用程序框架,遵循MVC(Model-View-Controller)架构模式,广泛应用于构建动态网站和Web应用程序。Rails ...
描述中的 "ruby and rails 的框架rails-2.3.3.zip" 提到的是 Rails 的另一个版本 2.3.3,尽管与标题中的版本号不完全匹配,但我们可以推断这是关于 Rails 2.3.x 系列的讨论。这个压缩包很可能包含了 Rails 框架的源...
rails guides的CHM版本,这个向导的版本是2.3
所有必需的信息都可以在Wiki上找到: 如有疑问,请使用i18_routing谷歌论坛: 适用于Rails 2.3、3.0、3.1和3.2下一个版本的TODO(写于2010年6月9日) 处理同一资源名称的多个翻译(例如:嵌套和非嵌套资源) 处理...
Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...
Rails 2.3 和 3 兼容。 关于 PgQ 安装 安装天空工具:Ubuntu 11.10: # apt-get install postgresql-server postgresql-client # apt-get install skytools 宝石档案: gem 'pgq' 从 database.yml 创建股票...
### Rails 101 入门电子书知识点详解 #### 一、简介 《Rails 101 入门电子书》是一本非常适合初学者直接入门的书籍,它由xdite编写并出版于2014年6月10日。本书主要针对的是希望学习Ruby on Rails框架的读者,特别...
《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...
Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...
《Rails 敏捷开发实践》是一本关于如何高效地利用 Ruby on Rails 进行敏捷开发的经典书籍。本书由蔡望勤(Jesse Cai)撰写,他是一位资深的 Ruby 开发者,自2006年起便致力于 Ruby on Rails 的开发工作,同时也是...
在开发Web应用时,Ruby on Rails(简称Rails)框架因其高效、简洁的代码风格和强大的社区支持而备受青睐。Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。...
压缩包子文件的文件名称 "Ruby on Rails.pptx" 提示可能是一个关于Rails的PowerPoint演示文稿,其中可能涵盖了Rails的基础概念、安装步骤、主要组件介绍、开发流程、最佳实践,以及可能的示例代码和案例研究。...
### RailsSpace:构建社交网络网站 #### 一、引言 RailsSpace是一本专注于通过实践项目教授Ruby on Rails开发的书籍。本书通过构建一个面向Ruby社区的社交网络平台——RailsSpace,来帮助读者掌握Ruby on Rails的...
从给定的文件信息来看,我们正在探讨的是一本关于Ruby on Rails的书籍,书名为《Simply Rails2》,作者是Patrick Lenz。本书旨在为初学者提供深入理解Ruby on Rails框架的指南,从基础概念到高级主题均有涵盖,是...
### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...
在本文中,我们将深入探讨Rails3中的常用命令,帮助你更高效地进行开发工作。 首先,新建一个Rails项目是开发的起点。你可以使用以下命令创建一个新的工程: ```bash rails new 工程名 ``` 这会生成一个包含所有...