Fixed SystemStackError: stack level too deep when used with activerecord-session_store

Andrew Kane committed Jun 18, 2015
commit 8704eaf1c16b870bb18655a9b745d9474e1e2839
Showing 2 changed files with 16 additions and 6 deletions
CHANGELOG.md +4 -0
@@ @@ -1,3 +1,7 @@
+ ## 1.2.1 [unreleased]
+
+ - Fixed `SystemStackError: stack level too deep` when used with `activerecord-session_store`
+
## 1.2.0
- Added support for PostgreSQL `jsonb` column type
ahoy.rb b/lib/ahoy.rb +12 -6
@@ @@ -24,7 +24,6 @@ require "ahoy/stores/active_record_token_store"
require "ahoy/stores/log_store"
require "ahoy/stores/fluentd_store"
require "ahoy/stores/mongoid_store"
- require "ahoy/logger_silencer"
require "ahoy/engine"
require "ahoy/warden" if defined?(Warden)
@@ @@ -85,9 +84,16 @@ end
ActionController::Base.send :include, Ahoy::Controller
ActiveRecord::Base.send(:extend, Ahoy::Model) if defined?(ActiveRecord)
- Logger.send :include, Ahoy::LoggerSilencer
-
+ # ensure logger silence will not be added by activerecord-session_store
+ # otherwise, we get SystemStackError: stack level too deep
begin
- require "syslog/logger"
- Syslog::Logger.send :include, Ahoy::LoggerSilencer
- rescue LoadError; end
+ require "active_record/session_store/extension/logger_silencer"
+ rescue LoadError
+ require "ahoy/logger_silencer"
+ Logger.send :include, Ahoy::LoggerSilencer
+
+ begin
+ require "syslog/logger"
+ Syslog::Logger.send :include, Ahoy::LoggerSilencer
+ rescue LoadError; end
+ end