Class: RailsEngineToolkit::Actions::NewEngineModel

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_engine_toolkit/actions/new_engine_model.rb

Instance Method Summary collapse

Constructor Details

#initialize(argv, stdout:, root:, stdin: nil, stderr: nil) ⇒ NewEngineModel

Returns a new instance of NewEngineModel.



6
7
8
9
10
11
12
13
14
# File 'lib/rails_engine_toolkit/actions/new_engine_model.rb', line 6

def initialize(argv, stdout:, root:, stdin: nil, stderr: nil)
  @engine_name = argv.shift
  @generator_args = argv
  @stdout = stdout
  @stdin = stdin
  @stderr = stderr
  @root = Pathname(root)
  @project = Project.new(@root)
end

Instance Method Details

#callObject

Raises:



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/rails_engine_toolkit/actions/new_engine_model.rb', line 16

def call
  @project.validate_root!
  raise ValidationError, 'Engine name is required.' if @engine_name.to_s.empty?
  raise ValidationError, 'Model name is required.' if @generator_args.empty?

  engine_path = @project.engine_path(@engine_name)
  raise ValidationError, "Engine does not exist: #{engine_path}" unless engine_path.directory?

  Utils.safe_system('bin/rails', 'g', 'model', *@generator_args, chdir: engine_path)
  UpdateEngineReadme.new([@engine_name], stdin: nil, stdout: @stdout, stderr: nil, root: @root).call
  @stdout.puts("Model created inside #{engine_path}")
end