From f451bb5406878e1ac9ce9d37952f171837d0cb09 Mon Sep 17 00:00:00 2001 From: Lars Kanis Date: Fri, 17 Jan 2020 19:30:28 +0100 Subject: [ruby/irb] Fix compatibility with rails before 5.2 Rails before 5.2 added Array#append as an alias to Array#<< , so that it expects only one argument. However ruby-2.5 added Array#append as an alias to Array#push which takes any number of arguments. If irb completion is used in `rails c` (for example "IO.") it fails with: irb/completion.rb:206:in `<<': wrong number of arguments (given 3, expected 1) (ArgumentError) Using Array#push instead of Array#append fixes compatibility. https://github.com/ruby/irb/commit/5b7bbf9c34 --- lib/irb/completion.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/irb') diff --git a/lib/irb/completion.rb b/lib/irb/completion.rb index 3536e8ec87..474d13cdbb 100644 --- a/lib/irb/completion.rb +++ b/lib/irb/completion.rb @@ -203,7 +203,7 @@ module IRB sep = $2 message = Regexp.quote($3) - gv = eval("global_variables", bind).collect{|m| m.to_s}.append("true", "false", "nil") + gv = eval("global_variables", bind).collect{|m| m.to_s}.push("true", "false", "nil") lv = eval("local_variables", bind).collect{|m| m.to_s} iv = eval("instance_variables", bind).collect{|m| m.to_s} cv = eval("self.class.constants", bind).collect{|m| m.to_s} -- cgit v1.2.3