2010-12-04 46 views
0

J'ai une application construite sur Sinatra. Elle est soutenue par plusieurs tâches de râteau qui doivent être exécutées à la base de données de configuration, etc ... Le rakefile ressemble à ceRake tâches avec le contexte Sinatra sur Heroku

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) 

fonctionne bien sur ma machine de développement. Maintenant, le problème est qu'après le déploiement dans Heroku, l'objet settings devient indéfini, donc chaque tâche échoue. Avez-vous une idée de comment résoudre ce problème?

Répondre

1

Il semble que le fichier dans lequel vos paramètres sont définis ne soit pas chargé. Dans votre config.ru, remplacez require 'my_sinatra_app' par require './my_sinatra_app'. Aussi see this question.

0

J'ai rencontré ce même problème lors de la construction d'une application sinatra - je voulais exécuter certaines tâches de rake pour effectuer des opérations de configuration db. Ce que j'ai fini par faire est d'abstraire les paramètres de connexion à la base de données, les opérations de connexion et de schéma dans une classe distincte. Cette classe est ensuite accessible par l'application sinatra et le Rakefile.

Mon rakefile est ici: https://github.com/brighterplanet/status/blob/master/Rakefile#L6 À partir de là, consultez lib/bp_status/db.rb