Skip to content

Commit bd3908e

Browse files
committed
Add ActiveModelSerializers.logger with default null device
1 parent 39d6dab commit bd3908e

File tree

3 files changed

+42
-14
lines changed

3 files changed

+42
-14
lines changed

lib/active_model/serializer/railtie.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
require 'rails/railtie'
22
module ActiveModel
33
class Railtie < Rails::Railtie
4+
initializer 'active_model_serializers.logger' do
5+
ActiveSupport.on_load(:action_controller) do
6+
ActiveModelSerializers.logger = ActionController::Base.logger
7+
end
8+
end
9+
410
initializer 'generators' do |app|
511
app.load_generators
612
require 'generators/serializer/resource_override'

lib/active_model_serializers.rb

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
1+
require 'logger'
2+
require 'active_model'
3+
require "active_support/railtie"
4+
require 'action_controller'
5+
require "action_controller/railtie"
16
module ActiveModelSerializers
7+
mattr_accessor :logger
8+
self.logger = Rails.logger || Logger.new(IO::NULL)
9+
210
module_function
311

412
def silence_warnings
@@ -10,22 +18,17 @@ def silence_warnings
1018
end
1119

1220
end
13-
require 'active_model'
14-
require 'active_model/serializer/version'
21+
1522
require 'active_model/serializer'
1623
require 'active_model/serializable_resource'
24+
require 'active_model/serializer/version'
1725

18-
begin
19-
require 'active_model/serializer/railtie'
20-
require 'action_controller'
21-
require 'action_controller/serialization'
22-
23-
ActiveSupport.on_load(:action_controller) do
24-
include ::ActionController::Serialization
25-
ActionDispatch::Reloader.to_prepare do
26-
ActiveModel::Serializer.serializers_cache.clear
27-
end
26+
require 'action_controller/serialization'
27+
ActiveSupport.on_load(:action_controller) do
28+
include ::ActionController::Serialization
29+
ActionDispatch::Reloader.to_prepare do
30+
ActiveModel::Serializer.serializers_cache.clear
2831
end
29-
rescue LoadError
30-
# rails not installed, continuing
3132
end
33+
34+
require 'active_model/serializer/railtie'

test/logger_test.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
require 'test_helper'
2+
3+
class ActiveModelSerializers::LoggerTest < Minitest::Test
4+
5+
def test_logger_is_set_to_action_controller_logger_when_initializer_runs
6+
assert_equal ActiveModelSerializers.logger, ActionController::Base.logger
7+
end
8+
9+
def test_logger_can_be_set
10+
original_logger = ActiveModelSerializers.logger
11+
logger = Logger.new(STDOUT)
12+
13+
ActiveModelSerializers.logger = logger
14+
15+
assert_equal ActiveModelSerializers.logger, logger
16+
ensure
17+
ActiveModelSerializers.logger = original_logger
18+
end
19+
end

0 commit comments

Comments
 (0)