class ActionText::Generators::InstallGenerator

Constants

GEM_ROOT

Public Instance Methods

append_dependencies_to_package_file() click to toggle source
# 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_files() click to toggle source
# 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_migrations() click to toggle source
# 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_dependencies() click to toggle source
# 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

Private Instance Methods

js_dependencies() click to toggle source
# File lib/generators/action_text/install/install_generator.rb, line 60
def js_dependencies
  js_package = JSON.load(Pathname.new("#{GEM_ROOT}/package.json"))
  js_package["peerDependencies"].merge \
    js_package["name"] => "^#{js_package["version"]}"
end