Class: TrixGenius::Generators::InstallGenerator

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

Instance Method Summary collapse

Instance Method Details

#add_import_to_application_jsObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/generators/trix_genius/install/install_generator.rb', line 12

def add_import_to_application_js
  js_application_path = "app/javascript/application.js"
  js_application_path = File.join(destination_root, js_application_path)

  if File.exist?(js_application_path)
    application_file = File.read(js_application_path)

    inject_into_file js_application_path, "\n" + 'import "trix"' + "\n", after: 'import "controllers"'
    inject_into_file js_application_path, "\n" + 'import "@rails/actiontext"' + ("\n" * 2), after: 'import "trix"'
  else
    puts javascript_application_msg 
    say_status("error", "Could not find #{js_application_path}", :red)
  end

  js_application_controller_path = "app/javascript/controllers/application.js"
  js_application_controller_path = File.join(destination_root, js_application_controller_path)

  if File.exist?(js_application_controller_path)
    application_controller_file = File.read(js_application_controller_path)
    inject_into_file js_application_controller_path, "\n" + 'import TrixController from "controllers/trix_genius_controller"' + "\n", after: 'import { Application } from "@hotwired/stimulus"'
    inject_into_file js_application_controller_path, "\n" + 'application.register("trix", TrixController)' + ("\n" * 2), before: 'export { application }'
  else
    puts javascript_application_controller_msg
    say_status("error", "Could not find #{js_application_controller_path}", :red)
  end
end

#add_route_to_routes_fileObject



43
44
45
46
47
48
49
50
# File 'lib/generators/trix_genius/install/install_generator.rb', line 43

def add_route_to_routes_file
  route_code = ["",
        "  # TrixGenius: Auto-added route",
        '  post "/trix_genius/correct_spelling", to: "trix_genius#correct_spelling"',
        ""].join("\n")

  inject_into_file File.join(destination_root, "config/routes.rb"), route_code, after: "Rails.application.routes.draw do\n"
end

#create_controllerObject



52
53
54
# File 'lib/generators/trix_genius/install/install_generator.rb', line 52

def create_controller
  template "trix_genius_controller.rb", File.join(destination_root, "app/controllers/trix_genius_controller.rb")
end

#create_initializerObject



8
9
10
# File 'lib/generators/trix_genius/install/install_generator.rb', line 8

def create_initializer
  template "trix_genius.rb", File.join(destination_root, "config/initializers/trix_genius.rb")
end

#create_stimulus_controllerObject



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

def create_stimulus_controller
  template "trix_genius_controller.js", File.join(destination_root, "app/javascript/controllers/trix_genius_controller.js")
end