【发布时间】:2010-06-20 01:02:10
【问题描述】:
我正在处理我的第一个 Sinatra/CouchDB 项目,但遇到了一个我无法解释的错误。
这是我的机架 (config.ru) 文件:
require 'rubygems'
require 'couchrest'
require 'patina'
set :environment, :development
set :root, File.dirname(__FILE__)
set :run, false
FileUtils.mkdir_p 'log' unless File.exists?('log')
log = File.new("log/sinatra.log", "a")
$stdout.reopen(log)
$stderr.reopen(log)
set :db, CouchRest.database!("http://127.0.0.1:5984/test")
run Sinatra::Application
这是应用文件 (patina.rb):
require 'rubygems'
require 'sinatra'
require 'couchrest'
require 'haml'
class Article < CouchRest::ExtendedDocument
use_database settings.db
property :title
timestamps!
view_by :title
end
get '/' do
@db = settings.db
haml :index
end
如果没有patina.rb 中的类定义,路由会返回一个显示@db 属性的页面,正如我所期望的那样。但是,当我将类定义添加到 patina.rb 时,我收到“无法启动 Ruby (Rack) 应用程序”错误消息。
显然这与我的类定义有关,但我无法弄清楚问题出在哪里,并且错误消息似乎对我没有帮助。
此外,我实际上更喜欢将类定义放在单独的文件 (Article.rb) 中,但我不知道如何在我的 Sinatra 应用程序的上下文中执行此操作。
任何帮助将不胜感激!
编辑:
请看下面我的回答。
【问题讨论】: