Class: ActionText::Generators::InstallGenerator

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

Instance Method Summary collapse

Instance Method Details

#append_dependencies_to_package_fileObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/generators/action_text/install/install_generator.rb', line 19

def append_dependencies_to_package_file
  if (app_javascript_pack_path = Pathname.new("app/javascript/packs/application.js")).exist?
    js_dependencies.each_key do |dependency|
      line = %[require("#{dependency}")]

      unless app_javascript_pack_path.read.include? line
        say "Adding #{dependency} to #{app_javascript_pack_path}", :green
        append_to_file app_javascript_pack_path, "\n#{line}"
      end
    end
  else
    say <<~WARNING, :red
      WARNING: Action Text can't locate your JavaScript bundle to add its package dependencies.

      Add these lines to any bundles:

      require("trix")
      require("@rails/actiontext")

      Alternatively, install and setup the webpacker gem then rerun `bin/rails action_text:install`
      to have these dependencies added automatically.
    WARNING
  end
end

#create_actiontext_filesObject



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

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

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

#create_migrationsObject



51
52
53
# File 'lib/generators/action_text/install/install_generator.rb', line 51

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

#install_javascript_dependenciesObject



11
12
13
14
15
16
17
# File 'lib/generators/action_text/install/install_generator.rb', line 11

def install_javascript_dependencies
  rails_command "app:binstub:yarn", inline: true

  say "Installing JavaScript dependencies", :green
  run "#{Thor::Util.ruby_command} bin/yarn add #{js_dependencies.map { |name, version| "#{name}@#{version}" }.join(" ")}",
    abort_on_failure: true, capture: true
end