Skip to content

Commit

Permalink
Tweak dummy_app to allow running specs across all asset delivery methods
Browse files Browse the repository at this point in the history
  • Loading branch information
mshibuya committed Jun 13, 2022
1 parent de8c41a commit 7ac5c0c
Show file tree
Hide file tree
Showing 12 changed files with 43 additions and 32 deletions.
1 change: 1 addition & 0 deletions spec/dummy_app/Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ gem 'mlb', '>= 0.7', github: 'mshibuya/mlb', branch: 'ruby-3'
gem 'paperclip', '>= 3.4'
gem 'rails_admin', path: '../../'
gem 'shrine', '~> 3.0'
gem 'webpacker', require: false
gem 'webrick', '~> 1.7'

# Gems used only for assets and not required
Expand Down
5 changes: 1 addition & 4 deletions spec/dummy_app/app/assets/config/manifest.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
//= link_tree ../images
//= link_directory ../javascripts .js
//= link_tree ../../javascript .js
//= link_tree ../../../vendor/javascript .js
//= link_tree ../../../../../src .js
//= link_tree ../builds
//= link application.js
//= link application.css
4 changes: 4 additions & 0 deletions spec/dummy_app/app/javascript/application.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import Rails from "@rails/ujs";
import "@hotwired/turbo-rails";

Rails.start();
17 changes: 0 additions & 17 deletions spec/dummy_app/app/javascript/packs/application.js

This file was deleted.

3 changes: 0 additions & 3 deletions spec/dummy_app/app/javascript/packs/rails_admin.js

This file was deleted.

11 changes: 9 additions & 2 deletions spec/dummy_app/app/views/layouts/application.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,15 @@
<html>
<head>
<title>DummyApp</title>
<%= stylesheet_link_tag "application", media: "all" %>
<%= javascript_include_tag "application" %>
<% case CI_ASSET %>
<% when :webpacker %>
<%= javascript_pack_tag "application" %>
<% when :importmap %>
<%= javascript_importmap_tags %>
<% else %>
<%= stylesheet_link_tag "application", media: "all" %>
<%= javascript_include_tag "application" %>
<% end %>
<%= csrf_meta_tags %>
</head>
<body>
Expand Down
18 changes: 15 additions & 3 deletions spec/dummy_app/config/application.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
case CI_ASSET
when :webpacker
require 'webpacker'
when :sprockets
when :sprockets, :webpack
require 'sprockets/railtie'
when :importmap
require 'sprockets/railtie'
Expand All @@ -42,11 +42,23 @@ class Application < Rails::Application
config.active_record.time_zone_aware_types = %i[datetime time] if CI_ORM == :active_record
config.active_storage.service = :local if defined?(ActiveStorage)
config.active_storage.replace_on_assign_to_many = false if defined?(ActiveStorage) && ActiveStorage.version < Gem::Version.create('6.1')
config.importmap.cache_sweepers << RailsAdmin::Engine.root.join('src') if config.respond_to? :importmap

if CI_ASSET == :importmap
case CI_ASSET
when :webpack
config.assets.precompile += %w[rails_admin.js rails_admin.css]
when :importmap
config.assets.paths << RailsAdmin::Engine.root.join('src')
config.assets.precompile += %w[rails_admin.js rails_admin.css]
config.importmap.cache_sweepers << RailsAdmin::Engine.root.join('src')
end

initializer :ignore_unused_assets_path, after: :append_assets_path, group: :all do |app|
case CI_ASSET
when :webpack, :importmap
app.config.assets.paths.delete(Rails.root.join('app', 'assets', 'javascripts').to_s)
when :sprockets
app.config.assets.paths.delete(Rails.root.join('app', 'assets', 'builds').to_s)
end
end
end
end
9 changes: 9 additions & 0 deletions spec/dummy_app/config/importmap.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# frozen_string_literal: true

# Pin npm packages by running ./bin/importmap

pin 'application', preload: true
pin '@hotwired/turbo-rails', to: 'https://ga.jspm.io/npm:@hotwired/turbo-rails@7.1.3/app/javascript/turbo/index.js'
pin '@rails/ujs', to: 'https://ga.jspm.io/npm:@rails/ujs@6.0.5/lib/assets/compiled/rails-ujs.js'
pin '@hotwired/turbo', to: 'https://ga.jspm.io/npm:@hotwired/turbo@7.1.0/dist/turbo.es2017-esm.js'
pin '@rails/actioncable/src', to: 'https://ga.jspm.io/npm:@rails/actioncable@7.0.3/src/index.js'
2 changes: 1 addition & 1 deletion spec/dummy_app/config/initializers/assets.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

# Add additional assets to the asset load path
# Rails.application.config.assets.paths << Emoji.images_path
Rails.application.config.assets.paths << Rails.root.join('node_modules/@fortawesome/fontawesome-free/webfonts')
Rails.application.config.assets.paths << Rails.root.join('node_modules/@fortawesome/fontawesome-free/webfonts') if Rails.application.config.respond_to?(:assets)

# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
Expand Down
4 changes: 2 additions & 2 deletions spec/dummy_app/config/webpacker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

default: &default
source_path: app/javascript
source_entry_path: packs
source_entry_path: .
public_root_path: public
public_output_path: packs
cache_path: tmp/cache/webpacker
Expand All @@ -16,7 +16,7 @@ default: &default
cache_manifest: false

# Extract and emit a css file
extract_css: false
extract_css: true

static_assets_extensions:
- .jpg
Expand Down
1 change: 1 addition & 0 deletions spec/dummy_app/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ module.exports = {
mode: "production",
devtool: "source-map",
entry: {
application: "./app/javascript/application.js",
rails_admin: "./app/javascript/rails_admin.js",
},
output: {
Expand Down

0 comments on commit 7ac5c0c

Please sign in to comment.