File tree Expand file tree Collapse file tree 4 files changed +42
-2
lines changed
lib/rails_semantic_logger/active_record Expand file tree Collapse file tree 4 files changed +42
-2
lines changed Original file line number Diff line number Diff line change @@ -54,8 +54,13 @@ def sql(event)
5454
5555 # When multiple values are received for a single bound field, it is converted into an array
5656 def add_bind_value ( binds , key , value )
57- key = key . downcase . to_sym unless key . nil?
58- value = ( Array ( binds [ key ] ) << value ) if binds . key? ( key )
57+ key = key . downcase . to_sym unless key . nil?
58+ if Rails . configuration . filter_parameters . include? key
59+ value = "[FILTERED]"
60+ elsif binds . key? ( key )
61+ value = ( Array ( binds [ key ] ) << value )
62+ end
63+
5964 binds [ key ] = value
6065 end
6166
Original file line number Diff line number Diff line change @@ -87,6 +87,34 @@ class ActiveRecordTest < Minitest::Test
8787 assert_instance_of Integer , messages [ 0 ] . payload [ :allocations ] if Rails . version . to_i >= 6
8888 end
8989
90+ it "filtered bind value" do
91+ filter_params_setting true , %i[ name ] do
92+ expected_sql =
93+ if Rails . version . to_f >= 5.2
94+ "SELECT #{ extra_space } \" samples\" .* FROM \" samples\" WHERE \" samples\" .\" name\" = ? ORDER BY \" samples\" .\" id\" ASC LIMIT ?"
95+ else
96+ "SELECT \" samples\" .* FROM \" samples\" WHERE \" samples\" .\" name\" = ? ORDER BY \" samples\" .\" id\" ASC LIMIT ?"
97+ end
98+
99+ messages = semantic_logger_events do
100+ Sample . where ( name : "Jack" ) . first
101+ end
102+ assert_equal 1 , messages . count , messages
103+
104+ assert_semantic_logger_event (
105+ messages [ 0 ] ,
106+ level : :debug ,
107+ name : "ActiveRecord" ,
108+ message : "Sample Load" ,
109+ payload_includes : {
110+ sql : expected_sql ,
111+ binds : { name : "[FILTERED]" , limit : 1 }
112+ }
113+ )
114+ assert_instance_of Integer , messages [ 0 ] . payload [ :allocations ] if Rails . version . to_i >= 6
115+ end
116+ end
117+
90118 it "multiple bind values" do
91119 skip "Not applicable to older rails" if Rails . version . to_f <= 5.1
92120
Original file line number Diff line number Diff line change 2323Minitest ::Test . include SemanticLogger ::Test ::Minitest
2424
2525ActionMailer ::Base . delivery_method = :test
26+
27+ def filter_params_setting ( value , user_defined_params , &block )
28+ Rails . configuration . filter_parameters += user_defined_params
29+ block . call
30+ ensure
31+ Rails . configuration . filter_parameters -= user_defined_params
32+ end
You can’t perform that action at this time.
0 commit comments