摘要: 原文:http://blog.hasmanythrough.com/2007/10/18/simpler-than-dirt-restful-dynamic-css 有时候我们需要根据用户偏好保持css style,然后根据不同用户加载不同的css 跟随着Rails 2.0的步伐,看看实现这个功能是多么简单 1,创建一个show.css.erb Java代码 p{color:<%=@user... 阅读全文
posted @ 2009-07-10 15:01 麦飞 阅读(241) 评论(0) 推荐(0) 编辑
摘要: Google是伸缩性的王者。Google一直的目标就是构建高性能高伸缩性的基础组织来支持它们的产品。 平台 Linux 大量语言:Python,Java,C++ 状态 在2006年大约有450,000台廉价服务器 在2005年Google索引了80亿Web页面,现在没有人知道数目 目前在Google有超过200个GFS集群。一个集群可以有1000或者甚至5000台机器。成千上万的机器从运行着5... 阅读全文
posted @ 2009-07-10 14:57 麦飞 阅读(232) 评论(0) 推荐(0) 编辑
摘要: Twitter是目前为止最大的Ruby on Rails应用,几个月间页面点击由0增长到几百万,现在的Twitter比今年月快了10000% 平台 Ruby on Rails Erlang MySQL Mongrel Munin Nagios Google Analytics AWStats Memcached 状态 成千上万的用户,真实数量保密 每秒钟600请求 每秒钟平均200-300个连... 阅读全文
posted @ 2009-07-10 14:55 麦飞 阅读(426) 评论(0) 推荐(0) 编辑
摘要: Rails虽然自带有Controller、Model、Integration的测试框架,但是用起来感觉很枯燥无味 所以,你应该试试RSpec+Mocha这道纯正的墨西哥菜 RSpec is a framework which provides programmers with a Domain Specific Language to describe the behaviour of Ruby... 阅读全文
posted @ 2009-07-10 14:44 麦飞 阅读(2596) 评论(0) 推荐(0) 编辑
摘要: 关键字: Rails OpenID 使用ruby-openid这个gem和open_id_authentication插件做OpenID认证 ruby代码 sudogeminstallruby-openid rubyscript\plugininstallopen_id_authentication rakeopen_id_authentication:db:createsudo gem inst... 阅读全文
posted @ 2009-07-10 14:29 麦飞 阅读(375) 评论(0) 推荐(0) 编辑
摘要: 关键字: rails restful authentication restful_authentication是Rails的一个认证插件,基于REST方式,适合RESTful的geek 安装: ruby代码 rubyscript/plugininstallhttp://svn.techno-weenie.net/projects/plugins/restful_authentication/ r... 阅读全文
posted @ 2009-07-10 14:26 麦飞 阅读(538) 评论(0) 推荐(0) 编辑
摘要: 关键字: set stack queue tree graph Set 初始化 require 'set' s1 = Set[3,4,5] arr = [3,4,5] s2 = Set.new(arr) s3 = Set.new(arr) {|x| x.to_s} 简单操作 x = Set[1,2,3] y = Set[3,4,5] a = x.union(y) # Set[1,2,3,4,... 阅读全文
posted @ 2009-07-10 14:16 麦飞 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 我们经常用rake db:migrate来做数据库迁移 我们还可以使用rake -T来列出可得到的rake任务 让我们在store这个Rails程序中创建一个自己的Rake任务 我们创建store/lib/tasks/ryanb.rake: ruby代码 task:greetdoputs"HelloWorld!"endtask:askdoputs"Howareyou?"endtask :greet... 阅读全文
posted @ 2009-07-10 14:02 麦飞 阅读(2126) 评论(0) 推荐(0) 编辑
摘要: Syntax SugarJava代码 ifnotversion.empty? returnversion.gsub('_','.') end unlessversion.empty? returnversion.gsub('_','.') endif not version.empty?return version.gsub('_', '.')endunless version.empty?ret... 阅读全文
posted @ 2009-07-10 12:17 麦飞 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 关键字: Rails Helper Rails默认为每个controller指定一个helper,所有的helper都放在app/helpers目录下 但是有些Helper我们希望是全局共享的,一般我们将这些Helper方法都扔在ApplicationHelper模块里 其实我们可以在app/helpers目录下建立我们自定义的Helper模块,如formatting_helper、path_he... 阅读全文
posted @ 2009-07-10 11:31 麦飞 阅读(540) 评论(0) 推荐(0) 编辑
摘要: 关键字: Rails url 设计更利于搜索的url是SEO的一个要点,我们来看看怎样将http://localhost/products/6转化成 http://localhost/products/6-gallon-of-milk或者http://localhost/products/gallon-of-milk 对第一种url,首先添加permalink字段: ruby代码 create_t... 阅读全文
posted @ 2009-07-10 11:27 麦飞 阅读(497) 评论(0) 推荐(0) 编辑
摘要: 关键字: Hacking 看下面一个场景: ruby代码 #product.rbclassProduct<ActiveRecord::Basevalidates_presence_of:pricedefself.find_orderedfind(:all,:order=>'name')endend#product_test.rbrequireFile.dirname(__FILE__)... 阅读全文
posted @ 2009-07-10 11:20 麦飞 阅读(244) 评论(0) 推荐(1) 编辑
摘要: 关键字: Rails test mocha 严重依赖fixtures的测试会变得十分脆弱,并且很难维护。 让我们来看看怎样写不使用fixtures的测试。 看cart/line_item的例子: ruby代码 classCart<ActiveRecord::Basehas_many:line_itemsdeftotal_weightline_items.to_s.sum(&:weig... 阅读全文
posted @ 2009-07-10 11:16 麦飞 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 关键字: rails generator 来看看怎样写自己的Generator吧 首先运行: ruby代码 rubyscript/generateruby script/generate console中的输出可以看到Rails默认的generate: ruby代码 InstalledGenerators Builtin:controller,integration_test,mailer,mig... 阅读全文
posted @ 2009-07-10 10:15 麦飞 阅读(512) 评论(0) 推荐(0) 编辑
摘要: 关键字: Rails Logger Rails在controller里自带了logger,我们可以用来做debug: ruby代码 defshow @cart=current_cart logger.debug"Helloworld!#{@cart.to_yaml}" #debug,info,warn,error,fatal enddef show @cart = current_cart log... 阅读全文
posted @ 2009-07-10 09:54 麦飞 阅读(2351) 评论(0) 推荐(1) 编辑
摘要: script/console还是非常有用的: ruby代码 p=Project.new ypp = Project.new y p y p可以打印对象信息 ruby代码 "foo".to_ Pro p.n"foo".to_ Pro p.n 代码提示,也比较好用 ruby代码 app.class app.get'/projects' app.flash app.assigns[:projects] ... 阅读全文
posted @ 2009-07-09 10:08 麦飞 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 一些RJS的tips ruby代码 #do_magic.rjs page[:reviews].toggle page[:review_name].value="thisiscool" page<<"if($('review_name').value=='foo')(" page.alert('hifoo!') page<<")" page.select("#reviewss... 阅读全文
posted @ 2009-07-09 10:02 麦飞 阅读(158) 评论(0) 推荐(1) 编辑
摘要: Rails里有些方法使用一个Hash作为最后一个可选的参数,如果对多个方法有同样的选项,我们可以使用with_options来减少冗余: ruby代码 #models/user.rb with_options:if=>:should_validate_password?do|user| user.validates_presence_of:password user.validates_co... 阅读全文
posted @ 2009-07-09 10:01 麦飞 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 默认每次save我们的Model时都会执行validation,但有时候我们希望有一定的条件触发时才执行validation: Java代码 #models/user.rb validates_presence_of:password,:if=>:should_validate_password? validates_presence_of:country,:on=>:create v... 阅读全文
posted @ 2009-07-09 09:58 麦飞 阅读(171) 评论(0) 推荐(0) 编辑
摘要: concat(string, unused_binding = nil) The preferred method of outputting text in your views is to use the <%="text" %> eRuby syntax. The regular puts andprint methods do not operate as expected i... 阅读全文
posted @ 2009-07-08 15:22 麦飞 阅读(320) 评论(0) 推荐(0) 编辑