Использование партиалов при создании пользовательских генераторов - PullRequest
1 голос
/ 09 марта 2020

Я строю собственные генераторы для генерации моделей рельсов. Генератор может использовать один из множества шаблонов для построения одной модели. Некоторые логики c одинаковы во всех шаблонах.

Можно ли извлечь некоторые части шаблонов в партиалы?

Вот пример того, что я хочу сделать:

lib/generators/custom_model/custom_model_generator.rb

class CustomModelGenerator < Rails::Generators::Base
  source_root File.expand_path('../templates', __FILE__)
  argument :model_name, type: :string
  argument :model_type, type: :string
  ...

  include GeneratorsHelper

  def generate_model
    template_path =
      case model_type
      when 'car' then 'car_model.rb.erb'
      when 'plane' then 'plane_model.rb.erb'
      ...
      end

    template template_path, "app/models/#{model_name}.rb"
  end
end

Вот один шаблон:

lib/generators/custom_model/templates/car_model.rb.erb

class <%= model_name.camelcase %> < ApplicationRecord
  def start
    puts "Vroum!"
  end
end

Метод #start также будет использоваться в другом генераторы моделей. Я хотел бы извлечь это что-то вроде частичного. Это возможно?

...