Class: ActionText::Generators::InstallGenerator

Inherits:
Rails::Generators::Base show all
Includes:
Rails::Generators::JsPackageManager
Defined in:
actiontext/lib/generators/action_text/install/install_generator.rb

Constant Summary

Constants included from Rails::Generators::JsPackageManager

Rails::Generators::JsPackageManager::MANAGERS

Instance Method Summary collapse

Methods included from Rails::Generators::JsPackageManager

detect, #package_add_command, #package_install_command, #package_lockfile, #package_manager, #using_js_runtime?

Methods inherited from Rails::Generators::Base

add_shebang_option!, banner, base_name, base_root, class_option, default_aliases_for_option, default_for_option, default_generator_root, default_source_root, default_value_for_option, desc, exit_on_failure?, generator_name, hide!, hook_for, hooks, inherited, namespace, prepare_for_invocation, remove_hook_for, source_root, usage_path

Methods included from Rails::Generators::Actions

#add_source, #environment, #gem, #gem_group, #generate, #git, #github, #initialize, #initializer, #lib, #rails_command, #rake, #rakefile, #readme, #route, #vendor

Instance Method Details

#append_editorObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'actiontext/lib/generators/action_text/install/install_generator.rb', line 27

def append_editor
  destination = Pathname(destination_root)
  editor = options[:editor]

  if (application_javascript_path = destination.join("app/javascript/application.js")).exist?
    insert_into_file application_javascript_path.to_s, %(\nimport "#{editor}"\n)
  else
    say <<~INSTRUCTIONS, :green
      You must import the #{editor} JavaScript module in your application entrypoint.
    INSTRUCTIONS
  end

  if (importmap_path = destination.join("config/importmap.rb")).exist?
    append_to_file importmap_path.to_s, %(pin "#{editor}"\n)
  end
end

#append_javascript_dependenciesObject



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'actiontext/lib/generators/action_text/install/install_generator.rb', line 51

def append_javascript_dependencies
  destination = Pathname(destination_root)

  if (application_javascript_path = destination.join("app/javascript/application.js")).exist?
    insert_into_file application_javascript_path.to_s, %(\nimport "@rails/actiontext"\n)
  else
    say <<~INSTRUCTIONS, :green
      You must import the @rails/actiontext JavaScript module in your application entrypoint.
    INSTRUCTIONS
  end

  if (importmap_path = destination.join("config/importmap.rb")).exist?
    append_to_file importmap_path.to_s, %(pin "@rails/actiontext", to: "actiontext.esm.js"\n)
  end
end

#create_actiontext_filesObject



67
68
69
70
71
72
73
74
75
76
77
# File 'actiontext/lib/generators/action_text/install/install_generator.rb', line 67

def create_actiontext_files
  template "actiontext.css", "app/assets/stylesheets/actiontext.css"

  gem_root = "#{__dir__}/../../../.."

  copy_file "#{gem_root}/app/views/active_storage/blobs/_blob.html.erb",
    "app/views/active_storage/blobs/_blob.html.erb"

  copy_file "#{gem_root}/app/views/layouts/action_text/contents/_content.html.erb",
    "app/views/layouts/action_text/contents/_content.html.erb"
end

#create_migrationsObject



79
80
81
# File 'actiontext/lib/generators/action_text/install/install_generator.rb', line 79

def create_migrations
  rails_command "railties:install:migrations FROM=active_storage,action_text", inline: true
end

#install_editorObject



18
19
20
21
22
23
24
25
# File 'actiontext/lib/generators/action_text/install/install_generator.rb', line 18

def install_editor
  return unless using_js_runtime?

  editor = options[:editor]

  say "Installing #{editor} JavaScript dependency", :green
  run package_add_command(editor)
end

#install_javascript_dependenciesObject



44
45
46
47
48
49
# File 'actiontext/lib/generators/action_text/install/install_generator.rb', line 44

def install_javascript_dependencies
  return unless using_js_runtime?

  say "Installing JavaScript dependencies", :green
  run package_add_command("@rails/actiontext")
end