2010-12-04 52 views
0

我有一个在Sinatra上构建的应用程序。它是由必须运行设置数据库等几个rake任务支持...的Rake文件看起来像这样Heroku上的Sinatra上下文的Rake任务

require 'rubygems' 
require 'rake' 
require 'rake/clean' 
require 'rake/gempackagetask' 
require 'rake/rdoctask' 
require 'rake/testtask' 
require File.dirname(__FILE__) + '/lib/config.rb' 
require File.dirname(__FILE__) + '/lib/autoloads.rb' 

@db = Mongo::Connection.from_uri(settings.db_uri).db(settings.db_uri[Regexp.new('[^/]*$')]) 
@cache = MemCache.new(settings.cache_server) 

作品以及我的机器上。现在,问题在于,在部署到Heroku之后,settings对象变得未定义,因此每个任务都失败。你有什么想法如何解决这个问题?

回答

1

它看起来像您的设置被定义的文件没有被加载。在您的config.ru更改require 'my_sinatra_app'require './my_sinatra_app'。还有see this question

0

我在构建sinatra应用程序时遇到了同样的问题 - 我想运行一些rake任务来执行db安装操作。

我最终做的是将数据库连接设置,连接和模式操作抽象为一个单独的类。这个类可以通过sinatra应用程序和Rakefile访问。

我的Rake文件是在这里:https://github.com/brighterplanet/status/blob/master/Rakefile#L6 从那里,检查出的lib/bp_status/db.rb