2013-06-25 4 views
9

In unseren rails 3.2.12 App gibt es eine rake task unter lib/tasks erstellt. Die rake task braucht eine Methode find_config() aufzurufen, die in einem anderen Modul befindet Schienen authentify (Modul nicht unter/lib /). Können wir include Authentify in rake task und machen Methode find_config() in der Rake Aufgabe zu nennen?Ist es möglich, Module in Rake-Task zu integrieren und ihre Methoden für die Aufgabe in der App rails verfügbar zu machen?

Hier ist, was wir in der rake task tun möchte:

include Authentify 
config = Authentify::find_config() 

Danke für die Kommentare.

+2

, warum Sie nicht eine Klasse umfassen das Modul erstellen und die Methode aufrufen? – usha

+0

Die Methode, die vom Rake-Test aufgerufen werden muss, muss im Modul aufgerufen werden. Die Methode ist im Modul und wird auch von anderem Code verwendet. – user938363

+1

Haben Sie tatsächlich versucht, das 'include Authentify' in einer Rake-Task zu testen? Sie fragen, ob es getan werden kann. Probier es einfach. Theoretisch kann alles, was die Rails-Anwendung von einem Ruby-Standpunkt aus tun kann, die Rake-Aufgabe auch auf ... Ich denke. – lurker

Antwort

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 

Das funktioniert für mich. Da Ihr Modul nicht in/lib ist, müssen Sie möglicherweise bearbeiten, wie es benötigt wird. Aber es sollte funktionieren. Ich hoffe es hilft. Verwendung dieser Klasse

+0

Kleiner Tipp. 'require's Arbeitsverzeichnis ist' lib', also solltest du das nicht in deinen Pfad aufnehmen. Zum Beispiel, wenn Sie ein Modul in 'lib/Aufgaben/Import importieren/lookup.rb' dann würden Sie' require ‚Aufgaben/Import/lookup''. –