ruby rails分享

Post on 13-May-2015

4.023 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

这是最近在公司部门内部分享的PPT,面向对Ruby没有基础或有丁点基础的同学。内容包含对Ruby和Rails的各种奇巧淫技。不求看后变成Master,只求看后能激起对Ruby和Rails的兴趣~ 我的博客:http://rubyer.me

TRANSCRIPT

Ruby、Rails分享老宋老宋老宋老宋@2011-12-12@2011-12-12@2011-12-12@2011-12-12

Me

Ruby迷

Blog:Blog:Blog:Blog: http://rubyer.meGithub:Github:Github:Github: https://github.com/camelsongEmail:Email:Email:Email: neosoyn@gmail.com

语言趋势语言趋势语言趋势语言趋势

2011201120112011年11112222月 http://www.tiobe.com很不靠谱的排名

http://trends.builtwith.com/2011-10-24

如果还有人争论Ruby/Rails和Python哪个更适合Web开发,这个数据可以参考

http://trends.builtwith.com/2011-10-24

J2EE在企业级市场独占鳌头,现在盛产码农

PHP是中小网站最爱,我是草根我光荣 http://trends.builtwith.com/2011-10-24

http://trends.builtwith.com/2011-10-24

看来喜欢Ruby on Rails的人还是有的

基点虽小,但我们看中的是未来 http://trends.builtwith.com/2011-10-24

Python为啥下降这么快,难道是没给领导送礼 http://trends.builtwith.com/2011-10-24

Ruby介绍

Rails介绍

10分钟写博客

摘要摘要摘要摘要

Who Who Who Who is is is is on on on on Ruby on Rails?Ruby on Rails?Ruby on Rails?Ruby on Rails?

编程语言 开发框架

区别区别区别区别

http://www.ruby-lang.org

RubyRubyRubyRuby

Ruby 由日本人日本人日本人日本人 松本行弘(松本行弘(松本行弘(松本行弘(MatzMatzMatzMatz))))1995199519951995年发布

人们特别是电脑工程师们,常常从机人们特别是电脑工程师们,常常从机人们特别是电脑工程师们,常常从机人们特别是电脑工程师们,常常从机器着想。他们认为:器着想。他们认为:器着想。他们认为:器着想。他们认为: ““““这样做,机器就能运行的更快;这这样做,机器就能运行的更快;这这样做,机器就能运行的更快;这这样做,机器就能运行的更快;这样做,机器运行效率更高;这样做,样做,机器运行效率更高;这样做,样做,机器运行效率更高;这样做,样做,机器运行效率更高;这样做,机器就会怎样怎样怎样。机器就会怎样怎样怎样。机器就会怎样怎样怎样。机器就会怎样怎样怎样。”””” 实际上,我们需要从人的角度考虑实际上,我们需要从人的角度考虑实际上,我们需要从人的角度考虑实际上,我们需要从人的角度考虑问题,人们怎样编写程序或者怎样使问题,人们怎样编写程序或者怎样使问题,人们怎样编写程序或者怎样使问题,人们怎样编写程序或者怎样使用机器上应用程序。我们是主人,他用机器上应用程序。我们是主人,他用机器上应用程序。我们是主人,他用机器上应用程序。我们是主人,他们是仆人。们是仆人。们是仆人。们是仆人。

---- Matz Matz Matz Matz

SimplicitySimplicitySimplicitySimplicity

打印Hello world

RubyRubyRubyRuby就像超人,只穿内裤。就像超人,只穿内裤。就像超人,只穿内裤。就像超人,只穿内裤。

代码少到不能再少,代码少到不能再少,代码少到不能再少,代码少到不能再少,

简单到不能再简单。简单到不能再简单。简单到不能再简单。简单到不能再简单。

下面分别用下面分别用下面分别用下面分别用RubyRubyRubyRuby和和和和JavaJavaJavaJava实现相同功能实现相同功能实现相同功能实现相同功能

做一个比较。做一个比较。做一个比较。做一个比较。

Java

Ruby 不用写代码不用写代码不用写代码不用写代码

一段空程序

Ruby

Java

调用一个方法

Ruby

Java

逆转字符串

还敢说讨厌Ruby吗?

打印5次Hello world

完全完全完全完全面向面向面向面向对象对象对象对象

全都是对象,甚至包括数字和空

NaturalNaturalNaturalNatural

输出两天前的日期

一段Rspec测试代码

DynamicDynamicDynamicDynamic

给数字添加一个方法

让你疯狂的代码

Ruby的三个动态特性

• Duck Typing• Method Missing• 元编程

Duck TypingDuck TypingDuck TypingDuck Typing

最给力的代码

最给力的代码

Method Missing

Method Missing

Method Missing

Method Missing

Java

Ruby

元编程

Java

Ruby

闭包

Java使用内部类模拟闭包

打开连接关闭连接

处理迭代 处理异常

迭代

管理资源

“跨平台”

真正跨平台JJJJRRRRubyubyubyubyIronRubyIronRubyIronRubyIronRubyMacRubyMacRubyMacRubyMacRubyRubyJSRubyJSRubyJSRubyJSRubotoRubotoRubotoRubotoRubyRubyRubyRuby EnterpriseEnterpriseEnterpriseEnterprise EditionEditionEditionEdition

JavaJavaJavaJavaCCCC####ObjectObjectObjectObject----CCCCJSJSJSJSAndroidAndroidAndroidAndroid

JRuby 示例

Ruby is...• 跨平台跨平台跨平台跨平台

• 自动垃圾回收自动垃圾回收自动垃圾回收自动垃圾回收

• 解释性执行解释性执行解释性执行解释性执行

• 完全面向对象完全面向对象完全面向对象完全面向对象

• 动态动态动态动态

• 支持闭包支持闭包支持闭包支持闭包

• 容易测试容易测试容易测试容易测试

By DHH(David Heinemeier Hansson)@2003

我不认为Rails应该向外部世界屈服,恰恰相反,Rails正在有力地让外部世界向我们屈服。

by DHH

Convention Over Configuration约定优于配置

DRY(Don’t Repeat Yourself)

不要重复自己

REST(Representational State Transfer)

具象状态传输

Rails三原则

约定约定约定约定>>>>配置配置配置配置

1.添加连接库

2.配置连接字符串

3.打开连接

4.新建查找方法

5.调用查找方法

6.修改name7.保存记录

8.关闭连接

把Users表中name=ys的改为youshang

Rails访问数据库示例

比较下比较下比较下比较下JavaJavaJavaJava的的的的ORMORMORMORM框架框架框架框架HibernateHibernateHibernateHibernate和和和和RailsRailsRailsRails的的的的ORMORMORMORM框架框架框架框架ActiveActiveActiveActive RecordRecordRecordRecord。。。。你才知道你才知道你才知道你才知道HibernateHibernateHibernateHibernate真的弱爆了!真的弱爆了!真的弱爆了!真的弱爆了!

Hibernate 官方示例

ModelModelModelModel对象模型:OrderOrderOrderOrder

JavaJavaJavaJava 数据库映射数据库映射数据库映射数据库映射:::: OrderOrderOrderOrder

还有Service层、Dao层。

各层接口和实现类...

RailsRailsRailsRails出场了出场了出场了出场了

Rails中到处充满着约定3种环境约定(开发、生产、测试)单复数约定MVC瘦控制器,胖模型...

DDDDon'ton'ton'ton'tRRRRepeatepeatepeatepeatYYYYourselfourselfourselfourself

DRYGeneratorPartialsPlugins...

RESTRESTRESTREST

万物皆为URL

一切操作均是对一切操作均是对一切操作均是对一切操作均是对URLURLURLURL操作操作操作操作

CCCCreatereatereatereateRRRReadeadeadeadUUUUpdatepdatepdatepdateDDDDeleteeleteeleteelete

RESTRESTRESTRESTfulfulfulful操作符

PostPostPostPostGetGetGetGetPutPutPutPutDeleteDeleteDeleteDelete

HTTPHTTPHTTPHTTP动词

CCCCreatereatereatereateRRRReadeadeadeadUUUUpdatepdatepdatepdateDDDDeleteeleteeleteelete

RailsRailsRailsRails方法

showshowshowshow

editeditediteditupdateupdateupdateupdate

destroydestroydestroydestroy

indexindexindexindex

newnewnewnewcreatecreatecreatecreate

RESTRESTRESTRESTfulfulfulful操作符

操作 HTTPHTTPHTTPHTTP请求

URLURLURLURL Rails Rails Rails Rails 对应ActionActionActionAction

查看列表 GetGetGetGet http://my/posts indexindexindexindex

查看id=2的帖子 GetGetGetGet http://my/posts/2 showshowshowshow

新建贴子 GetGetGetGet http://my/posts/new newnewnewnew

保存帖子 PostPostPostPost http://my/posts createcreatecreatecreate

修改id=2的帖子 GetGetGetGet http://my/posts/2 editediteditedit

保存修改 UpdateUpdateUpdateUpdate http://my/posts/2 updateupdateupdateupdate

删除id=2的帖子 DeleteDeleteDeleteDelete http://my/posts/2 DestroyDestroyDestroyDestroy

More RailsAgile DevelopmentTDD(Test Driven Development)BDDGeneratorsLive on the edge

10101010分钟写博客分钟写博客分钟写博客分钟写博客

其实只要其实只要其实只要其实只要5555分钟分钟分钟分钟1.rails new blog2.cd blog3.rails g scaffold Post title:string

content:text4.rails server

现在就可以访问http://127.0.0.1:3000/posts

博客已经写好了。

My Blog-webMy Blog-webMy Blog-webMy Blog-web

My Blog-mobileMy Blog-mobileMy Blog-mobileMy Blog-mobile

Q&AQ&AQ&AQ&Ahttp://rubyer.mehttp://rubyer.mehttp://rubyer.mehttp://rubyer.me

top related