Рейк-задания с контекстом Синатры на Heroku - PullRequest
0 голосов
/ 04 декабря 2010

У меня есть приложение, созданное на Синатре.Он поддерживается несколькими задачами 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 становится неопределенным, поэтому каждая задача завершается неудачно.У вас есть идеи, как решить эту проблему?

Ответы [ 2 ]

1 голос
/ 06 декабря 2010

Похоже, файл, в котором определены ваши настройки, не загружается.В вашем config.ru измените require 'my_sinatra_app' на require './my_sinatra_app'.Также см. Этот вопрос .

0 голосов
/ 21 декабря 2010

Я столкнулся с той же проблемой при создании приложения sinatra - я хотел запустить некоторые грабли для выполнения операций настройки БД.

Я закончил тем, что абстрагировал настройки соединения с базой данных, соединения и операции схемы в отдельный класс. Затем этот класс доступен приложению sinatra и Rakefile.

Мой рейкфайл находится здесь: https://github.com/brighterplanet/status/blob/master/Rakefile#L6 Оттуда, проверьте lib / bp_status / db.rb

...