Ruby rails分享
-
Upload
neosoyn -
Category
Technology
-
view
4.038 -
download
5
description
Transcript of Ruby rails分享
![Page 1: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/1.jpg)
Ruby、Rails分享老宋老宋老宋老宋@2011-12-12@2011-12-12@2011-12-12@2011-12-12
![Page 2: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/2.jpg)
Me
Ruby迷
Blog:Blog:Blog:Blog: http://rubyer.meGithub:Github:Github:Github: https://github.com/camelsongEmail:Email:Email:Email: [email protected]
![Page 3: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/3.jpg)
语言趋势语言趋势语言趋势语言趋势
![Page 4: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/4.jpg)
2011201120112011年11112222月 http://www.tiobe.com很不靠谱的排名
![Page 5: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/5.jpg)
http://trends.builtwith.com/2011-10-24
如果还有人争论Ruby/Rails和Python哪个更适合Web开发,这个数据可以参考
![Page 6: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/6.jpg)
http://trends.builtwith.com/2011-10-24
J2EE在企业级市场独占鳌头,现在盛产码农
![Page 7: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/7.jpg)
PHP是中小网站最爱,我是草根我光荣 http://trends.builtwith.com/2011-10-24
![Page 8: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/8.jpg)
http://trends.builtwith.com/2011-10-24
看来喜欢Ruby on Rails的人还是有的
![Page 9: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/9.jpg)
基点虽小,但我们看中的是未来 http://trends.builtwith.com/2011-10-24
![Page 10: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/10.jpg)
Python为啥下降这么快,难道是没给领导送礼 http://trends.builtwith.com/2011-10-24
![Page 11: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/11.jpg)
Ruby介绍
Rails介绍
10分钟写博客
摘要摘要摘要摘要
![Page 12: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/12.jpg)
Who Who Who Who is is is is on on on on Ruby on Rails?Ruby on Rails?Ruby on Rails?Ruby on Rails?
![Page 13: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/13.jpg)
![Page 14: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/14.jpg)
编程语言 开发框架
区别区别区别区别
![Page 15: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/15.jpg)
http://www.ruby-lang.org
RubyRubyRubyRuby
![Page 16: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/16.jpg)
Ruby 由日本人日本人日本人日本人 松本行弘(松本行弘(松本行弘(松本行弘(MatzMatzMatzMatz))))1995199519951995年发布
![Page 17: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/17.jpg)
人们特别是电脑工程师们,常常从机人们特别是电脑工程师们,常常从机人们特别是电脑工程师们,常常从机人们特别是电脑工程师们,常常从机器着想。他们认为:器着想。他们认为:器着想。他们认为:器着想。他们认为: ““““这样做,机器就能运行的更快;这这样做,机器就能运行的更快;这这样做,机器就能运行的更快;这这样做,机器就能运行的更快;这样做,机器运行效率更高;这样做,样做,机器运行效率更高;这样做,样做,机器运行效率更高;这样做,样做,机器运行效率更高;这样做,机器就会怎样怎样怎样。机器就会怎样怎样怎样。机器就会怎样怎样怎样。机器就会怎样怎样怎样。”””” 实际上,我们需要从人的角度考虑实际上,我们需要从人的角度考虑实际上,我们需要从人的角度考虑实际上,我们需要从人的角度考虑问题,人们怎样编写程序或者怎样使问题,人们怎样编写程序或者怎样使问题,人们怎样编写程序或者怎样使问题,人们怎样编写程序或者怎样使用机器上应用程序。我们是主人,他用机器上应用程序。我们是主人,他用机器上应用程序。我们是主人,他用机器上应用程序。我们是主人,他们是仆人。们是仆人。们是仆人。们是仆人。
---- Matz Matz Matz Matz
![Page 18: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/18.jpg)
![Page 19: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/19.jpg)
![Page 20: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/20.jpg)
SimplicitySimplicitySimplicitySimplicity
![Page 21: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/21.jpg)
打印Hello world
![Page 22: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/22.jpg)
RubyRubyRubyRuby就像超人,只穿内裤。就像超人,只穿内裤。就像超人,只穿内裤。就像超人,只穿内裤。
代码少到不能再少,代码少到不能再少,代码少到不能再少,代码少到不能再少,
简单到不能再简单。简单到不能再简单。简单到不能再简单。简单到不能再简单。
![Page 23: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/23.jpg)
下面分别用下面分别用下面分别用下面分别用RubyRubyRubyRuby和和和和JavaJavaJavaJava实现相同功能实现相同功能实现相同功能实现相同功能
做一个比较。做一个比较。做一个比较。做一个比较。
![Page 24: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/24.jpg)
Java
Ruby 不用写代码不用写代码不用写代码不用写代码
一段空程序
![Page 25: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/25.jpg)
Ruby
Java
调用一个方法
![Page 26: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/26.jpg)
Ruby
Java
逆转字符串
![Page 27: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/27.jpg)
还敢说讨厌Ruby吗?
![Page 28: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/28.jpg)
打印5次Hello world
![Page 29: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/29.jpg)
完全完全完全完全面向面向面向面向对象对象对象对象
![Page 30: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/30.jpg)
全都是对象,甚至包括数字和空
![Page 31: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/31.jpg)
NaturalNaturalNaturalNatural
![Page 32: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/32.jpg)
输出两天前的日期
![Page 33: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/33.jpg)
一段Rspec测试代码
![Page 34: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/34.jpg)
DynamicDynamicDynamicDynamic
![Page 35: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/35.jpg)
给数字添加一个方法
![Page 36: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/36.jpg)
让你疯狂的代码
![Page 37: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/37.jpg)
Ruby的三个动态特性
• Duck Typing• Method Missing• 元编程
![Page 38: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/38.jpg)
![Page 39: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/39.jpg)
Duck TypingDuck TypingDuck TypingDuck Typing
![Page 40: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/40.jpg)
最给力的代码
![Page 41: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/41.jpg)
最给力的代码
Method Missing
Method Missing
Method Missing
Method Missing
![Page 42: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/42.jpg)
Java
Ruby
![Page 43: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/43.jpg)
元编程
Java
Ruby
![Page 44: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/44.jpg)
闭包
![Page 45: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/45.jpg)
Java使用内部类模拟闭包
打开连接关闭连接
处理迭代 处理异常
![Page 46: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/46.jpg)
迭代
![Page 47: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/47.jpg)
管理资源
![Page 48: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/48.jpg)
“跨平台”
![Page 49: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/49.jpg)
真正跨平台JJJJRRRRubyubyubyubyIronRubyIronRubyIronRubyIronRubyMacRubyMacRubyMacRubyMacRubyRubyJSRubyJSRubyJSRubyJSRubotoRubotoRubotoRubotoRubyRubyRubyRuby EnterpriseEnterpriseEnterpriseEnterprise EditionEditionEditionEdition
JavaJavaJavaJavaCCCC####ObjectObjectObjectObject----CCCCJSJSJSJSAndroidAndroidAndroidAndroid
![Page 50: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/50.jpg)
JRuby 示例
![Page 51: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/51.jpg)
Ruby is...• 跨平台跨平台跨平台跨平台
• 自动垃圾回收自动垃圾回收自动垃圾回收自动垃圾回收
• 解释性执行解释性执行解释性执行解释性执行
• 完全面向对象完全面向对象完全面向对象完全面向对象
• 动态动态动态动态
• 支持闭包支持闭包支持闭包支持闭包
• 容易测试容易测试容易测试容易测试
![Page 52: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/52.jpg)
![Page 53: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/53.jpg)
By DHH(David Heinemeier Hansson)@2003
![Page 54: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/54.jpg)
我不认为Rails应该向外部世界屈服,恰恰相反,Rails正在有力地让外部世界向我们屈服。
by DHH
![Page 55: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/55.jpg)
![Page 56: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/56.jpg)
![Page 57: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/57.jpg)
Convention Over Configuration约定优于配置
DRY(Don’t Repeat Yourself)
不要重复自己
REST(Representational State Transfer)
具象状态传输
Rails三原则
![Page 58: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/58.jpg)
约定约定约定约定>>>>配置配置配置配置
![Page 59: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/59.jpg)
1.添加连接库
2.配置连接字符串
3.打开连接
4.新建查找方法
5.调用查找方法
6.修改name7.保存记录
8.关闭连接
把Users表中name=ys的改为youshang
![Page 60: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/60.jpg)
Rails访问数据库示例
![Page 61: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/61.jpg)
比较下比较下比较下比较下JavaJavaJavaJava的的的的ORMORMORMORM框架框架框架框架HibernateHibernateHibernateHibernate和和和和RailsRailsRailsRails的的的的ORMORMORMORM框架框架框架框架ActiveActiveActiveActive RecordRecordRecordRecord。。。。你才知道你才知道你才知道你才知道HibernateHibernateHibernateHibernate真的弱爆了!真的弱爆了!真的弱爆了!真的弱爆了!
![Page 62: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/62.jpg)
Hibernate 官方示例
![Page 63: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/63.jpg)
ModelModelModelModel对象模型:OrderOrderOrderOrder
![Page 64: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/64.jpg)
JavaJavaJavaJava 数据库映射数据库映射数据库映射数据库映射:::: OrderOrderOrderOrder
![Page 65: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/65.jpg)
还有Service层、Dao层。
各层接口和实现类...
![Page 66: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/66.jpg)
RailsRailsRailsRails出场了出场了出场了出场了
![Page 67: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/67.jpg)
Rails中到处充满着约定3种环境约定(开发、生产、测试)单复数约定MVC瘦控制器,胖模型...
![Page 68: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/68.jpg)
DDDDon'ton'ton'ton'tRRRRepeatepeatepeatepeatYYYYourselfourselfourselfourself
![Page 69: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/69.jpg)
DRYGeneratorPartialsPlugins...
![Page 70: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/70.jpg)
RESTRESTRESTREST
![Page 71: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/71.jpg)
万物皆为URL
![Page 72: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/72.jpg)
一切操作均是对一切操作均是对一切操作均是对一切操作均是对URLURLURLURL操作操作操作操作
![Page 73: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/73.jpg)
CCCCreatereatereatereateRRRReadeadeadeadUUUUpdatepdatepdatepdateDDDDeleteeleteeleteelete
RESTRESTRESTRESTfulfulfulful操作符
PostPostPostPostGetGetGetGetPutPutPutPutDeleteDeleteDeleteDelete
HTTPHTTPHTTPHTTP动词
![Page 74: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/74.jpg)
CCCCreatereatereatereateRRRReadeadeadeadUUUUpdatepdatepdatepdateDDDDeleteeleteeleteelete
RailsRailsRailsRails方法
showshowshowshow
editeditediteditupdateupdateupdateupdate
destroydestroydestroydestroy
indexindexindexindex
newnewnewnewcreatecreatecreatecreate
RESTRESTRESTRESTfulfulfulful操作符
![Page 75: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/75.jpg)
操作 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
![Page 76: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/76.jpg)
More RailsAgile DevelopmentTDD(Test Driven Development)BDDGeneratorsLive on the edge
![Page 77: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/77.jpg)
10101010分钟写博客分钟写博客分钟写博客分钟写博客
![Page 78: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/78.jpg)
其实只要其实只要其实只要其实只要5555分钟分钟分钟分钟1.rails new blog2.cd blog3.rails g scaffold Post title:string
content:text4.rails server
现在就可以访问http://127.0.0.1:3000/posts
博客已经写好了。
![Page 79: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/79.jpg)
My Blog-webMy Blog-webMy Blog-webMy Blog-web
![Page 80: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/80.jpg)
My Blog-mobileMy Blog-mobileMy Blog-mobileMy Blog-mobile
![Page 81: Ruby rails分享](https://reader031.fdocuments.net/reader031/viewer/2022012303/555303b7b4c905533f8b4806/html5/thumbnails/81.jpg)
Q&AQ&AQ&AQ&Ahttp://rubyer.mehttp://rubyer.mehttp://rubyer.mehttp://rubyer.me