Class: RailsAdminNext::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Includes:
Generators::Utils::InstanceMethods
Defined in:
lib/generators/rails_admin_next/install_generator.rb

Instance Method Summary collapse

Methods included from Generators::Utils::InstanceMethods

#ask_for, #display

Instance Method Details

#installObject

RailsAdminNext ships a single zero-build asset path: browser-native ESM + CSS served by Propshaft and pinned with an engine-owned importmap. The engine is self-contained, so installation is just the mount point and an initializer — no bundler detection, yarn add, CSS build, or generated pins.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/generators/rails_admin_next/install_generator.rb', line 18

def install
  if File.read(File.join(destination_root, "config/routes.rb")).include?("mount RailsAdminNext::Engine")
    display "Skipped route addition, since it's already there"
  else
    namespace = ask_for("Where do you want to mount RailsAdminNext?", "admin", _namespace)
    route("mount RailsAdminNext::Engine => '/#{namespace}', as: 'rails_admin_next'")
  end

  if File.exist? File.join(destination_root, "config/initializers/rails_admin_next.rb")
    display "Skipped initializer creation, since config/initializers/rails_admin_next.rb already exists"
  else
    template "initializer.erb", "config/initializers/rails_admin_next.rb"
  end

  display <<~MSG
    RailsAdminNext uses a zero-build asset pipeline: browser-native ESM and CSS served by Propshaft and
    pinned through an engine-owned importmap. There is no yarn/build step. Make sure your app uses
    Propshaft and importmap-rails (both are bundled automatically as RailsAdminNext dependencies).
  MSG
end