【问题标题】:Rake tasks with Sinatra context on Heroku在 Heroku 上使用 Sinatra 上下文 Rake 任务
【发布时间】:2010-12-04 19:40:18
【问题描述】:

我有一个基于 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 对象变得未定义,因此每个任务都失败了。你知道如何解决这个问题吗?

【问题讨论】:

    标签: ruby scope rake sinatra


    【解决方案1】:

    您的设置所定义的文件似乎没有被加载。在您的 config.ru 中将 require 'my_sinatra_app' 更改为 require './my_sinatra_app' 。还有see this question

    【讨论】:

      【解决方案2】:

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

      我最终做的是将数据库连接设置、连接和模式操作抽象到一个单独的类中。然后这个类就可以被 sinatra 应用和 Rakefile 访问了。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-30
        • 1970-01-01
        • 2015-10-04
        相关资源
        最近更新 更多