文章列表
不得不承认,Rails的Active Record非常好用。用后感觉Java界的Hibernate,iBatis等等在易用性上根本不值一提。
可能大家当初都只把AR用于WEB程序,其实它也可以用于非WEB程序,而且易用性没有丝毫改变。
例:使用AR连接sqllite数据库并查找Order表第一条记录并修改name.
法一:新建一个Ruby文件:如demo.rb
require "rubygems"
require "active_record"
ActiveRecord::Base.establish_connection(:adapter = ...
非常喜欢Nokogiri的简洁,尤其是根据css和xpath查找元素。有时又觉得Nokogiri太简洁了,连抓取失败重试的机制都没有。可惜在景德镇,网络经常丢包,真是郁闷。
所以写这段代码,以后肯定常用。
begin
doc = Nokogiri::HTML(open(url).read.strip)
rescue Exception => ex
log.error "Error: #{ex}"
retry
end
Tips: retry可以跳回begin
这段代码将打印log并一直重试直到成功。估计这样写不大合适,因为一旦发生一个小错误 ...
今天就遇到一个问题,用Find可以,但用Where会报错,情形是这样的:
class People < ActiveRecord::Base
attr_accessor :level #为model添加一个自定义变量
def level
weight%100
end
end
如果调用代码是这样的
p = People.find(:all, :conditions => "sex=boy")
p.level
执行不会报错。
p = People.where(:sex == 'boy')
...
使用mysql时,integer最大是2147483647(10位)。如果想存储更大的数字就要使用BIGINT。比如现在QQ号已经有11位,很快就12位了。
搜索好久一直没找到好的办法,有人说要装插件,但我看了一下插件很久没更新了。后来看了下mysql_adapter源码找到答案,源码片段如下:
# activerecord-3.0.9/lib/active_record/connection_adapters/mysql_adapter.rb
# Maps logical Rails types to MySQL-specific data types.
def type_to_sql( ...