Class: ViewModelsGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/rails/generators/view_models/view_models_generator.rb

Overview

A generator for view models

Instance Method Summary collapse

Instance Method Details

#create_model(class_name, file_name) ⇒ Object

Create the view model files for the view models given



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/rails/generators/view_models/view_models_generator.rb', line 33

def create_model class_name, file_name
  # ViewModels
  #
  create_file "app/view_models/#{file_name}.rb", <<-FILE
class ViewModels::#{class_name} < ViewModels::Project

# model_reader :icon, :filter_through => [:h]

end
  FILE

  # Specs
  #
  
  create_file "spec/view_models/#{file_name}_spec.rb", <<-FILE
require 'spec_helper'

describe ViewModels::#{class_name} do

end
  FILE

end

#create_view_file(view, file_name) ⇒ Object



26
27
28
29
# File 'lib/rails/generators/view_models/view_models_generator.rb', line 26

def create_view_file view, file_name
  create_file "app/views/#{file_name.pluralize}/_#{view}.html.#{options.views.downcase}", File.read(File.join(File.expand_path('../templates', __FILE__), "/views/_empty.html.#{options.views.downcase}"))
  
end

#create_views(file_name) ⇒ Object

Create views corresponding to view models



20
21
22
23
24
# File 'lib/rails/generators/view_models/view_models_generator.rb', line 20

def create_views file_name
  %W(list_item main_item collection list pagination table).each do |view|
    create_view_file view, file_name
  end
end

#generate_view_modelsObject

Generate the view models given



10
11
12
13
14
15
16
# File 'lib/rails/generators/view_models/view_models_generator.rb', line 10

def generate_view_models
  file_name = class_name.underscore
  
  create_model class_name, file_name
  
  create_views file_name if options.views.present?
end