@@ -3226,6 +3226,97 @@ class MyLogger < ::Logger
3226
3226
assert_no_match ( /You are running SQLite in production, this is generally not recommended/ , Rails . logger . recording )
3227
3227
end
3228
3228
3229
+ test "app starts with LocalCache middleware" do
3230
+ app "development"
3231
+
3232
+ assert ( Rails . application . config . middleware . map ( &:name ) . include? ( "ActiveSupport::Cache::Strategy::LocalCache" ) )
3233
+
3234
+ local_cache_index = Rails . application . config . middleware . map ( &:name ) . index ( "ActiveSupport::Cache::Strategy::LocalCache" )
3235
+ logger_index = Rails . application . config . middleware . map ( &:name ) . index ( "Rails::Rack::Logger" )
3236
+ assert local_cache_index < logger_index
3237
+ end
3238
+
3239
+ test "LocalCache middleware can be moved via app config" do
3240
+ # you can't move Rails.cache.middleware as it doesn't exist yet
3241
+ add_to_config "config.middleware.move_after(Rails::Rack::Logger, ActiveSupport::Cache::Strategy::LocalCache)"
3242
+
3243
+ app "development"
3244
+
3245
+ local_cache_index = Rails . application . config . middleware . map ( &:name ) . index ( "ActiveSupport::Cache::Strategy::LocalCache" )
3246
+ logger_index = Rails . application . config . middleware . map ( &:name ) . index ( "Rails::Rack::Logger" )
3247
+ assert local_cache_index > logger_index
3248
+ end
3249
+
3250
+ test "LocalCache middleware can be moved via initializer" do
3251
+ app_file "config/initializers/move_local_cache_middleware.rb" , <<~RUBY
3252
+ Rails.application.config.middleware.move_after(Rails::Rack::Logger, Rails.cache.middleware)
3253
+ RUBY
3254
+
3255
+ app "development"
3256
+
3257
+ local_cache_index = Rails . application . config . middleware . map ( &:name ) . index ( "ActiveSupport::Cache::Strategy::LocalCache" )
3258
+ logger_index = Rails . application . config . middleware . map ( &:name ) . index ( "Rails::Rack::Logger" )
3259
+ assert local_cache_index > logger_index
3260
+ end
3261
+
3262
+ test "LocalCache middleware can be removed via app config" do
3263
+ # you can't delete Rails.cache.middleware as it doesn't exist yet
3264
+ add_to_config "config.middleware.delete(ActiveSupport::Cache::Strategy::LocalCache)"
3265
+
3266
+ app "development"
3267
+
3268
+ assert_not ( Rails . application . config . middleware . map ( &:name ) . include? ( "ActiveSupport::Cache::Strategy::LocalCache" ) )
3269
+ end
3270
+
3271
+ test "LocalCache middleware can be removed via initializer" do
3272
+ app_file "config/initializers/remove_local_cache_middleware.rb" , <<~RUBY
3273
+ Rails.application.config.middleware.delete(Rails.cache.middleware)
3274
+ RUBY
3275
+
3276
+ app "development"
3277
+
3278
+ assert_not ( Rails . application . config . middleware . map ( &:name ) . include? ( "ActiveSupport::Cache::Strategy::LocalCache" ) )
3279
+ end
3280
+
3281
+ test "custom middleware with overridden names can be added, moved, or deleted" do
3282
+ app_file "config/initializers/add_custom_middleware.rb" , <<~RUBY
3283
+ class CustomMiddlewareOne
3284
+ def self.name
3285
+ "1st custom middleware"
3286
+ end
3287
+ def initialize(app, *args); end
3288
+ def new(app); self; end
3289
+ end
3290
+
3291
+ class CustomMiddlewareTwo
3292
+ def initialize(app, *args); end
3293
+ def new(app); self; end
3294
+ end
3295
+
3296
+ class CustomMiddlewareThree
3297
+ def self.name
3298
+ "3rd custom middleware"
3299
+ end
3300
+ def initialize(app, *args); end
3301
+ def new(app); self; end
3302
+ end
3303
+
3304
+ Rails.application.config.middleware.use(CustomMiddlewareOne)
3305
+ Rails.application.config.middleware.use(CustomMiddlewareTwo)
3306
+ Rails.application.config.middleware.use(CustomMiddlewareThree)
3307
+ Rails.application.config.middleware.move_after(CustomMiddlewareTwo, CustomMiddlewareOne)
3308
+ Rails.application.config.middleware.delete(CustomMiddlewareThree)
3309
+ RUBY
3310
+
3311
+ app "development"
3312
+
3313
+ custom_middleware_one = Rails . application . config . middleware . map ( &:name ) . index ( "1st custom middleware" )
3314
+ custom_middleware_two = Rails . application . config . middleware . map ( &:name ) . index ( "CustomMiddlewareTwo" )
3315
+ assert custom_middleware_one > custom_middleware_two
3316
+
3317
+ assert_nil Rails . application . config . middleware . map ( &:name ) . index ( "3rd custom middleware" )
3318
+ end
3319
+
3229
3320
private
3230
3321
def set_custom_config ( contents , config_source = "custom" . inspect )
3231
3322
app_file "config/custom.yml" , contents
0 commit comments