Class: IronAdmin::Generators::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- IronAdmin::Generators::InstallGenerator
- Defined in:
- lib/generators/iron_admin/install/install_generator.rb
Overview
Generator for installing IronAdmin into a Rails application.
This generator sets up the basic structure needed to use IronAdmin:
- Creates the app/iron_admin directory for resource definitions
- Adds an initializer with default configuration
- Creates a sample dashboard
- Mounts the engine at /admin in routes
- Adds the Tailwind CSS import for engine styles
Constant Summary collapse
- TAILWIND_CSS_CANDIDATES =
Candidate Tailwind entry points, in priority order. Covers tailwindcss-rails 4.x layout (
app/assets/tailwind/application.css) and the tailwindcss-rails 3.x / cssbundling-rails layout (app/assets/stylesheets/application.tailwind.css). %w[ app/assets/tailwind/application.css app/assets/stylesheets/application.tailwind.css ].freeze
Instance Method Summary collapse
-
#add_route ⇒ void
Adds the engine mount to config/routes.rb.
-
#add_tailwind_import ⇒ void
Adds the IronAdmin CSS import to the Tailwind application stylesheet.
-
#copy_dashboard ⇒ void
Copies the dashboard template.
-
#copy_initializer ⇒ void
Copies the initializer template with default configuration.
-
#create_iron_admin_directories ⇒ void
Creates the directory structure for resource and dashboard definitions.
Instance Method Details
#add_route ⇒ void
This method returns an undefined value.
Adds the engine mount to config/routes.rb.
43 44 45 |
# File 'lib/generators/iron_admin/install/install_generator.rb', line 43 def add_route route 'mount IronAdmin::Engine => "/admin"' end |
#add_tailwind_import ⇒ void
This method returns an undefined value.
Adds the IronAdmin CSS import to the Tailwind application stylesheet.
This import is required so the Tailwind compiler scans the engine's views and components for CSS utility classes. Without it, the admin panel renders unstyled.
If no known Tailwind entry point is detected (e.g. the host added
gem "iron_admin" after rails new --skip-bundle, before the
tailwindcss installer ran), the generator emits a yellow skip
status line with the exact @import directive the user needs to
add manually — instead of returning silently and leaving the admin
panel unstyled with no breadcrumb to the cause.
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/generators/iron_admin/install/install_generator.rb', line 70 def add_tailwind_import import_line = '@import "../builds/tailwind/iron_admin";' css_path = TAILWIND_CSS_CANDIDATES.find { |p| File.exist?(File.join(destination_root, p)) } unless css_path say_status :skip, "no Tailwind entry point found; add #{import_line} to your Tailwind " \ "application file once it's created (typically " \ "#{TAILWIND_CSS_CANDIDATES.first})", :yellow return end content = File.read(File.join(destination_root, css_path)) return if content.include?(import_line) append_to_file css_path, "#{import_line}\n" end |
#copy_dashboard ⇒ void
This method returns an undefined value.
Copies the dashboard template.
37 38 39 |
# File 'lib/generators/iron_admin/install/install_generator.rb', line 37 def copy_dashboard template "dashboard.rb.tt", "app/iron_admin/dashboards/admin_dashboard.rb" end |
#copy_initializer ⇒ void
This method returns an undefined value.
Copies the initializer template with default configuration.
31 32 33 |
# File 'lib/generators/iron_admin/install/install_generator.rb', line 31 def copy_initializer template "initializer.rb.tt", "config/initializers/iron_admin.rb" end |
#create_iron_admin_directories ⇒ void
This method returns an undefined value.
Creates the directory structure for resource and dashboard definitions.
24 25 26 27 |
# File 'lib/generators/iron_admin/install/install_generator.rb', line 24 def create_iron_admin_directories empty_directory "app/iron_admin/resources" empty_directory "app/iron_admin/dashboards" end |