Class: Admin::Generators::ScaffoldControllerGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Includes:
Rails::Generators::ResourceHelpers
Defined in:
lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb

Instance Method Summary collapse

Constructor Details

#initialize(args, *options) ⇒ ScaffoldControllerGenerator

:nodoc:



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb', line 34

def initialize(args, *options) #:nodoc:
  if args.length == 1
    blacklist = %w(created_at updated_at id)
    args[0].camelize.constantize.columns_hash.each do |k,v|
     unless blacklist.include?(k)
      string = "#{k}:#{v.type}"
      args << string
     end
    end 
  end  
  super
end

Instance Method Details

#copy_view_filesObject



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb', line 79

def copy_view_files
  available_views.each do |view|
    filename = filename_with_extensions(view)
    if bootstrap
      template_path = "views/#{handler}_bootstrap/#{filename}.erb"
    else
      template_path = "views/#{handler}/#{filename}.erb"
    end
    template template_path, File.join("app/views", prefix, controller_file_path, filename)
  end

  # I think there should be a better way to detect if jbuilder is in use
  if Gem::Specification.find_all_by_name('jbuilder').length >= 1
    %w(index show).each do |view|
      template "views/jbuilder/#{view}.json.jbuilder.erb", File.join("app/views", prefix, controller_file_path, "#{view}.json.jbuilder")
    end
  end
end

#create_controller_filesObject



51
52
53
54
55
56
57
58
59
# File 'lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb', line 51

def create_controller_files
  # I think there should be a better way to detect if jbuilder is in use
  # If you know it, please let me know
  if Gem::Specification.find_all_by_name('jbuilder').length >= 1
    template "controllers/jbuilder/controller.rb.erb", File.join('app/controllers', prefix, class_path, "#{controller_file_name}_controller.rb")
  else
    template "controllers/railties/controller.rb.erb", File.join('app/controllers', prefix, class_path, "#{controller_file_name}_controller.rb")
  end
end

#create_layoutObject



61
62
63
64
65
# File 'lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb', line 61

def create_layout
  copy_file "admin.css", "app/assets/stylesheet/#{prefix}/#{prefix}.css"
  copy_file "admin.js", "app/assets/javascript/#{prefix}/#{prefix}.js"
  template "layout.html.erb", "app/views/layouts/#{prefix}.html.erb"
end

#create_root_folderObject



75
76
77
# File 'lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb', line 75

def create_root_folder
  empty_directory File.join("app/views", prefix, controller_file_path)
end

#create_test_filesObject



67
68
69
# File 'lib/generators/admin/scaffold_controller/scaffold_controller_generator.rb', line 67

def create_test_files
  template "tests/test_unit/functional_test.rb.erb", File.join("test/controllers", prefix, controller_class_path, "#{controller_file_name}_controller_test.rb")
end