2010-11-02 12 views
9

escribí mi propio generador, desde la consola de su marcha como esta¿Cómo invocar generadores desde el código?

rails generate ead_document TechnicalOpinion --document_type_id=1 

Se crea el modelo y la migración. Quiero ejecutar el generador desde mi controlador sin usar el comando del sistema ruby. ¿Hay alguna forma de hacer eso?

Respuesta

15

solución parece ser bastante simple:

Este código en el controlador de

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

es la misma que esta en consola

rails generate ead_document TechnicalOpinion --document_type_id=1 
+3

¿Podría por favor abrir una nueva pregunta acerca de la API en lugar de responder con una pregunta? De esa forma tenemos las preguntas y respuestas investigables. –

0

en rubí hay varias maneras diferentes para ejecutar comandos del sistema

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

Sé que puedo hacer esto al ejecutar un script de línea de comandos. Quiero esto del código ruby. Generator es una clase, así que quiero hacer una instancia de esta clase y llamar a algún método sobre ella. –

Cuestiones relacionadas