Class: AnimateIt::Generators::InstallGenerator

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

Overview

Installs AnimateIt into the host app:

bin/rails generate animate_it:install
  1. Copies an opinionated initializer that owns engine config.
  2. Inserts a mount AnimateIt::Engine line into config/routes.rb, placed AFTER devise_for if Devise is in use (so warden serializers register correctly — see config/routes.rb in the host app).

Instance Method Summary collapse

Instance Method Details

#add_routeObject



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

def add_route
  routes_path = Rails.root.join("config/routes.rb")
  contents = File.exist?(routes_path) ? File.read(routes_path) : ""

  return say_status(:exists, "AnimateIt::Engine already mounted in config/routes.rb") if contents.include?("AnimateIt::Engine")

  snippet = <<~ROUTE.chomp
    \n  # AnimateIt engine — mount AFTER devise_for so warden serializers register correctly.
      mount AnimateIt::Engine, at: AnimateIt.config.mount_path if Rails.env.local?
  ROUTE

  if contents.include?("devise_for")
    inject_into_file "config/routes.rb", snippet, after: /devise_for[^\n]*\n/
  else
    route "mount AnimateIt::Engine, at: AnimateIt.config.mount_path if Rails.env.local?"
  end
end

#copy_initializerObject



17
18
19
# File 'lib/generators/animate_it/install/install_generator.rb', line 17

def copy_initializer
  template "animate_it.rb", "config/routes.rb".sub("routes.rb", "initializers/animate_it.rb")
end