rails/actiontext/Rakefile
Hartley McGuire c93a989635
Fix using trix in sprockets
When Trix was [updated][1] from 1.3.1 to 2.0.4, the ESM bundle of 2.0.4
was used instead of the UMD bundle (the vendored 1.3.1 file used the
UMD bundle). This leads to issues when trying to use Trix with sprockets
because the ESM bundle declares variables like they are scoped to the
file but sprockets will see them as scoped globally.

This commit fixes the issue by replacing the Trix ESM bundle with the
UMD bundle (and upgrades it from 2.0.4 to 2.0.7). Additionally, a Rake
task has been added similar to one previously [added][2] to the guides
for automatic vendoring using Importmap::Packager.

[1]: fab1b522cd11696c7330028fcc7bf25a8a109f5f
[2]: a42863f514e726b864f60ad10e79002fe2b39f5a
2023-10-25 00:25:35 -04:00

53 lines
1.4 KiB
Ruby

# frozen_string_literal: true
require "bundler/setup"
require "bundler/gem_tasks"
require "rake/testtask"
task :package
Rake::TestTask.new do |t|
t.libs << "test"
t.test_files = FileList["test/**/*_test.rb"].exclude("test/system/**/*", "test/dummy/**/*")
t.verbose = true
end
Rake::TestTask.new "test:system" do |t|
t.libs << "test"
t.test_files = FileList["test/system/**/*_test.rb"]
t.verbose = true
end
namespace :test do
task :isolated do
FileList["test/**/*_test.rb"].exclude("test/system/**/*", "test/dummy/**/*").all? do |file|
sh(Gem.ruby, "-w", "-Ilib", "-Itest", file)
end || raise("Failures")
end
end
task :vendor_trix do
module Importmap; end
require "importmap/packager"
packager = Importmap::Packager.new(vendor_path: "app/assets/javascripts")
imports = packager.import("trix", from: "unpkg")
imports.each do |package, url|
url.gsub!("esm.min.js", "umd.js")
puts %(Vendoring "#{package}" to #{packager.vendor_path}/#{package}.js via download from #{url})
packager.download(package, url)
css_url = url.gsub("umd.js", "css")
puts %(Vendoring "#{package}" to #{packager.vendor_path}/#{package}.css via download from #{css_url})
response = Net::HTTP.get_response(URI(css_url))
if response.code == "200"
File.open(Pathname.new("app/assets/stylesheets/trix.css"), "w+") do |file|
file.write response.body
end
end
end
end
task default: :test