Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hide method redefined warnings #875

Merged
merged 1 commit into from
Apr 19, 2023

Conversation

Rubyist007
Copy link
Contributor

A few warning messages appear while using Oj.optimize_rails with $VERBOSE = true
Here they are:

.../config/application.rb:23: warning: method redefined; discarding old create_id=
/Users/vasyldubinchyk/.rvm/gems/ruby-3.1.3/gems/json-2.6.2/lib/json/common.rb:120: warning: previous definition of create_id= was here
.../config/application.rb:23: warning: method redefined; discarding old create_id
/Users/vasyldubinchyk/.rvm/gems/ruby-3.1.3/gems/json-2.6.2/lib/json/common.rb:126: warning: previous definition of create_id was here
.../config/application.rb:23: warning: method redefined; discarding old dump
/Users/vasyldubinchyk/.rvm/gems/ruby-3.1.3/gems/json-2.6.2/lib/json/common.rb:631: warning: previous definition of dump was here
.../config/application.rb:23: warning: method redefined; discarding old dump
/Users/vasyldubinchyk/.rvm/gems/ruby-3.1.3/gems/json-2.6.2/lib/json/common.rb:631: warning: previous definition of dump was here
.../config/application.rb:23: warning: method redefined; discarding old load
/Users/vasyldubinchyk/.rvm/gems/ruby-3.1.3/gems/json-2.6.2/lib/json/common.rb:557: warning: previous definition of load was here
.../config/application.rb:23: warning: method redefined; discarding old recurse_proc
/Users/vasyldubinchyk/.rvm/gems/ruby-3.1.3/gems/json-2.6.2/lib/json/common.rb:575: warning: previous definition of recurse_proc was here
.../config/application.rb:23: warning: method redefined; discarding old recurse_proc
/Users/vasyldubinchyk/.rvm/gems/ruby-3.1.3/gems/json-2.6.2/lib/json/common.rb:575: warning: previous definition of recurse_proc was here
.../config/application.rb:23: warning: method redefined; discarding old []
/Users/vasyldubinchyk/.rvm/gems/ruby-3.1.3/gems/json-2.6.2/lib/json/common.rb:18: warning: previous definition of [] was here
.../config/application.rb:23: warning: method redefined; discarding old generate
/Users/vasyldubinchyk/.rvm/gems/ruby-3.1.3/gems/json-2.6.2/lib/json/common.rb:296: warning: previous definition of generate was here
.../config/application.rb:23: warning: method redefined; discarding old fast_generate
/Users/vasyldubinchyk/.rvm/gems/ruby-3.1.3/gems/json-2.6.2/lib/json/common.rb:335: warning: previous definition of fast_generate was here
.../config/application.rb:23: warning: method redefined; discarding old pretty_generate
/Users/vasyldubinchyk/.rvm/gems/ruby-3.1.3/gems/json-2.6.2/lib/json/common.rb:390: warning: previous definition of pretty_generate was here
.../config/application.rb:23: warning: method redefined; discarding old parse
.../config/application.rb:23: warning: method redefined; discarding old parse
.../config/application.rb:23: warning: method redefined; discarding old parse!
/Users/vasyldubinchyk/.rvm/gems/ruby-3.1.3/gems/json-2.6.2/lib/json/common.rb:230: warning: previous definition of parse! was here
.../config/application.rb:23: warning: method redefined; discarding old parse!
/Users/vasyldubinchyk/.rvm/gems/ruby-3.1.3/gems/json-2.6.2/lib/json/common.rb:230: warning: previous definition of parse! was here
.../config/application.rb:23: warning: method redefined; discarding old state

To fix this problem I suggest using the same method that used here:

oj/ext/oj/rails.c

Lines 1041 to 1062 in 8095883

// rb_undef_method doesn't work for modules or maybe sometimes
// doesn't. Anyway setting verbose should hide the warning.
verbose = rb_gv_get("$VERBOSE");
rb_gv_set("$VERBOSE", Qfalse);
rb_undef_method(encoding, "use_standard_json_time_format=");
rb_define_module_function(encoding, "use_standard_json_time_format=", rails_use_standard_json_time_format, 1);
rb_undef_method(encoding, "use_standard_json_time_format");
rb_define_module_function(encoding, "use_standard_json_time_format", rails_use_standard_json_time_format_get, 0);
pv = rb_iv_get(encoding, "@escape_html_entities_in_json");
escape_html = Qtrue == pv;
rb_undef_method(encoding, "escape_html_entities_in_json=");
rb_define_module_function(encoding, "escape_html_entities_in_json=", rails_escape_html_entities_in_json, 1);
rb_undef_method(encoding, "escape_html_entities_in_json");
rb_define_module_function(encoding, "escape_html_entities_in_json", rails_escape_html_entities_in_json_get, 0);
pv = rb_iv_get(encoding, "@time_precision");
oj_default_options.sec_prec = NUM2INT(pv);
oj_default_options.sec_prec_set = true;
rb_undef_method(encoding, "time_precision=");
rb_define_module_function(encoding, "time_precision=", rails_time_precision, 1);
rb_gv_set("$VERBOSE", verbose);

oj/ext/oj/rails.c

Lines 1093 to 1099 in 8095883

// rb_undef_method doesn't work for modules or maybe sometimes
// doesn't. Anyway setting verbose should hide the warning.
verbose = rb_gv_get("$VERBOSE");
rb_gv_set("$VERBOSE", Qfalse);
rb_undef_method(json, "parse");
rb_define_module_function(json, "parse", oj_mimic_parse, -1);
rb_gv_set("$VERBOSE", verbose);

@Rubyist007 Rubyist007 changed the title hide method redefined warnings Hide method redefined warnings Apr 19, 2023
@ohler55
Copy link
Owner

ohler55 commented Apr 19, 2023

Thanks for the cleanup.

@ohler55 ohler55 merged commit 3a00e85 into ohler55:develop Apr 19, 2023
36 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants