Я работаю над своим первым проектом 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.
Любая помощь будет принята с благодарностью!
РЕДАКТИРОВАТЬ:
См. мой ответ ниже.