From a8ba08e2b2627e0e5f68d759ee2e5bd9974f836b Mon Sep 17 00:00:00 2001 From: Jun Jiang Date: Sun, 7 Dec 2025 20:57:05 +0800 Subject: [PATCH 1/4] Compatible with Rails 8.2 Fix `undefined method 'detach_from' for class ActionController::LogSubscriber (NoMethodError)` --- lib/console/adapter/rails/railtie.rb | 38 +++++++++++++++++----------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/lib/console/adapter/rails/railtie.rb b/lib/console/adapter/rails/railtie.rb index 01c7f0c..61c1d22 100644 --- a/lib/console/adapter/rails/railtie.rb +++ b/lib/console/adapter/rails/railtie.rb @@ -13,28 +13,36 @@ module Rails # Hook into Rails startup process and replace Rails.logger with our custom hooks class Railtie < ::Rails::Railtie initializer 'console.adapter.rails', before: :initialize_logger do |app| - # 1. Set up Console to be used as the Rails logger - Logger.apply!(configuration: app.config) + # 1. Set up Console to be used as the Rails logger + Logger.apply!(configuration: app.config) - # 2. Remove the Rails::Rack::Logger middleware as it also doubles up on request logs - app.middleware.delete ::Rails::Rack::Logger - end + # 2. Remove the Rails::Rack::Logger middleware as it also doubles up on request logs + app.middleware.delete ::Rails::Rack::Logger + end # 3. Remove existing log subscribers for ActionController and ActionView config.after_initialize do - ::ActionController::LogSubscriber.detach_from :action_controller - - # Silence the default action view logs, e.g. "Rendering text template" etc - ::ActionView::LogSubscriber.detach_from :action_view - end + if ::ActionController::LogSubscriber < ::ActiveSupport::LogSubscriber + ::ActionController::LogSubscriber.detach_from :action_controller + else + ::ActiveSupport.event_reporter.unsubscribe(::ActionController::LogSubscriber) + end + + # Silence the default action view logs, e.g. "Rendering text template" etc + if ::ActionView::LogSubscriber < ::ActiveSupport::LogSubscriber + ::ActionView::LogSubscriber.detach_from :action_view + else + ::ActiveSupport.event_reporter.unsubscribe(::ActionView::LogSubscriber) + end + end config.after_initialize do - # 4. Add a new log subscriber for ActionController - ActionController.apply! + # 4. Add a new log subscriber for ActionController + ActionController.apply! - # 5. (optionally) Add a new log subscriber for ActiveRecord - # ActiveRecord.apply! - end + # 5. (optionally) Add a new log subscriber for ActiveRecord + # ActiveRecord.apply! + end end end end From a21070405af5083b2226763b6902c2b7b95cde42 Mon Sep 17 00:00:00 2001 From: jasl Date: Sun, 7 Dec 2025 22:12:58 +0800 Subject: [PATCH 2/4] Update GitHub actions --- .github/workflows/documentation-coverage.yaml | 2 +- .github/workflows/documentation.yaml | 4 ++-- .github/workflows/rubocop.yaml | 2 +- .github/workflows/test-coverage.yaml | 8 ++++---- .github/workflows/test-external.yaml | 2 +- .github/workflows/test.yaml | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/documentation-coverage.yaml b/.github/workflows/documentation-coverage.yaml index b3bac9a..2824fd4 100644 --- a/.github/workflows/documentation-coverage.yaml +++ b/.github/workflows/documentation-coverage.yaml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: ruby/setup-ruby@v1 with: ruby-version: "3.3" diff --git a/.github/workflows/documentation.yaml b/.github/workflows/documentation.yaml index f5f553a..41a0f6e 100644 --- a/.github/workflows/documentation.yaml +++ b/.github/workflows/documentation.yaml @@ -25,7 +25,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: ruby/setup-ruby@v1 with: @@ -40,7 +40,7 @@ jobs: run: bundle exec bake utopia:project:static --force no - name: Upload documentation artifact - uses: actions/upload-pages-artifact@v3 + uses: actions/upload-pages-artifact@v4 with: path: docs diff --git a/.github/workflows/rubocop.yaml b/.github/workflows/rubocop.yaml index 287c06d..ceaa1a8 100644 --- a/.github/workflows/rubocop.yaml +++ b/.github/workflows/rubocop.yaml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: ruby/setup-ruby@v1 with: ruby-version: ruby diff --git a/.github/workflows/test-coverage.yaml b/.github/workflows/test-coverage.yaml index f9da2ff..00cf624 100644 --- a/.github/workflows/test-coverage.yaml +++ b/.github/workflows/test-coverage.yaml @@ -24,7 +24,7 @@ jobs: - "3.3" steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{matrix.ruby}} @@ -34,7 +34,7 @@ jobs: timeout-minutes: 5 run: bundle exec bake test - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v5 with: name: coverage-${{matrix.os}}-${{matrix.ruby}} path: .covered.db @@ -44,13 +44,13 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: ruby/setup-ruby@v1 with: ruby-version: "3.3" bundler-cache: true - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v5 - name: Validate coverage timeout-minutes: 5 diff --git a/.github/workflows/test-external.yaml b/.github/workflows/test-external.yaml index 21898f5..be83e1b 100644 --- a/.github/workflows/test-external.yaml +++ b/.github/workflows/test-external.yaml @@ -25,7 +25,7 @@ jobs: - "3.3" steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{matrix.ruby}} diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 641985e..ab51378 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -46,7 +46,7 @@ jobs: BUNDLE_GEMFILE: ${{matrix.gemfile}} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{matrix.ruby}} From 98c5f515535d5e4632fb990f3f65a43fe6d13f29 Mon Sep 17 00:00:00 2001 From: jasl Date: Sun, 7 Dec 2025 22:15:32 +0800 Subject: [PATCH 3/4] Set minimum Rails to 7.0; Update CI matrix --- .github/workflows/documentation-coverage.yaml | 2 +- .github/workflows/documentation.yaml | 2 +- .github/workflows/test-coverage.yaml | 3 ++- .github/workflows/test-external.yaml | 4 +--- .github/workflows/test.yaml | 5 ++--- console-adapter-rails.gemspec | 2 +- gems.rb | 2 +- gems/{rails-v6.rb => rails-v8.rb} | 2 +- 8 files changed, 10 insertions(+), 12 deletions(-) rename gems/{rails-v6.rb => rails-v8.rb} (86%) diff --git a/.github/workflows/documentation-coverage.yaml b/.github/workflows/documentation-coverage.yaml index 2824fd4..54ffa73 100644 --- a/.github/workflows/documentation-coverage.yaml +++ b/.github/workflows/documentation-coverage.yaml @@ -17,7 +17,7 @@ jobs: - uses: actions/checkout@v6 - uses: ruby/setup-ruby@v1 with: - ruby-version: "3.3" + ruby-version: "3.4" bundler-cache: true - name: Validate coverage diff --git a/.github/workflows/documentation.yaml b/.github/workflows/documentation.yaml index 41a0f6e..5ea21e4 100644 --- a/.github/workflows/documentation.yaml +++ b/.github/workflows/documentation.yaml @@ -29,7 +29,7 @@ jobs: - uses: ruby/setup-ruby@v1 with: - ruby-version: "3.3" + ruby-version: "3.4" bundler-cache: true - name: Installing packages diff --git a/.github/workflows/test-coverage.yaml b/.github/workflows/test-coverage.yaml index 00cf624..cc88a02 100644 --- a/.github/workflows/test-coverage.yaml +++ b/.github/workflows/test-coverage.yaml @@ -22,6 +22,7 @@ jobs: ruby: - "3.3" + - "3.4" steps: - uses: actions/checkout@v6 @@ -47,7 +48,7 @@ jobs: - uses: actions/checkout@v6 - uses: ruby/setup-ruby@v1 with: - ruby-version: "3.3" + ruby-version: "3.4" bundler-cache: true - uses: actions/download-artifact@v5 diff --git a/.github/workflows/test-external.yaml b/.github/workflows/test-external.yaml index be83e1b..847d901 100644 --- a/.github/workflows/test-external.yaml +++ b/.github/workflows/test-external.yaml @@ -20,9 +20,7 @@ jobs: - macos ruby: - - "3.1" - - "3.2" - - "3.3" + - "3.4" steps: - uses: actions/checkout@v6 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index ab51378..309b7da 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -21,13 +21,12 @@ jobs: - macos ruby: - - "3.1" - - "3.2" - "3.3" + - "3.4" gemfile: - - gems/rails-v6.rb - gems/rails-v7.rb + - gems/rails-v8.rb experimental: [false] diff --git a/console-adapter-rails.gemspec b/console-adapter-rails.gemspec index e0d203f..1b09309 100644 --- a/console-adapter-rails.gemspec +++ b/console-adapter-rails.gemspec @@ -26,5 +26,5 @@ Gem::Specification.new do |spec| spec.add_dependency "console", "~> 1.21" spec.add_dependency "fiber-storage", "~> 1.0" - spec.add_dependency "rails", ">= 6.1" + spec.add_dependency "rails", ">= 7.0" end diff --git a/gems.rb b/gems.rb index 464bae2..b2550a9 100644 --- a/gems.rb +++ b/gems.rb @@ -23,5 +23,5 @@ gem "bake-test" gem "bake-test-external" - gem "sqlite3", "~> 1.4" + gem "sqlite3", ">= 1.4" end diff --git a/gems/rails-v6.rb b/gems/rails-v8.rb similarity index 86% rename from gems/rails-v6.rb rename to gems/rails-v8.rb index f761827..0bdf539 100644 --- a/gems/rails-v6.rb +++ b/gems/rails-v8.rb @@ -5,4 +5,4 @@ eval_gemfile('../gems.rb') -gem 'rails', '~> 6.0' +gem 'rails', '~> 8.0' From f899e008ad5d07d05bc212a62873fc5f5911678d Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Wed, 10 Dec 2025 10:20:12 +1300 Subject: [PATCH 4/4] Indentation. --- lib/console/adapter/rails/railtie.rb | 54 ++++++++++++++-------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/lib/console/adapter/rails/railtie.rb b/lib/console/adapter/rails/railtie.rb index 61c1d22..5e7c684 100644 --- a/lib/console/adapter/rails/railtie.rb +++ b/lib/console/adapter/rails/railtie.rb @@ -13,36 +13,36 @@ module Rails # Hook into Rails startup process and replace Rails.logger with our custom hooks class Railtie < ::Rails::Railtie initializer 'console.adapter.rails', before: :initialize_logger do |app| - # 1. Set up Console to be used as the Rails logger - Logger.apply!(configuration: app.config) - - # 2. Remove the Rails::Rack::Logger middleware as it also doubles up on request logs - app.middleware.delete ::Rails::Rack::Logger - end - + # 1. Set up Console to be used as the Rails logger + Logger.apply!(configuration: app.config) + + # 2. Remove the Rails::Rack::Logger middleware as it also doubles up on request logs + app.middleware.delete ::Rails::Rack::Logger + end + # 3. Remove existing log subscribers for ActionController and ActionView config.after_initialize do - if ::ActionController::LogSubscriber < ::ActiveSupport::LogSubscriber - ::ActionController::LogSubscriber.detach_from :action_controller - else - ::ActiveSupport.event_reporter.unsubscribe(::ActionController::LogSubscriber) - end - - # Silence the default action view logs, e.g. "Rendering text template" etc - if ::ActionView::LogSubscriber < ::ActiveSupport::LogSubscriber - ::ActionView::LogSubscriber.detach_from :action_view - else - ::ActiveSupport.event_reporter.unsubscribe(::ActionView::LogSubscriber) - end - end - + if ::ActionController::LogSubscriber < ::ActiveSupport::LogSubscriber + ::ActionController::LogSubscriber.detach_from :action_controller + else + ::ActiveSupport.event_reporter.unsubscribe(::ActionController::LogSubscriber) + end + + # Silence the default action view logs, e.g. "Rendering text template" etc + if ::ActionView::LogSubscriber < ::ActiveSupport::LogSubscriber + ::ActionView::LogSubscriber.detach_from :action_view + else + ::ActiveSupport.event_reporter.unsubscribe(::ActionView::LogSubscriber) + end + end + config.after_initialize do - # 4. Add a new log subscriber for ActionController - ActionController.apply! - - # 5. (optionally) Add a new log subscriber for ActiveRecord - # ActiveRecord.apply! - end + # 4. Add a new log subscriber for ActionController + ActionController.apply! + + # 5. (optionally) Add a new log subscriber for ActiveRecord + # ActiveRecord.apply! + end end end end