class Erd::GenaratorRunner
Public Class Methods
execute_generate_migration(name, options = nil)
click to toggle source
runs ‘rails g migration [name]` @return generated migration filename
# File lib/erd/generator_runner.rb, line 17 def execute_generate_migration(name, options = nil) result = execute_generator 'migration', name, options result.last.last end
execute_generate_model(name, options = nil)
click to toggle source
runs ‘rails g model [name]` @return generated migration filename
# File lib/erd/generator_runner.rb, line 10 def execute_generate_model(name, options = nil) result = execute_generator 'model', name, options result.flatten.grep(%r(/db/migrate/.*\.rb)) end
Private Class Methods
execute_generator(type, name, options = nil)
click to toggle source
# File lib/erd/generator_runner.rb, line 34 def execute_generator(type, name, options = nil) overwriting_argv([name, options]) do Rails::Generators.configure! Rails.application.config.generators result = Rails::Generators.invoke type, [name, options], :behavior => :invoke, :destination_root => Rails.root raise ::Erd::MigrationError, "#{name}#{"(#{options})" if options}" unless result result end end
overwriting_argv(value, &block)
click to toggle source
a dirty workaround to make rspec-rails run
# File lib/erd/generator_runner.rb, line 24 def overwriting_argv(value, &block) original_argv = ARGV.dup ARGV.clear ARGV.concat value block.call ensure ARGV.clear ARGV.concat original_argv end