Class: Forest::ScaffoldGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Includes:
Rails::Generators::Migration
Defined in:
lib/generators/forest/scaffold/scaffold_generator.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.next_migration_number(dirname) ⇒ Object



14
15
16
17
# File 'lib/generators/forest/scaffold/scaffold_generator.rb', line 14

def self.next_migration_number(dirname)
  next_migration_number = current_migration_number(dirname) + 1
  ActiveRecord::Migration.next_migration_number(next_migration_number)
end

Instance Method Details

#create_controllerObject



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/generators/forest/scaffold/scaffold_generator.rb', line 45

def create_controller
  template 'admin_controller.rb', "app/controllers/admin/#{plural_name}_controller.rb"

  unless options.skip_public?
    template 'controller.rb', "app/controllers/#{plural_name}_controller.rb"
  end

  route_lines = []
  route_lines << "# TODO: sort these new admin routes"
  route_lines << "namespace :admin do"
  route_lines << "  resources :#{plural_name}"
  route_lines << "end\n"

  unless options.skip_public?
    route_lines << "# TODO: sort these new public routes"
    route_lines << "resources :#{plural_name}, only: [:index, :show]\n\n"
  end

  route route_lines.join("\n")
end

#create_migration_fileObject



39
40
41
42
43
# File 'lib/generators/forest/scaffold/scaffold_generator.rb', line 39

def create_migration_file
  set_local_assigns!
  validate_file_name!
  migration_template 'create_table_migration.rb', "db/migrate/create_#{table_name}.rb"
end

#create_model_fileObject



19
20
21
# File 'lib/generators/forest/scaffold/scaffold_generator.rb', line 19

def create_model_file
  template 'model.rb', File.join('app/models', "#{file_name}.rb")
end

#create_policyObject



66
67
68
# File 'lib/generators/forest/scaffold/scaffold_generator.rb', line 66

def create_policy
  template 'policy.rb', "app/policies/#{singular_name}_policy.rb"
end

#create_view_filesObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/generators/forest/scaffold/scaffold_generator.rb', line 23

def create_view_files
  admin_views.each do |view|
    filename = "#{view}.html.erb"
    template "views/admin/#{filename}", File.join("app/views/admin", plural_name, filename)
  end

  template "views/admin/index.json.jbuilder", File.join("app/views/admin", plural_name, 'index.json.jbuilder')

  unless options.skip_public?
    public_views.each do |view|
      filename = "#{view}.html.erb"
      template "views/public/#{filename}", File.join("app/views", plural_name, filename)
    end
  end
end