Для чего это стоит, я могу воспроизвести с Ruby 2.6.3 и Прай 0.12.2:
[1] pry(main)> def func1(params)
[1] pry(main)* params.split('&').map { |str| str.split('=').last }.join('-')
[1] pry(main)* end
=> :func1
[2] pry(main)>
[3] pry(main)> def func2(params)
[3] pry(main)* params.split('&')
[3] pry(main)* .map { |str| str.split('=').last }
sh: 1: Syntax error: word unexpected (expecting ")")
Error: there was a problem executing system command: map { |str| str.split('=').last }
[3] pry(main)* .join('-')
sh: 1: Syntax error: word unexpected (expecting ")")
Error: there was a problem executing system command: join('-')
[3] pry(main)* end
=> :func2
[4] pry(main)>
[5] pry(main)> func1("a=1&b=2&c=3") # "1-2-3"
=> "1-2-3"
[6] pry(main)> func2("a=1&b=2&c=3") # ["a=1", "b=2", "c=3"]
=> ["a=1", "b=2", "c=3"]
[7] pry(main)> Pry::VERSION
=> "0.12.2"
Кажется, работает нормально со стандартным IRB:
2.6.3 :001 > def func1(params)
2.6.3 :002?> params.split('&').map { |str| str.split('=').last }.join('-')
2.6.3 :003?> end
=> :func1
2.6.3 :004 >
2.6.3 :005 > def func2(params)
2.6.3 :006?> params.split('&')
2.6.3 :007?> .map { |str| str.split('=').last }
2.6.3 :008?> .join('-')
2.6.3 :009?> end
=> :func2
2.6.3 :010 >
2.6.3 :011 > func1("a=1&b=2&c=3") # "1-2-3"
=> "1-2-3"
2.6.3 :012 > func2("a=1&b=2&c=3") # ["a=1", "b=2", "c=3"]
=> "1-2-3"
Изменение на
def func2(params)
params.split('&').map do |str|
str.split('=').last
end.join('-')
end
решает проблему в Pry.
Эта проблема («Нужен простой способ вставить многострочный код») может быть связанным.