Class: JSAdmin::Generators::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- JSAdmin::Generators::InstallGenerator
- Defined in:
- lib/generators/js_admin/install/install_generator.rb
Constant Summary collapse
- IMPORTMAP_PINS =
{ "@hotwired/turbo-rails" => 'pin "@hotwired/turbo-rails", to: "turbo.min.js"', "@hotwired/stimulus" => 'pin "@hotwired/stimulus", to: "stimulus.min.js"', "js_admin" => 'pin "js_admin", to: "js_admin/application.js", preload: true', "js_admin/controllers/theme_controller" => 'pin "js_admin/controllers/theme_controller", to: "js_admin/controllers/theme_controller.js", preload: true', "js_admin/controllers/flash_controller" => 'pin "js_admin/controllers/flash_controller", to: "js_admin/controllers/flash_controller.js", preload: true' }.freeze
Instance Method Summary collapse
- #create_initializer ⇒ Object
- #import_tailwind_engine_styles ⇒ Object
- #mount_engine ⇒ Object
- #pin_importmap_modules ⇒ Object
Instance Method Details
#create_initializer ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/generators/js_admin/install/install_generator.rb', line 25 def create_initializer create_file "config/initializers/js_admin.rb", <<~RUBY JSAdmin.configure do |config| # Limit visible models. When empty, JSAdmin exposes every concrete Active Record model. # config.include_models User, Post # config.exclude_models AuditLog # UI pagination and association select limits. # config.records_per_page = 10 # config.association_limit = 100 # Methods tried in order when displaying records in labels and associations. # config.display_name_methods = %i[name title email username id] # Basic Auth is disabled unless both username and password are present. # config.basic_auth_username = ENV["JS_ADMIN_BASIC_AUTH_USERNAME"] # config.basic_auth_password = ENV["JS_ADMIN_BASIC_AUTH_PASSWORD"] # config.basic_auth_realm = "JSAdmin" end RUBY end |
#import_tailwind_engine_styles ⇒ Object
65 66 67 68 69 70 71 72 73 |
# File 'lib/generators/js_admin/install/install_generator.rb', line 65 def import_tailwind_engine_styles tailwind_entrypoint = application_path("app/assets/tailwind/application.css") return unless File.exist?(tailwind_entrypoint) import_line = '@import "../builds/tailwind/js_admin";' return if File.read(tailwind_entrypoint).include?(import_line) append_to_file tailwind_entrypoint, "\n#{import_line}\n" end |
#mount_engine ⇒ Object
21 22 23 |
# File 'lib/generators/js_admin/install/install_generator.rb', line 21 def mount_engine route %(mount JSAdmin::Engine => "#{[:path]}") end |
#pin_importmap_modules ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/generators/js_admin/install/install_generator.rb', line 47 def pin_importmap_modules importmap_path = application_path("config/importmap.rb") unless File.exist?(importmap_path) say_status :warning, "config/importmap.rb was not found. Run bin/rails importmap:install, then rerun js_admin:install.", :yellow return end importmap = File.read(importmap_path) missing_pins = IMPORTMAP_PINS.filter_map do |name, line| line unless importmap.match?(/^\s*pin\s+["']#{Regexp.escape(name)}["']/) end return if missing_pins.empty? append_to_file importmap_path, "\n#{missing_pins.join("\n")}\n" end |