Class: ExpressAdmin::Generators::ScaffoldGenerator

Inherits:
Rails::Generators::ScaffoldGenerator
  • Object
show all
Defined in:
lib/generators/express_admin/scaffold/scaffold_generator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#resource_classObject (readonly)

Returns the value of attribute resource_class.



7
8
9
# File 'lib/generators/express_admin/scaffold/scaffold_generator.rb', line 7

def resource_class
  @resource_class
end

#view_pathObject (readonly)

Returns the value of attribute view_path.



7
8
9
# File 'lib/generators/express_admin/scaffold/scaffold_generator.rb', line 7

def view_path
  @view_path
end

Instance Method Details

#add_menu_itemObject



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/generators/express_admin/scaffold/scaffold_generator.rb', line 41

def add_menu_item
  path = if namespaced?
    "#{controller_file_name}_path"
  else
    "admin_#{controller_file_name}_path"
  end
menu_entry = %Q(
  -
    title: '#{controller_file_name.titleize}'
    path: '#{path}'
)
  menu_path = Rails.root ? "#{Rails.root}/config/menu.yml": "config/menu.yml"
  if File.exists?(menu_path)
    inject_into_file menu_path, menu_entry, after: 'items:'
  end
end

#add_routeObject



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/generators/express_admin/scaffold/scaffold_generator.rb', line 27

def add_route
  route_path = Rails.root ? "#{Rails.root}/config/routes.rb": "config/routes.rb"
  if open(route_path).grep("scope '#{project_path}'").any?
    inject_into_file 'config/routes.rb', "        resources :#{controller_file_name}\n",
      after: "scope '#{project_path}' do\n"
  else
    admin_route = <<-EOD
  resources :#{controller_file_name}, except: [:edit]
EOD
    inject_into_file 'config/routes.rb', admin_route,
      after: "#{namespaced?}::Engine.routes.draw do\n"
  end
end

#copy_view_filesObject



16
17
18
19
20
# File 'lib/generators/express_admin/scaffold/scaffold_generator.rb', line 16

def copy_view_files
  available_views.each do |view|
    template "#{view}.html.et.erb", File.join(admin_view_path, "#{view}.html.et")
  end
end

#create_root_folderObject



12
13
14
# File 'lib/generators/express_admin/scaffold/scaffold_generator.rb', line 12

def create_root_folder
  empty_directory admin_view_path
end

#generate_controllerObject



22
23
24
25
# File 'lib/generators/express_admin/scaffold/scaffold_generator.rb', line 22

def generate_controller
  controller_file_path = File.join(["app/controllers", project_name, "#{controller_file_name}_controller.rb"].compact)
  template "controller/controller.rb", controller_file_path
end