什么是Ruby之道? 翻译这篇文章让我对这个问题有了更深的理解。
这个“道”如果只是Ruby所有,那么它只是一种有为法。但是Hal Fulton并非这么想,他只是想通过Ruby来让我们理解其背后的“道”。这种道不生不灭,无色无相,乃是一种无为法。所有世间事物皆遵循这种道,而道又是不能由世间文字所描述,只能通过个人修证而来。
Ruby之道表现为简单性和美感,这点和其他世间法是一致的。只有摆脱“企业级”,“工业标准”之类的枷锁才能真正做到这一点。而J2EE就是典型的反面例证,企业级成为复杂性的堂皇借口,复杂性成为标准的设计原则,程序员沦为标准的奴隶。
作者全篇也没有明确地讲出什么是Ruby之 ...
desc "Run all specs in spec directory with RCov (excluding plugin specs)"
Spec::Rake::SpecTask.new(:rcov) do |t|
t.spec_files = FileList['spec/**/*_spec.rb']
t.rcov = true
t.rcov_opts = ['--exclude', 'spec']
t.rcov_dir = ENV['CC_BUILD_ARTIFACTS'] || 'coverage'
end
CC_BUILD_ARTIFACTS是 ...
开发过程中,在三个Model的REST描述上,我昨天冥思苦想了一整天。突然对REST有了顿悟,对于以前的错误理解捶胸顿足。
REST不是什么?
1. REST不是技术
之所以说REST更接近道,是因为REST不是一种技术,而是一种思想,任何方式都可以实现。使用Rails 1.2不代表使用了REST。
2. REST不是Model的Proxy
以为只要Model和Model的关系设计好了,REST风格的URL就被决定了。这就是我前段时间所犯的最愚蠢的错误。这种思想让我用Model First的方式设计系统。结果系统实现得越多,离用户价值越远。
3. RES ...
- 11:17
- 浏览 (6693)
- 论坛浏览 (7022)
- 评论 (11)
- 分类: Ruby
ZenTest的作者提出了Matrix Test ,并且在ZenTest里面提供了一个实现。
我前段时间实现了一个增强版的MatrixTest--http://agilewebdevelopment.com/plugins/test_helpful
现在有一个项目转到RSpec上了,我于是作了一个Matrix Test的RSpec实现-- http://svn.nibirutech.com/opensource/plugins/matrix_spec/
RSpec的实现中,我实在没弄明白如何扩展RSpec,只好把方法调用放到 before(:each)里面,很是无奈。抽出时间再写READ ...
map.resources :account_types, :has_many => :accounts
是简短写法,等价于
map.resources :account_types do |account_type|
account_type.resources :accounts
end
且慢,有一点变化要注意:
最后生成的是 account_type_accouts_path 而不是 account_path, 如果要还原成1.2的样子,需要这么写:
map.resources :account_types do |account_type|
account_type ...
Mock 一下Request.
module ActionController
class AbstractRequest
alias :subdomains_bak :subdomains
def subdomains
return @subdomains if @subdomains
old_subdomains_bak
end
def subdomains= (*domains)
@subdomains = domains
end
end
end
I extract the plugin from a real project http://code.google.com/p/railsjob/ to make test easier. I submit it to http://agilewebdevelopment.com/plugins/test_helpfulAnd write a short document -- sorry for my ugly English. :pTestHelpful===========This plugin provide the following helper method for test ...
CSS网页谁都会编,如何用最少的HTML和CSS进行布局就很少有人会了。比如这个 漂亮的表单布局,完全摒弃table。我的使用HTML的table的原则是:不用table!当CSS布局搞不定的时候,table是极有诱惑力的手段。它也是导致网页臃肿,可访问性极差的元凶。请强迫自己:不要用table标签!Sass用了以后再也不想写CSS文件了make_resourceful把Controller代码精简到极致。这也要归功于RESTfulMatrix test至少减少了我的三分之一的测试代码。我近期将release 一个相关的plugin, 来帮助人使用 matrix test.Edge rails ...
make_resourceful 0.1.0 released!
Overview of make_resourceful 0.1.0
Really very nice!
人外有人,天外有天。昨天把Peercode的视频看了一遍,真是太爽了。也看到了自己和国外的ROR技术高手之间的差距,我的学徒之路还很漫长。在欣赏高手纯属的技术的同时,还可以看到对代码一丝不苟的精神。凡是一点点重复的代码都会立刻被重构,一点点可以重用的部分都会被抽取。任何可以利用现有plugin的地方决不重新发明轮子。高手基本上都在英文社区,国内的英语水平严重限制了新技术的传播,真是一件很遗憾的事情。这也是我们这些Ruby on Rails先行者应该做的事情。
http://www.hamptoncatlin.com/assets/2007/5/21/make_resourceful.pdf
Rails中的Restful app并没有抽象CRUD代码,但是它给除了一种抽象CRUD的思考方式,Hampton Catlin则把它发挥到了极致。
上次rails爱好者聚会时,跟Robbin Lu讨论过测试覆盖率的问题。现有的覆盖率检测工具rcov只能检测代码覆盖率,不能检测逻辑覆盖率。比如说:
@post.nil ? "Invalid Post" : post.title
在@post不空的时候进行测试,这段代码的测试覆盖率就达到了100%,而@post.nil?为true的情况没有测试到,这时的100%就是唬人的。
heckle就是解决这种问题的工具,为我们这种测试驱动强迫症患者准备的探测器。它能够修改代码中的每一行,以及每一个分支,以确定修改之后至少有一个test failed。
看到 秀出你的Gem我也秀一下。
actionpack (1.13.3)
actionwebservice (1.2.3.6548, 1.2.3)
activerecord (1.15.3)
activeresource (0.9.0.6653)
activesupport (1.4.2)
builder (2.1.1)
capistrano (1.99.0)
cgi_multipart_eof_fix (2.1)
cmdparse (2.0.2)
daemons (1.0.6)
diff-lcs (1.1.2)
fastthread (1.0)
feedtools ...
不管你认不认同HAML,它正在获得关注。可以预料的是,一场口水战不可避免,就像当年Rails出世一样。而这场口水战之后,HAML将不得不流行起来。
再重申我以前的一个观点:在软件领域,技术不是用来解决问题的(软件领域几乎没有技术解决不了的问题),而是用来降低解决问题的成本的。
衡量一门技术的最终标尺是解决问题的成本,简洁的代码是降低成本的一条有效途径。
HTML或者rhtml可以解决的问题HAML同样可以解决,既然后者可以得到简洁的代码,那么取而代之何尝不可?
HAML 1.5以后的新特性要数sass最为吸引人了。昨天试用了一下,确实让css文件简洁了不少。支持常量和缩进嵌套。比如说scaffold生成的CSS:
.errorExplanation {
margin-bottom: 20px;
font-size: 10px;
}
.errorExplanation h3, .errorExplanation h2 {
background: #e33;
padding: 3px;
margin-bottom: 0;
font-size: 14px;
color: #ff ...
ThoughtWorks大力宣传JRuby,可是我是在想不通原因。
文章中说用JRuby的好处是“它使横跨他们目标平台的部署过程变得流畅”。这一点太搞笑了,Java就比Ruby部署流畅拉?部署过J2EE的朋友都清楚。
我完全不看好JRuby,XRuby之类的项目。放不下遗留系统,就继续用J2EE。新项目想用rails,就换成Ruby。拖泥带水没有好下场。
今天把一个程序切换到edge rails(revision=6688),发现了以下变化:
1. 需要安装 libopenssl-ruby,否则会有
`const_missing': uninitialized constant ActionController::Base::DEPRECATED_INSTANCE_VARIABLES (NameError)
2. URL中的" ; " 变成了“/”
assert_select "a[href=/pages/#{page.id};edit]"
要改为
assert_select "a[href=/pages/#{page.id} ...
- 21:03
- 浏览 (1695)
- 论坛浏览 (2166)
- 评论 (2)
- 分类: Ruby
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(case-fold-search t)
'(current-language- ...
这次聚会的目的虽然说是Rails源代码分析,我的活动内容却是和几位朋友扯蛋。
Kevin是活动的组织者,一德公司的开发者,对新技术保持着激情与活力。
蔡旺勤(www.caiwangqin.com)是Rails社区的先行者,曾效力于uuzone.com。蔡旺勤最近做了www.p1ay.cn,真是个好玩的域名。可惜曾经风靡一时的Web2.0社区uuzone竟毁于一旦。找不到盈利模式是互联网企业的通病。门户模式已经被互联网巨头垄断。保持创新,敏捷,是如今互联网企业生存的关键。今年还会有大量互联网企业死掉,这场战斗才刚刚开始。
博文视点的几位组织者非常 ...
http://code.google.com/p/ereader/
我自娱自乐的一个RSS Reader,本打算做成形再发布。但是最近工作比较忙,成形就不知道猴年马月了。
现在就当献丑公布一下,欢迎大家积极参与。
读了 http://www.javaeye.com/topic/38653,
想从代码方面谈一谈对Rails 1.2中的RESTful application 的感受。
我有User 和 Article两个Model,并且需要某一个User未读的所有Article。我的第一灵感就是声明一个has_and_belongs_to_many(好长的方法啊,每次都怕敲错)。
class User < ActiveRecord::Base
has_and_belongs_to_many :articles
end
class Article < ActiveRecord:: ...
- 15:15
- 浏览 (11505)
- 论坛浏览 (13831)
- 评论 (24)
- 分类: Ruby
ROR做Unit Test的速度有些让人失望,使用内存数据库能够大幅提高Unit Test的速度,提高开发效率,今天刚刚配上了SQLite3,下面作一个简要攻略。
假设你已经有一个rails的工程了,并且已经用SQLite3生成了一个development模式的数据库db/eplanner_development.db。
1. 安装SQLite-ruby
运行: gem install sqlite3-ruby
选择mswin32安装
2. 测试SQLite-ruby
require 'sqlite3'
db = SQLite3::Databa ...
最近学习Ruby的过程中对ruby 极高的开发效率深有感触,但是却也因为效率问题感到遗憾。但是我绝对没有贬低Java,吹捧ruby的意思。我认为未来的ruby和Java将会是双赢的局面。
首先Java的概念分为三个部分:
一门面向对象的语言
一套标准类库
Java虚拟机
我之所以说ruby比java开发高效主要是指Ruby语言上比较Java更简洁和精炼,其次是标准类库设计上要好得多。其实Java也是有很多优点的。
Is Java Dead?, java当中优秀的东西也很多,比如高性能的虚拟机,一些业务框架比如业务规则引擎,分布式事务等。如果JRuby大行其道,ruby将能够运行于Java ...
什么样的编程书我都见过,就是没见过集卡通,散文和编程于一身的教程。
《why's (poignant) guide to Ruby 》就是这样一本书。
一本编程书写的再好读久了也会觉得枯燥,但是配上卡通故事呢?
按照郑渊洁的话讲,这是一本适合0-100岁人读的书。
这本书还在写作中,期待正式版本会更精彩
http://shootout.alioth.debian.org/debian/benchmark.php?test=all&lang=ruby&lang2=javaclient
昨天作了一道Topcoder的题目,是一道典型的图搜索问题。由于正在学习Ruby,所以用Ruby实现了一下。
测试时发现规模小的时候比如100*100以下的图,运行时间还可以接受。而题目要求是500*500的图,这种规模下,运行时间已经超出了我的耐心。
一般来说,Topcoder的题目都是能够十多秒运行出结果的,否则就是没有做对。
本来以为是我的算法写的有问题,所以反复检查我的算法,并没有发现更有效率的途径。
开始怀疑ruby的性能问题,用Java把其中的堆数据结构重新实现了一次,然后和ruby实现的堆进行比较。
结果让人大吃一惊,竟然比ruby快20-30倍。我的测试并不 ...
最近加入圈子
最新评论
-
我的gem 列表
*** LOCAL GEMS ***actionmailer (2.1.0, 2 ...
-- by whq321 -
新文章都会发表在 dongbin ...
新网站太慢了
-- by lasfox -
北京:NibiruTech招聘Rail ...
由于被合伙人杨祥吉欺骗,我和Tony早已经离开了NibiruTech。拜托不要再 ...
-- by dongbin -
简评《叔本华人生哲学》
这是一本好书,但有一定程度的消极。心智不太成熟不是很适合看。个人还是很喜欢叔本华 ...
-- by erro -
在 FreeWheel 大力推广 T ...
bindong是我的TDD的启蒙者。加油!
-- by blackanger







评论排行榜