w1100n
This site is best viewed in Google Chrome
2/26/2013 23:18 | Tag:

rubyinstaller SET RUBY_HOME=D:/ruby SET PATH=%PATH%;%RUBY_HOME%/bin SET RUBYOPT=rubygems install ruby gem

2/26/2013 12:56 | Tag:

Ruby on Rails 是一个用于开发数据库驱动的网络应用程序的完整框架。Rails基于MVC(模型- 视图- 控制器)设计模式。从视图中的Ajax应用,到控制器中的访问请求和反馈,到封装数据库的模型,Rails 为你提供一个纯Ruby的开发环境。发布网站时,你只需要一个数据库和一个网络服务器即可。 Ruby On Rails是一个用于编写网络应用程序的软件包.它基于一种计算机软件语言Ruby,给程序开发人员提供了强大的框架支持.你可以用比以前少的多的代码和 短的多的时间编写出一流的网络软件.比较著名的社区网站43things.com, odeo.com和basecamphq.com就是用Ruby On Rails编写的. Ruby On Rails的指导原则是”不要重复你自己”(Don’t Repeat Yourself, 或DRY).意思是说你写的代码不会有重复的地方.比如以往数据库的接口往往是类似的程序代码但是在很多地方都要重复用到.这无论是给编写还是维护都造成 了很大的代价.相反,Ruby On Rails给你提供了绝大多数的支持,让你只需要短短的几行代码就可以实现强大的功能.而且,Rails提供了代码生成工具,让你甚至不需要编写一行代码 就实现强大的管理程序. Ruby On Rails通过reflection和runtime extension减少了对configuration文件的依靠,这和Java,C#语言的方向有很大不同,让你减少了很多配置和部署的麻烦,但是性能上却完全可以应付一般网站的需求. Rails 支持各类网络服务器和数据库。在服务器方面,我们推荐Apache、 lighttpd 或 nginx 代理至 Mongrel (或者使用FastCGI)。 数据库方面,你可以采用MySQL、PostgreSQL、 SQLite、 Oracle、 SQL … Continue reading

2/26/2013 12:52 | Tag:

Ruby中的Rake任务详述 Rake简介 Rake和Make及Ant Rake的意思是Ruby Make,一个用ruby开发的代码构建工具。Rake的英文意思是耙子,一种很朴实的劳动工具。真的是很贴切,Rake正是一个功能强大、勤勤恳恳的劳动工具。 但是,为什么Ruby需要Rake? Ruby代码不需要编译,为什么需要Rake?其实,与其说Rake是一个代码构建工具,不如说Rake是一个任务管理工具,通过Rake我们可以得到两个好处: 以任务的方式创建和运行脚本 当然,你可以用脚本来创建每一个你希望自动运行的任务。但是,对于大型的应用来说,你几乎总是需要为数据库迁移(比如Rails中db:migrate任务)、清空缓存、或者代码维护等等编写脚本。对于每一项任务,你可能都需要写若干脚本,这会让你的管理变得复杂。那么,把它们用任务的方式整理到一起,会让管理变得轻松很多。 追踪和管理任务之间的依赖 Rake还提供了轻松管理任务之间依赖的方式。比如,“migrate”任务和“schema:dump”任务都依赖于 “connect_to_database”任务,那么在“migrate”任务调用之前,“connect_to_database”任务都会被执行。 在哪里可以获得Rake? Rake的主页是在http://rake.rubyforge.org/,在这里你可以获得Rake的简单介绍,API以及一些有用文档的链接。可以在http://rubyforge.org/frs/?group_id=50获得最新版的Rake,在作者写作时,最新版本是0.7.3。 Rake脚本编写 一个简单脚本 Rake的脚本相当简单,下面用一个例子进行说明。假设你是一个勤劳的家庭型程序员,在周末你打算为你的家人做一些贡献。所以你为自己制定了三个任务:买菜、做饭和洗衣服。打开你的文本编辑器,创建一个名叫rakefile的文件(Rake会在当前路径下寻找名叫Rakefile、rakefile、RakeFile.rb和rakefile.rb的rake文件),并输入如下内容: desc “任务1 — 买菜” task :purchaseVegetables do puts “到沃尔玛去买菜。” end desc “任务2 — 做饭” task :cook do puts “做一顿香喷喷的饭菜。” end desc “任务3 — … Continue reading

8/1/2012 14:48 | Tag:

Question: I would like to understand the basics of how to write and execute a ruby program on Linux OS. Can you explain it with a simple example? Answer: In this article, let us review very quickly how to write a basic Hello … Continue reading

4/4/2012 18:08 | Tag:

For some reason, mkmf.rb is part of the ruby1.8-dev package, and initially I hadn’t installed that. #install ruby1.8-dev and everything trotted along happily after that.

4/4/2012 16:34 | Tag:

http://www.lixiaolai.com/archives/10833.html RubyGems是什么? RubyGems是一个方便而强大的Ruby程序包管理器( package manager),类似RedHat的RPM.它将一个Ruby应用程序打包到一个gem里,作为一个安装单元。 当前最新版本为0.8.3 下载地址:http://rubyforge.org/frs/?group_id=126 主页:http://rubygems.rubyforge.org/wiki/wiki.pl 最新的Ruby版本已经包含RubyGems了。 特点: 能远程安装包 包之间依赖关系的管理 简单可靠的卸载(uninstallation) 查询机制,能查询本地和远程服务器的包信息 能保持一个包的不同版本 基于Web的查看接口,能查看你安装的gem的信息。 官方解释是这样的: A RubyGem is a software package, commonly called a “gem”. Gems contain a packaged Ruby application or library. The RubyGems software itself allows … Continue reading

4/4/2012 15:44 | Tag:

Ruby,一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言,在20世纪90年代由日本人松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于 Perl、Smalltalk、Eiffel、Ada 以及 Lisp 语言。由 Ruby 语言本身还发展出了JRuby(Java 平台)、IronRuby(.NET 平台)等其他平台的 Ruby 语言替代品。Ruby的作者于1993年2月24日开始编写Ruby,直至1995年12月才正式公开发布于fj(新闻组)。因为Perl发音与6月诞生石pearl(珍珠)相同,因此Ruby以7月诞生石ruby(红宝石)命名。

4/1/2012 16:17 | Tag:

1.有正常的乘法功能 2.数组*integer Ruby代码 [1,2 ,[3 , [4 ,5]]] *2 = [1,2 ,[3 , [4 ,5]] , 1,2 ,[3 , [4 ,5]]] 3.字符串*integer Ruby代码 “hello”*2 = “hellohello” 4.创建数组 Ruby代码 *a = 1,3,”as” a = [1,3, “as”] 5.数组参数传入时的前缀eg: Ruby代码 a= [1 , … Continue reading

4/1/2012 16:11 | Tag:

Ruby 是一个强大的面向对象脚本语言(本文所用 Ruby 版本为1.8.6),在 Ruby 中 Symbol 表示“名字”,比如字符串的名字,标识符的名字。 创建一个 Symbol 对象的方法是在名字或者字符串前面加上冒号: 创建 symbol 对象 :foo :test :”abc” :”I am a boy” 你可能会问,字符串就是字符串,干吗还有字符串的名字?这是因为在 Ruby 中字符串也是一种对象,即 String 对象。无论其结构还是操作和 Symbol 对象都是不同的。 在 Ruby 中每一个对象都有唯一的对象标识符(Object Identifier),可以通过 object_id 方法来得到一个对象的标识符。我们来看看 Symbol 对象和 String 对象的差别: Ruby 对象标识符 … Continue reading

4/1/2012 16:05 | Tag:

继承符号 —— < (小于号),可以理解为:子类 (抽象程度更窄化) 小于父类,或者像流操作符一样 把父类的内容都‘流’入子类。另外,默认(即未使用继承符号) 时,父类是 Object对象, 和Java一样是单根继承体系; super关键字是从子类直接调用父类(同名) 方法的 。 def h 定义一个函数。它告诉 Ruby 我们的函数名字是 h。下一行是函数的内容, 正是我们前面看到过的那行代码:puts “Hello World!”。最后的一行 end 告诉 Ruby 函数的定义完成了。   1.1      变量、常量和类型 1)      定义变量 变量类型 描述 示例 局部变量(或伪变量) 以小写字母或下划线卡头 var    _var 全局变量 以$开头 $var 类变量 类中定义,以@@开头 @@var 实例变量 对象中定义,以@开头 @var 常量 以大写字母开头 … Continue reading

4/1/2012 16:00 | Tag:

http://ruby-china.org/wiki/building-a-command-line-tool-with-optionparser 除了Rails之外,Ruby能做的太多太多了,除了用于Rails开发之外,Ruby用的最多的就是写各种Command Line工具来解决各种小问题,Command Line工具又称为命令行工具。 提到用Ruby写命令行工具,就绕不过一个问题,如何解析命令行参数? Unix下的命令行工具 先啰嗦一下Unix下的命令行工具,Unix的命令行工具历史悠久,这里面故事非常非常多(以后再讲,或者参见Unix编程艺术)。随着时间的推移,对于如何正确构建优良的命令行工具,Unix社区慢慢形成了一整套完整的Convertion以及惯用法,如果你的命令行工具遵从这些Convertion,那么用户将会非常容易的去使用你的命令行工具,甚至通过简洁的方式,将你的命令行工具和各种其他工具组合起来,用来完成各种复杂的操作。 正确的处理命令行参数对于写出高质量的命令行工具非常重要,那么如何正确的处理命令行参数呢?如果有C语言编程经验,或者用C语言写过命令行工具的人可能很熟悉getopt(GNU getopt_long()),getopt是C Library中一个专门用于解析命令行参数的工具,通常用C去写命令行工具的时候,getop视一个很自然选择。 用Ruby写命令行工具 当使用Ruby写命令行工具的时候,我们在不借助任何内置/外置的命令行参数解析工具的情况下,可以直接从ARGV取到传入命令行的参数,然后手工判断,验证并执行后续操作。不过从遵循Unix的命令行工具的Convertion角度来讲,我不建议你直接从ARGV取数值,而是利用现有的库来作这件事情。Ruby的标准库内置提供了一个getopt的Ruby实现GetoptLong,GetoptLong基本上模拟了C语言版本的全部接口/功能,不过Ruby开发社区不推荐你使用GetoptLong,而是建议使用另外一个也是内置的且更加强大的解析库:OptionParser。 这个世界上总是有人不断的重新发明轮子,除了Ruby已经内置的OptionParser,还有下面这些第三方实现的轮子: Thor Trollop Gli Choice Optiflag Thor是Rails 3以后内建的命令行工具,严格意义上说,Thor不仅仅用于解析命令行参数,而是用于替代rake作为新的task标准工具,Thor的命令行参数解能是自己实现的,我个人建议在写Rails的task的时候,把Thor作为首选,但是作一般用途的命令行工具,Thor有点overkill了。 Gli是一个用于建立“Git-Like Interface Command Line Parser”的工具,这里我简单给出一个什么是“Git-Like”的解释。通常Unix下的命令行工具都符合一个哲学,即“作一件事并且把它做好”,但是有些功能强大复杂的工具,如git,可以通过指定不同的Action执行不同的操作,比如git的push和pull操作: bash $ git push bash $ git pull 就是两个完全不同的操作,但是他们的command部分都是git,只是action部分不同。我们也可以把这样的通过不同的action来实现不同的操作的命令行工具叫做Command-Suit工具,即从功能上看,它不是一个命令,而是一个命令的suit集合。Gli就是帮助你快速实现这种Command-Suit的框架,如果你需要编写复杂的命令行工具,Gli是一个不错的选择。 Trollop,Choice和Optiflag都是命令行参数的Ruby Parser,他们的目的一致,而且他们解析过程都遵循Unix的约定,只是实现各有不同,用法也不同,不过对我来说,他们都是一回事。就Unix命令行来说,参数只有Options,Arguments,以及Actions而已,所以具体用哪个,看你的个人喜好,简单对比下来我认为Choice的DSL语法最易读,简洁,优雅,如果你需要这些第三方Command Line parser的时候,不妨考虑一下Choice。不过我奉行另外一个原则,如果系统内置了的,我就不考虑第三方gem,而且Ruby内置的OptionParser足够强大,能满足我对解析Unix的命令行参数的一切需求,所以我优选使用OptionParser。这里我简单猜测一下为什么还有这么多第三方的轮子,第一是不知道Ruby已经内置了这个,第二个可能就是不爽Ruby内置的这个parser的文档或用法,虽然OptionParser足够强大灵活,但是不代表它好用,容易上手,相反,它的文档就相当坑爹!

4/1/2012 15:41 | Tag:

三者之间区别并不像你想的那么难,也不会像有些文章写的那么长。挺简单的。 相同之处:三者均在kernel中定义的,均含有包含进某物之意。 不同之处: 1、requre,load用于文件,如.rb等等结尾的文件。 2、include则用于包含一个文件(.rb等结尾的文件)中的模块。 3、requre一般情况下用于加载库文件,而load则用于加载配置文件。 4、requre加载一次,load可加载多次。 怎么样,简单吧!再看个例子。 如果说abc.rb中包含一个模块Ma,和几个类Ca,Cb等等。那么你若想在ef.rb文件中使用abc.rb中的资源,你得这样: require ‘abc.rb’ 若还想在ef.rb的某个类中使用abc.rb中的模块,则应在这个类中加入 include Ma 如果你只想在ef.rb文件的某个类中使用abc.rb的模块,你得这样: require ‘abc.rb’ include Ma

辽ICP备14012896