【原创】Ruby on rails 实践

koalant 2005-05-24 12:05:12
最近写了一篇关于 ruby on rails 的文章,一直在修改之中, 希望和程序员朋友们交流一下。 Ruby 是由日本人松本行弘发明的一种面向对象的脚本语言。在我看来,它是现在最好的动态脚本语言,而新崛起的 Ruby on rails 又是用 ruby 开发的最简单的 Web 应用框架。
据称 Ruby on rails 的开发速度是使用 Java 框架的 10 倍,我觉得应该比这更快。
如果你不相信我说的,可以阅读一下这篇文章。

注:本文章在更新中,不经本人同意,不得转载。

下载地址:
http://www.koalant.com/rubyonrails.pdf

...全文
529 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
cloudzm 2005-05-26
  • 打赏
  • 举报
回复
me也正在学Ruby,真是非常强大而且有趣的语言。最近刚刚实验成功在Apache+fastcgi上部署多个Rails项目的方法。

rails里面可以设置不使用复数的。而我认为用约定代替配置绝对是有优点的,可以大量减少程序员的工作量,不是有文章说到,同一个项目,rails的总代码量仅有J2EE项目的配置代码量那么多。而且更重要的是使得所有人做的项目看起来都差不多,进入app目录,一眼就能看到controller, models, views,多清晰的结构,就好比Pyhon中强制使用缩进来确定代码块一样,消除不同程序员风格间的差异,对于维护是大有好处的。
koalant 2005-05-26
  • 打赏
  • 举报
回复
国外的 www.43things.com 好像就是 rubyonrails.com 的人做的,比较有创意。国内人用 ASP 也实现了个完全一模一样的东西,创意是抄袭的。 http://www.aimi.cn
shhgs 2005-05-25
  • 打赏
  • 举报
回复
ruby确实不错。虽然和Perl有点形似,但其本质更接近Python(与Perl相比)。真正的OOP。
shhgs 2005-05-25
  • 打赏
  • 举报
回复
Kaolant:

向你请教一个问题,怎样在windows里面写webrick的cgi?

我按文档的说法,在Linux下面做成了,但windows下面老是报不能执行cgi程序。我看了一下,它给完header之后就停了,所以browser老是给premature header,而server报不能运行cgi。于是我把cgi连到ruby,在命令行直接运行cgi程序,它会在控制台上打印html文件,但是用browser访问就是不行?请问你碰到过这个问题吗?

如果分不够,我开专版。
koalant 2005-05-25
  • 打赏
  • 举报
回复
RoR 就是 Ruby On Rails 的简写啊,赫赫
koalant 2005-05-25
  • 打赏
  • 举报
回复
ROR 的ORM 设计被诟病的比较多,Theserverside 上有专门文章说明。

将数据库邦定到页面上并非必须的,教程中提供的是一种说明它对单表操作的简单例子。它实际上帮定到一个 Bean 上的做法,在任何需要的页面上,申明所需要的 Model class Bean 就可以使用了,这种方法比较灵活。

约定优于配置是一种好的想法,但它并不是约定代替配置,是可以修改的。

CGIHandler 无法成功,可能是因为 windows 发行版本的问题, webrick 毕竟有太多 unix 的东西移植到 Windows 平台可能会有问题。Ruby talk 上也有很多这方面的讨论。
fibbery 2005-05-25
  • 打赏
  • 举报
回复
工作性质不同,你们的帖子一说到具体东西,我就已经看不懂了.什么RoR呵呵,不懂.
shhgs 2005-05-25
  • 打赏
  • 举报
回复
webrick有4个预设的servlet,分别是FileHandler, CGIHandler, ERBHandler以及ProcHandler。在Windows下我做FileHandler和ERBHandler的时候都成了,但是做CGIHandler的时候没成功。但是同样的程序,在Linux下没问题。

顺便说说我对RoR的感觉。我并不太喜欢RoR的设计。首先我不认为约定能代替配置,用单复数做配置更是在胡闹。万一我们既有person类又有people类,那么相应的数据表该怎么命名呢?person和people的复数形式可都是people呀!其次这种将数据库的表绑定在某个页面的做法也太僵硬了。万一将来网站要做扩充,要么是数据库被弄得乱七八糟,要么是处理逻辑要做大手术,反正是要在两瓶毒药里面选一瓶。总之,这种设计明显欠考虑。
koalant 2005-05-25
  • 打赏
  • 举报
回复
我是从事 J2EE 编程工作,做过很长时间的多媒体程序员,脚本语言知道的并不多, 真正学下来的就是 Ruby, 原来学习过 python 和 zope ,后来放弃了。
fibbery 2005-05-25
  • 打赏
  • 举报
回复
不知道eiffel怎么会这么多种脚本语言,都是因为工作需要?看你的资料(你的pdf中的)你是在北京工作,不知道您从事的是哪一方面的工作.
koalant 2005-05-25
  • 打赏
  • 举报
回复
我不太清楚你指的 CGI 是什么,WebRick 下面可以写类似 Servlet 的程序,如果你指的是那个,应该没有什么问题。我没有安装 Linux ,我的例子都是在 Windows 下面跑的,在 Windows 下面写 Webrick 的 Servlet 非常容易,但是我在那个教程中没有举 Webrick 的Servlet的例子,Ruby 安装版本的 Sample 中有个相应的程序你可以看看。

下面是个简单的例子

#!/usr/local/bin/ruby
require 'webrick'
include WEBrick

s = HTTPServer.new( :Port => 2000 )

# HTTPServer#mount(path, servletclass)
# When a request referring "/hello" is received,
# the HTTPServer get an instance of servletclass
# and then call a method named do_"a HTTP method".

class HelloServlet < HTTPServlet::AbstractServlet
def do_GET(req, res)
res.body = "<HTML>hello, world.</HTML>"
res['Content-Type'] = "text/html"
end
end
s.mount("/hello", HelloServlet)


# HTTPServer#mount_proc(path){|req, res| ...}
# You can mount also a block by `mount_proc'.
# This block is called when GET or POST.

s.mount_proc("/hello/again"){|req, res|
res.body = "<HTML>hello (again)</HTML>"
res['Content-Type'] = "text/html"
}

trap("INT"){ s.shutdown }
s.start



如果你指的是后缀名是 .cgi 的文件,我就不太清楚了。
koalant 2005-05-25
  • 打赏
  • 举报
回复
就是真正的名字就是 Rails ,形象标志是个铁轨。 没什么典故,网站的名字叫做 Ruby on rails
(http://www.rubyonrails.com)
fibbery 2005-05-25
  • 打赏
  • 举报
回复
ruby on rails 应该是一个形象的命名吧,有没有什么典故?
fibbery 2005-05-24
  • 打赏
  • 举报
回复
好的.欢迎常来.
koalant 2005-05-24
  • 打赏
  • 举报
回复
叫我 eiffel 吧,我的名字也是一个面向对象语言的名字
fibbery 2005-05-24
  • 打赏
  • 举报
回复
你的名字有没有一个记忆方法?
fibbery 2005-05-24
  • 打赏
  • 举报
回复
嗯,也不错,学有所用才有动力.:)
koalant 2005-05-24
  • 打赏
  • 举报
回复
我学 Ruby 是为了简化我在 Java 编程中的一些繁复的工作。经常用它写一些小工具来生成 java 代码,还有导入导出数据库数据,小的处理文本文件的工具,而这些工作用 Java 来写太麻烦了,所以我觉得学习它的确很有用处。
fibbery 2005-05-24
  • 打赏
  • 举报
回复
本帖好像还是楼主的第一张帖子呢。:),是不是刚刚注册用户?欢迎欢迎。
fibbery 2005-05-24
  • 打赏
  • 举报
回复
实际上我也很赞成 -166.abs的形式,是绝对的面向对象,这种面向对象的思维是它给我的第一个好感,第一印象的确很重要。但是作为我个人来说,我很难去研究这个东西,因为,因为要工作,之余还要学习与工作有关的知识,本来生活的时间就已经被繁忙的工作占去了一大半。不知道楼主为什么会研究这种语言,我要看看易语言完全是出于爱国和对作者的敬佩因其精神对我的感动。
加载更多回复(7)

37,744

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧