2011-03-28 14 views
6

Estoy intentando agregar algunas tareas de rake básicas a la gema de orientdb que me permitirán crear la base de datos, crear migraciones de bases de datos y migrar la base de datos, de forma similar a las migraciones de rieles.¿Cómo importo tareas de rake desde una gema al usar Sinatra?

Cuando tuve las tareas de rake localmente, obtuve las configuraciones db:, db: create, y db: create_migration para trabajar, pero después de ponerlas en la gema no puedo entender cómo acceder a ellas desde el Aplicación Sinatra cuando se usa "rake".

Tengo la sensación de que a) no estoy organizando los archivos en la gema correctamente y/o b) no estoy llamando correctamente desde la aplicación Sinatra.

El estado actual de mi repositorio en forma de horquilla está en https://github.com/ricaurte/orientdb-jruby

pongo el archivo para las tareas en lib/orientdb/tareas/database.rake =>https://github.com/ricaurte/orientdb-jruby/blob/master/lib/orientdb/tasks/database.rake

Sinatra App Rakefile

APPLICATION_ROOT = File.expand_path('..', __FILE__) 

require 'rake' 
require 'orientdb' 
#import "orientdb/tasks/database.rake" 

task :environment do 
    require File.expand_path(File.join(*%w[ config environment ]), File.dirname(__FILE__)) 
end 

config/entorno

require "rubygems" 
require "bundler" 
Bundler.setup 

require 'sinatra' 
require "orientdb" 

ruby: jruby 1.6.0 (ruby 1.9.2 patchlevel 136) (2011-03-24 5f5278c) (OpenJDK 64-Bit Server VM 1.6.0_20) [linux-amd64-java]

Respuesta

11

Descubrí cómo hacerlo después de más de 10 horas tratando de resolverlo y tuve que parchear a Rake en el proceso. He enviado este parche: https://github.com/jimweirich/rake/pull/28

También escribí una entrada de blog que contiene el código parcheado: http://www.justinidea.com/2011/03/proposed-modification-to-rakes-discovery-of-tasks.html

[ACTUALIZACIÓN]

también encontré otra forma que no requiere un parche rastrillo , vaya usted a saber ... todo lo que tenía que hacer era crear un tasks.rb y lo requiera dentro de la Rakefile, pero para hacer este trabajo que tenía que hacer que se vea como esto:

require 'rake' 
require 'bundler' 
Bundler.setup 
require 'orientdb' 
require 'orientdb/tasks' 

I st creo que el parche de rake es muy bueno. :)

[ACTUALIZACIÓN 2]

Por el momento hasta que la solicitud de extracción es aceptado por el equipo de rastrillo, he creado una gema llamada alltasks que cargarán todas las tareas de rastrillado las gemas en su Gemfile y sus dependencias contienen.

https://github.com/ricaurte/alltasks

+4

Niza, creo que se merece una insignia autodidacta para eso. Con suerte, otras dos personas estarán de acuerdo conmigo. Por cierto, puedes aceptar tu propia respuesta y creo que también sería socialmente aceptable en este caso. –

+0

Gracias mu! Tengo que esperar hasta mañana para aceptar mi propia respuesta y lo haré luego. – ricaurte

Cuestiones relacionadas