Adrian Serafin
Adrian Serafin

Reputation: 7705

How to invoke generators from code?

I wrote my own generator, from console its launched like this

rails generate ead_document TechnicalOpinion --document_type_id=1

It creates model and migration. I want to execute generator from my controller without using ruby system command. Is there any way to do that?

Upvotes: 13

Views: 3315

Answers (1)

Adrian Serafin
Adrian Serafin

Reputation: 7705

Solution appears to be pretty simple:

This code in controller

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

is the same as this in console

rails generate ead_document TechnicalOpinion --document_type_id=1

In case you want to use it outside a controller, you may also want to require it explicitely:

require 'rails/generators'

Upvotes: 22

Related Questions