class Disco::Generators::ScaffoldGenerator

Constants

ACTIONS

Public Instance Methods

add_routes() click to toggle source
# File lib/generators/disco/scaffold/scaffold_generator.rb, line 24
def add_routes
  routing_code = ''
  class_path.each_with_index do |namespace, index|
    add_line_with_indent routing_code, (index + 1), "namespace :#{namespace} do"
  end
  add_line_with_indent routing_code, (class_path.length + 1), "resources :#{plural_name}"
  class_path.each_with_index do |_, index|
    add_line_with_indent routing_code, (class_path.length - index), 'end'
  end
  route routing_code[2..-1]
end

Protected Instance Methods

add_event_source_to_views() click to toggle source
# File lib/generators/disco/scaffold/scaffold_generator.rb, line 60
def add_event_source_to_views
  return if behavior == :revoke
  include_text = "<%= event_source('#{class_name}Projection') %>\n"
  prepend_to_file File.join('app/views', class_path, plural_file_name, 'index.html.erb'), include_text
  prepend_to_file File.join('app/views', class_path, plural_file_name, 'show.html.erb'), include_text
end
add_line_with_indent(target, indent, str) click to toggle source
# File lib/generators/disco/scaffold/scaffold_generator.rb, line 103
def add_line_with_indent(target, indent, str)
  target << "#{'  ' * indent}#{str}\n"
end
add_to_projections(action) click to toggle source
# File lib/generators/disco/scaffold/scaffold_generator.rb, line 67
    def add_to_projections(action)
      return if behavior == :revoke
      content = "\n
def #{projection_name_for_action(action)}(event)
  #{projection_body_for_action(action)}
end"
      indent(content) if namespaced?
      inject_into_file File.join('app/projections', class_path, "#{file_name}_projection.rb"), content,
                       after: /(\s)*include(\s)*ActiveProjection::ProjectionType/
    end
args_for_command_action(action) click to toggle source
# File lib/generators/disco/scaffold/scaffold_generator.rb, line 43
def args_for_command_action(action)
  args = [command_name_for_action(action)]
  args << 'id' unless action == 'create'
  args += attributes_names unless action == 'delete'
  args
end
command_name_for_action(action) click to toggle source
# File lib/generators/disco/scaffold/scaffold_generator.rb, line 78
def command_name_for_action(action)
  (class_path + ["#{action}_#{file_name}"]) * '/'
end
event_name_for_action(action) click to toggle source
# File lib/generators/disco/scaffold/scaffold_generator.rb, line 82
def event_name_for_action(action)
  (class_path + ["#{action}d_#{file_name}"]) * '/'
end
opts_for_command_action(action) click to toggle source
# File lib/generators/disco/scaffold/scaffold_generator.rb, line 50
def opts_for_command_action(action)
  opts = ["--event=#{event_name_for_action(action)}"]
  opts << "--processor=#{processor_name}" unless skip_processor?
  opts << "--model_name=#{class_name}"
  opts << '--unique_id' if action == 'create'
  opts << '--persisted' if action == 'update'
  opts << '--skip_model' if action == 'delete'
  opts
end
projection_body_for_action(action) click to toggle source
# File lib/generators/disco/scaffold/scaffold_generator.rb, line 90
def projection_body_for_action(action)
  case action
  when 'create'
    "#{class_name}.create! event.to_hash"
  when 'update'
    "#{class_name}.find(event.id).update! event.values"
  when 'delete'
    "#{class_name}.find(event.id).destroy!"
  else
    fail 'unknown action'
  end
end
projection_name_for_action(action) click to toggle source
# File lib/generators/disco/scaffold/scaffold_generator.rb, line 86
def projection_name_for_action(action)
  (event_name_for_action(action) + '_event').gsub('/', '__')
end