2012-04-12 75 views
2

我想用一个纯Ruby数据库(kirbybase​​)与西纳特拉在一起,在Ruby中,我们将有这样的事情,以显示一个记录:西纳特拉与纯Ruby数据库

require 'kirbybase' 
db = KirbyBase.new 
cars_tbl= db.get_table(:cars) 
ferrari = cars_tbl.select { |r| r.recno == 9 } 
puts ferrari 

或所有记录

results = cars_tbl.select(:name,:race,:color,:recno).sort(+:color) 

什么是将这与Sinatra集成而不混淆“rubysh”kirbybase语法的最佳方法?

回答

2

要拍摄叶约sinatra-redis的书,你可以做这样的事情:

require 'sinatra' 
require 'kirbybase' 

helpers do 
    # Create a helper to allow easier access to settings.kirby 
    # Name it whatever you want 
    def kirby 
    settings.kirby 
    end 
end 

configure do 
    # Initialise kirby 
    set :kirby, KirbyBase.new 
end 

get '/' do 
    cars_tbl = kirby.get_table(:cars) 
    ferrari = cars_tbl.select { |r| r.recno == 9 } 
    "Car is #{ferrari}" 
end 
+0

感谢这一点,但它返回一个错误服务器:网站devnull $红宝石sinatrakb.rb /库/Ruby/Gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:1197:in'define_method':试图从/ Library/Ruby/Gems创建没有块的Proc对象(ArgumentError) \t /1.8/gems/sinatra-1.3.2/lib/sinatra/base.rb:1197:in'generate_method' \t from /Library/Ruby/Gems/1.8/gems/sinatra-1.3.2/lib/sinatra/base .RB: 1206:在'编译!'中 – devnull 2012-04-12 20:17:32

+0

它的作品,但在你的最后一点,它应该得到'/'做:)赞赏你的善意帮助!哇,这很容易:)得爱Sinatra :)有什么简单的方法来将kirbybase嵌入到gem中,默认包括sinatra和db引擎? – devnull 2012-04-12 20:27:59

+0

糟糕!这就是你没有测试你的代码,我会编辑它。 我不太确定你的意思,我很害怕。包括Sinatra和数据库引擎到哪里? – canton7 2012-04-13 09:35:06