我有一个建立在Sinatra上的应用程序。它由几个必须运行以设置数据库等的rake任务支持... rakefile看起来像这样
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
对象变得未定义,因此每个任务都失败了。你知道如何解决这个问题吗?
答案 0 :(得分:1)
看起来未加载定义设置的文件。在config.ru
更改require 'my_sinatra_app'
require './my_sinatra_app'
。 see this question也是{{3}}。
答案 1 :(得分:0)
在构建sinatra应用程序时遇到了同样的问题 - 我想运行一些rake任务来执行数据库设置操作。
我最终做的是将数据库连接设置,连接和架构操作抽象到一个单独的类中。然后sinatra app和Rakefile可以访问这个类。
我的rakefile在这里:https://github.com/brighterplanet/status/blob/master/Rakefile#L6 从那里,查看lib / bp_status / db.rb