2010-11-02 6 views
9

schrieb ich meinen eigenen Generator, von der Konsole seines ähnlichen Wie Generatoren aus Code aufrufen?

gestartet
rails generate ead_document TechnicalOpinion --document_type_id=1 

Es Modell und Migration erstellt. Ich möchte den Generator von meinem Controller ausführen, ohne den Befehl ruby ​​system zu verwenden. Gibt es eine Möglichkeit, das zu tun?

Antwort

15

Lösung auszuführen scheint ziemlich einfach zu sein:

Dieser Code in der Steuerung, da dies

Rails::Generators.invoke("ead_document", [@document_type.table_name.classify, "--document_type_id=#{@document_type.id}"]) 

ist das gleiche in Konsole

rails generate ead_document TechnicalOpinion --document_type_id=1 
+3

Könnten Sie bitte eine neue Frage zu der API-Sache öffnen, statt mit einer Frage zu antworten? Auf diese Weise haben wir die Fragen und Antworten durchsuchbar. –

0

in Ruby verschiedene Möglichkeiten gibt es Systembefehl

string = `ls` 
# runs command and returns its STDOUT as a string 
string = %x{ls} 
# ditto, alternative syntax 

system "ls" 
# runs command and returns its exit status; its STDOUT gets output to our STDOUT 

print `ls` 
#The same, but with back quotes 

exec "ls" 
# replace current process with another 

# call system command and read output asynchronously 
io = IO.popen('ls') 
# ... later 
io.each {|line| puts line} 
+2

Ich weiß, dass ich dies durch Ausführung des Befehlszeilenskripts tun kann. Ich möchte das aus Ruby-Code. Generator ist eine Klasse, also möchte ich eine Instanz dieser Klasse erstellen und eine Methode aufrufen. –