Skip to content

Commit afdfc89

Browse files
committed
memo_wise issue demo
1 parent 7a43b20 commit afdfc89

File tree

7 files changed

+92
-18
lines changed

7 files changed

+92
-18
lines changed

Gemfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ gem "i18n-js", "~> 3.9.2"
3030
gem "vite_rails", ">= 3.0.19"
3131
gem "vite_plugin_legacy", ">= 3.0.2"
3232

33+
# gem "memo_wise", "~> 1.11.0"
34+
gem "memo_wise", ">= 1.11.0"
35+
3336
group :development, :test do
3437
# See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
3538
gem "debug", platforms: %i[ mri windows ], require: "debug/prelude"

Gemfile.lock

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ GEM
9595
regexp_parser (>= 1.5, < 3.0)
9696
xpath (~> 3.2)
9797
concurrent-ruby (1.3.5)
98-
connection_pool (2.5.1)
98+
connection_pool (2.5.3)
9999
crass (1.0.6)
100100
date (3.4.1)
101101
debug (1.10.0)
@@ -104,7 +104,7 @@ GEM
104104
dotenv (3.1.8)
105105
drb (2.2.1)
106106
dry-cli (1.2.0)
107-
ed25519 (1.3.0)
107+
ed25519 (1.4.0)
108108
erubi (1.13.1)
109109
et-orbi (1.2.11)
110110
tzinfo
@@ -122,7 +122,7 @@ GEM
122122
pp (>= 0.6.0)
123123
rdoc (>= 4.0.0)
124124
reline (>= 0.4.2)
125-
json (2.10.2)
125+
json (2.11.3)
126126
kamal (2.5.3)
127127
activesupport (>= 7.0)
128128
base64 (~> 0.2)
@@ -147,11 +147,12 @@ GEM
147147
net-smtp
148148
marcel (1.0.4)
149149
matrix (0.4.2)
150+
memo_wise (1.11.0)
150151
mini_mime (1.1.5)
151152
minitest (5.25.5)
152153
msgpack (1.8.0)
153154
mutex_m (0.3.0)
154-
net-imap (0.5.6)
155+
net-imap (0.5.8)
155156
date
156157
net-protocol
157158
net-pop (0.1.2)
@@ -189,18 +190,18 @@ GEM
189190
prettyprint
190191
prettyprint (0.2.0)
191192
prism (1.4.0)
192-
psych (5.2.3)
193+
psych (5.2.4)
193194
date
194195
stringio
195-
public_suffix (6.0.1)
196+
public_suffix (6.0.2)
196197
puma (6.6.0)
197198
nio4r (~> 2.0)
198199
raabro (1.4.0)
199200
racc (1.8.1)
200-
rack (3.1.13)
201+
rack (3.1.14)
201202
rack-proxy (0.7.7)
202203
rack
203-
rack-session (2.1.0)
204+
rack-session (2.1.1)
204205
base64 (>= 0.1.0)
205206
rack (>= 3.0.0)
206207
rack-test (2.2.0)
@@ -244,7 +245,7 @@ GEM
244245
reline (0.6.1)
245246
io-console (~> 0.5)
246247
rexml (3.4.1)
247-
rubocop (1.75.2)
248+
rubocop (1.75.5)
248249
json (~> 2.3)
249250
language_server-protocol (~> 3.17.0.2)
250251
lint_roller (~> 1.1.0)
@@ -363,6 +364,7 @@ DEPENDENCIES
363364
debug
364365
i18n-js (~> 3.9.2)
365366
kamal
367+
memo_wise (~> 1.11.0)
366368
puma (>= 5.0)
367369
rails (~> 8.0.2)
368370
rubocop-rails-omakase
@@ -400,14 +402,14 @@ CHECKSUMS
400402
builder (3.3.0) sha256=497918d2f9dca528fdca4b88d84e4ef4387256d984b8154e9d5d3fe5a9c8835f
401403
capybara (3.40.0) sha256=42dba720578ea1ca65fd7a41d163dd368502c191804558f6e0f71b391054aeef
402404
concurrent-ruby (1.3.5) sha256=813b3e37aca6df2a21a3b9f1d497f8cbab24a2b94cab325bffe65ee0f6cbebc6
403-
connection_pool (2.5.1) sha256=ae802a90a4b5a081101b39d618e69921a9a50bea9ac3420a5b8c71f1befa3e9c
405+
connection_pool (2.5.3) sha256=cfd74a82b9b094d1ce30c4f1a346da23ee19dc8a062a16a85f58eab1ced4305b
404406
crass (1.0.6) sha256=dc516022a56e7b3b156099abc81b6d2b08ea1ed12676ac7a5657617f012bd45d
405407
date (3.4.1) sha256=bf268e14ef7158009bfeaec40b5fa3c7271906e88b196d958a89d4b408abe64f
406408
debug (1.10.0) sha256=11e28ca74875979e612444104f3972bd5ffb9e79179907d7ad46dba44bd2e7a4
407409
dotenv (3.1.8) sha256=9e1176060ced581f8e6ce4384e91361817763a76e3c625c8bddc18b35bd392c3
408410
drb (2.2.1) sha256=e9d472bf785f558b96b25358bae115646da0dbfd45107ad858b0bc0d935cb340
409411
dry-cli (1.2.0) sha256=8c97df3b290ee6354ee2025a5f0a67226b381627de32741d06f35ea0887cd95b
410-
ed25519 (1.3.0) sha256=514a5584f84d39daac568a17ec93a4e7261e140c52c562ed8c382c18456e627d
412+
ed25519 (1.4.0) sha256=16e97f5198689a154247169f3453ef4cfd3f7a47481fde0ae33206cdfdcac506
411413
erubi (1.13.1) sha256=a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9
412414
et-orbi (1.2.11) sha256=d26e868cc21db88280a9ec1a50aa3da5d267eb9b2037ba7b831d6c2731f5df64
413415
fugit (1.11.1) sha256=e89485e7be22226d8e9c6da411664d0660284b4b1c08cacb540f505907869868
@@ -416,7 +418,7 @@ CHECKSUMS
416418
i18n-js (3.9.2) sha256=34c20bf3183afea475a372382ad6258be073dca5354a4bdab19b01adea3b798e
417419
io-console (0.8.0) sha256=cd6a9facbc69871d69b2cb8b926fc6ea7ef06f06e505e81a64f14a470fddefa2
418420
irb (1.15.2) sha256=222f32952e278da34b58ffe45e8634bf4afc2dc7aa9da23fed67e581aa50fdba
419-
json (2.10.2) sha256=34e0eada93022b2a0a3345bb0b5efddb6e9ff5be7c48e409cfb54ff8a36a8b06
421+
json (2.11.3) sha256=9a10f658a2de67c0eb837eb795dd48132ce797c403e52b5ebef87dcdc7f9ccc1
420422
kamal (2.5.3) sha256=06f9e5536e710045da73cee5f0d8b088fd40d5613cbb36abcaa88d4c8fe23a6c
421423
language_server-protocol (3.17.0.4) sha256=c484626478664fd13482d8180947c50a8590484b1258b99b7aedb3b69df89669
422424
lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
@@ -425,11 +427,12 @@ CHECKSUMS
425427
mail (2.8.1) sha256=ec3b9fadcf2b3755c78785cb17bc9a0ca9ee9857108a64b6f5cfc9c0b5bfc9ad
426428
marcel (1.0.4) sha256=0d5649feb64b8f19f3d3468b96c680bae9746335d02194270287868a661516a4
427429
matrix (0.4.2) sha256=71083ccbd67a14a43bfa78d3e4dc0f4b503b9cc18e5b4b1d686dc0f9ef7c4cc0
430+
memo_wise (1.11.0) sha256=06ef23a1edb6b8ee4f37d950bba04836b437b4d1036e45d24c2fd2f25b5490c3
428431
mini_mime (1.1.5) sha256=8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef
429432
minitest (5.25.5) sha256=391b6c6cb43a4802bfb7c93af1ebe2ac66a210293f4a3fb7db36f2fc7dc2c756
430433
msgpack (1.8.0) sha256=e64ce0212000d016809f5048b48eb3a65ffb169db22238fb4b72472fecb2d732
431434
mutex_m (0.3.0) sha256=cfcb04ac16b69c4813777022fdceda24e9f798e48092a2b817eb4c0a782b0751
432-
net-imap (0.5.6) sha256=1ede8048ee688a14206060bf37a716d18cb6ea00855f6c9b15daee97ee51fbe5
435+
net-imap (0.5.8) sha256=52aa5fdfc1a8a3df1f793b20a327e95b5a9dfe1d733e1f0d53075d2dbcfcf593
433436
net-pop (0.1.2) sha256=848b4e982013c15b2f0382792268763b748cce91c9e91e36b0f27ed26420dff3
434437
net-protocol (0.2.2) sha256=aa73e0cba6a125369de9837b8d8ef82a61849360eba0521900e2c3713aa162a8
435438
net-scp (4.1.0) sha256=a99b0b92a1e5d360b0de4ffbf2dc0c91531502d3d4f56c28b0139a7c093d1a5d
@@ -450,14 +453,14 @@ CHECKSUMS
450453
pp (0.6.2) sha256=947ec3120c6f92195f8ee8aa25a7b2c5297bb106d83b41baa02983686577b6ff
451454
prettyprint (0.2.0) sha256=2bc9e15581a94742064a3cc8b0fb9d45aae3d03a1baa6ef80922627a0766f193
452455
prism (1.4.0) sha256=dc0e3e00e93160213dc2a65519d9002a4a1e7b962db57d444cf1a71565bb703e
453-
psych (5.2.3) sha256=84a54bb952d14604fea22d99938348814678782f58b12648fcdfa4d2fce859ee
454-
public_suffix (6.0.1) sha256=61d44e1cab5cbbbe5b31068481cf16976dd0dc1b6b07bd95617ef8c5e3e00c6f
456+
psych (5.2.4) sha256=f2d9810f7f383a6b0fbc705202851e1a55b236bcb8e168ab5dfa5741842ec7c5
457+
public_suffix (6.0.2) sha256=bfa7cd5108066f8c9602e0d6d4114999a5df5839a63149d3e8b0f9c1d3558394
455458
puma (6.6.0) sha256=f25c06873eb3d5de5f0a4ebc783acc81a4ccfe580c760cfe323497798018ad87
456459
raabro (1.4.0) sha256=d4fa9ff5172391edb92b242eed8be802d1934b1464061ae5e70d80962c5da882
457460
racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
458-
rack (3.1.13) sha256=170c79db621882884d9a28d9cd5bd228c663fddcd367c4dea22c9a1808645792
461+
rack (3.1.14) sha256=84613c2a8df193bb6711d9c14ecc6d5a65a7cb4312379a65e793562608944b44
459462
rack-proxy (0.7.7) sha256=446a4b57001022145d5c3ba73b775f66a2260eaf7420c6907483141900395c8a
460-
rack-session (2.1.0) sha256=437c3916535b58ef71c816ce4a2dee0a01c8a52ae6077dc2b6cd19085760a290
463+
rack-session (2.1.1) sha256=0b6dc07dea7e4b583f58a48e8b806d4c9f1c6c9214ebc202ec94562cbea2e4e9
461464
rack-test (2.2.0) sha256=005a36692c306ac0b4a9350355ee080fd09ddef1148a5f8b2ac636c720f5c463
462465
rackup (2.2.1) sha256=f737191fd5c5b348b7f0a4412a3b86383f88c43e13b8217b63d4c8d90b9e798d
463466
rails (8.0.2) sha256=fdfaa5a83ec0388e02864e88d515959caedc88053b5f701c4deb1652d8f164c6
@@ -470,7 +473,7 @@ CHECKSUMS
470473
regexp_parser (2.10.0) sha256=cb6f0ddde88772cd64bff1dbbf68df66d376043fe2e66a9ef77fcb1b0c548c61
471474
reline (0.6.1) sha256=1afcc9d7cb1029cdbe780d72f2f09251ce46d3780050f3ec39c3ccc6b60675fb
472475
rexml (3.4.1) sha256=c74527a9a0a04b4ec31dbe0dc4ed6004b960af943d8db42e539edde3a871abca
473-
rubocop (1.75.2) sha256=8efde647e278417e8074421b007e0d7d7c591482ef99d980528b18fea015a7c8
476+
rubocop (1.75.5) sha256=6ada7c8635023d81dace453da1e3a573455a277d49c3cba30813f32b423be97d
474477
rubocop-ast (1.44.1) sha256=e3cc04203b2ef04f6d6cf5f85fe6d643f442b18cc3b23e3ada0ce5b6521b8e92
475478
rubocop-performance (1.25.0) sha256=6f7d03568a770054117a78d0a8e191cefeffb703b382871ca7743831b1a52ec1
476479
rubocop-rails (2.31.0) sha256=79476e1075299c3e60fc50549c7c32614f9ebaae719b899ed75785c6786c52bd
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,35 @@
1+
require "memo_wise"
2+
13
class ApplicationController < ActionController::Base
24
# Only allow modern browsers supporting webp images, web push, badges, import maps, CSS nesting, and CSS :has.
35
allow_browser versions: :modern
6+
7+
module XhrDetection
8+
prepend ::MemoWise
9+
10+
def self.included(base)
11+
base.class_eval do
12+
helper_method :xhr?
13+
end
14+
end
15+
16+
memo_wise def xhr?
17+
request.xhr?
18+
end
19+
end
20+
module SpecialXhrDetection
21+
def self.included(base)
22+
base.class_eval do
23+
include XhrDetection
24+
include InstanceMethods
25+
end
26+
end
27+
28+
module InstanceMethods
29+
def xhr?
30+
request.method == "GET" && request.xhr?
31+
end
32+
end
33+
end
34+
include SpecialXhrDetection
435
end

app/controllers/home_controller.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# frozen_string_literal: true
2+
3+
require "memo_wise"
4+
5+
class HomeController < ApplicationController
6+
7+
def index
8+
render "index"
9+
end
10+
11+
private
12+
13+
end

app/views/home/index.html.erb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
XHR: <%= xhr? %>

config/routes.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,6 @@
1111

1212
# Defines the root path route ("/")
1313
# root "posts#index"
14+
15+
root "home#index"
1416
end
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
require "test_helper"
2+
3+
class HomeControllerTest < ActionDispatch::IntegrationTest
4+
# test "the truth" do
5+
# assert true
6+
# end
7+
8+
test "index" do
9+
get "/"
10+
assert_equal 200, status
11+
12+
assert_match "XHR: false", @response.body
13+
end
14+
15+
test "index XHR" do
16+
get "/", xhr: true
17+
assert_equal 200, status
18+
19+
assert_match "XHR: true", @response.body
20+
end
21+
end

0 commit comments

Comments
 (0)