2013-06-25 11 views
9

Nella nostra app rails 3.2.12, c'è uno rake task creato sotto lib/tasks. Lo rake task deve chiamare un metodo find_config() che risiede in un altro modulo di rotaie authentify (il modulo non è in/lib /). Possiamo include Authentify in rake task e rendere disponibile il metodo find_config() per chiamare l'attività rake?È possibile includere moduli nell'attività rake e rendere disponibili i suoi metodi per l'attività nell'app rails?

Ecco ciò che vorremmo fare in rake task:

include Authentify 
config = Authentify::find_config() 

Grazie per i commenti.

+2

perché non si crea una classe per includere il modulo e si chiama il metodo utilizzando tale classe? – usha

+0

Il metodo che deve essere chiamato dal rake test deve essere chiamato nel modulo. Il metodo è in modulo e viene utilizzato anche da altro codice. – user938363

+1

Hai provato a fare il comando 'include Authentify' in un'attività rake per testarlo? Stai chiedendo se può essere fatto. Provalo. In teoria, qualsiasi cosa l'applicazione rails può fare da un punto di vista Ruby, il compito rake dovrebbe anche avere accesso a ... Penso. – lurker

risposta

16
require 'modules/module_name' 

include ModuleName 

namespace :rake_name do 

desc "description of rake task" 

    task example_task: :environment do 

    result = ModuleName::method_name() 


    end #end task 


end 

questo funziona per me. Dal momento che il tuo modulo non è in/lib potresti dover modificare il modo in cui è necessario. Ma dovrebbe funzionare. Spero che sia d'aiuto.

+0

Piccolo suggerimento. La directory di lavoro 'require' è' lib' quindi non dovresti includerla nel tuo percorso. Ad esempio, se stai importando un modulo in 'lib/tasks/import/lookup.rb', dovrai usare' require 'tasks/import/lookup''. –

Problemi correlati