Class: ExpressAdmin::Generators::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/express_admin/install/install_generator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#project_classObject (readonly)

Returns the value of attribute project_class.



5
6
7
# File 'lib/generators/express_admin/install/install_generator.rb', line 5

def project_class
  @project_class
end

#project_nameObject (readonly)

Returns the value of attribute project_name.



5
6
7
# File 'lib/generators/express_admin/install/install_generator.rb', line 5

def project_name
  @project_name
end

Instance Method Details

#add_express_admin_menuObject



73
74
75
76
77
78
# File 'lib/generators/express_admin/install/install_generator.rb', line 73

def add_express_admin_menu
  if File.exists?(engine_path)
    inject_into_file engine_path, "    include ::ExpressAdmin::Menu::Loader\n",
      after: "class Engine < ::Rails::Engine\n"
  end
end

#create_admin_layoutObject



22
23
24
25
# File 'lib/generators/express_admin/install/install_generator.rb', line 22

def create_admin_layout
  template 'views/layouts/admin.html.et',
    File.join('app/views/layouts', @project_name, 'admin.html.et')
end

#create_application_cssObject



39
40
41
42
# File 'lib/generators/express_admin/install/install_generator.rb', line 39

def create_application_css
  template 'assets/stylesheets/application.css',
    File.join('app/assets/stylesheets', @project_name, 'admin.css')
end

#create_application_jsObject



34
35
36
37
# File 'lib/generators/express_admin/install/install_generator.rb', line 34

def create_application_js
  template 'assets/javascripts/application.js',
    File.join('app/assets/javascripts', @project_name, 'admin.js')
end

#create_common_filesObject



7
8
9
# File 'lib/generators/express_admin/install/install_generator.rb', line 7

def create_common_files
  @project_name = destination_root.split('/').last
end

#create_custom_devise_loginObject



27
28
29
30
31
32
# File 'lib/generators/express_admin/install/install_generator.rb', line 27

def 
  if defined?(Devise)
    template 'views/devise/sessions/new.html.et', 
      File.join('app/views/devise/sessions/new.html.et')
  end
end

#create_installerObject



11
12
13
14
15
16
17
18
19
20
# File 'lib/generators/express_admin/install/install_generator.rb', line 11

def create_installer
  @project_class = @project_name.camelize

  template 'install/installer.rb.erb',
    File.join('lib/generators', @project_name, 'install', 'install_generator.rb')
  template 'install/USAGE', File.join('lib/generators', @project_name, 'install', 'USAGE')
  empty_directory File.join('lib/generators', @project_name, 'install', 'templates')
  template 'install/installer_test.rb.erb',
    File.join('test/lib/generators', @project_name, 'install', 'install_generator_test.rb')
end

#create_menuObject



69
70
71
# File 'lib/generators/express_admin/install/install_generator.rb', line 69

def create_menu
  template 'config/menu.yml.erb', File.join('config/menu.yml')
end

#insert_mount_pointObject



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/generators/express_admin/install/install_generator.rb', line 44

def insert_mount_point
  @project_class = @project_name.camelize

  if File.exists?(engine_path)
    inject_into_file engine_path,
      "    #{@project_class}::Engine.config.#{@project_name}_mount_point = '/'\n",
      after: "class Engine < ::Rails::Engine\n"
  end

  empty_directory File.join('config', 'initializers')
  if File.exists?(engine_path)
    create_file File.join('config', 'initializers', "mount_engine.rb"),
      "ExpressAdmin::Routes.register do |routes|\n  routes.mount #{@project_class}::Engine, at: #{@project_class}::Engine.config.#{@project_name}_mount_point\nend\n"
  end
end

#precompile_assetsObject



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/generators/express_admin/install/install_generator.rb', line 80

def precompile_assets
  assets = <<-'EOD'
    initializer :assets do |config|
engine_assets_path = File.join(File.dirname(__FILE__), '..', '..', 'app', 'assets')
all_assets = Dir.glob File.join(engine_assets_path, 'stylesheets', '**', '*.css*')
all_assets += Dir.glob File.join(engine_assets_path, 'javascripts', '**', '*.js*')
all_assets.each {|path| path.gsub!("#{engine_assets_path}/stylesheets/", '')}
all_assets.each {|path| path.gsub!("#{engine_assets_path}/javascripts/", '')}
Rails.application.config.assets.precompile += all_assets
    end
EOD
  if File.exists?(engine_path)
    inject_into_file engine_path, assets, after: "class Engine < ::Rails::Engine\n"
  end
end

#require_express_adminObject



60
61
62
63
64
65
66
67
# File 'lib/generators/express_admin/install/install_generator.rb', line 60

def require_express_admin
  @project_class = @project_name.camelize

  if File.exists?(engine_path)
    inject_into_file engine_path, "require 'express_admin'\n",
      before: "module #{@project_class}"
  end
end