Тестирование обновления до Ruby 2.3.3 для нашего приложения Rails 3.2.22.2 и получение странной ситуации, когда мы передаем массив как первый аргумент Tempfile.new
, но он заканчивается как хэш.Ruby 2.3.3: Weird Tempfile.new ([имя, префикс]) basename преобразован в hash
Я пропатчен tempfile.rb
для вывода basename
аргумента, передаваемый в
В irb
сессии (не-Rails), все в порядке:.
> require 'tempfile'
true
> Tempfile.new(['test', '.csv'])
["home", ".csv"] # output of basename argument for Tempfile.new
=> #<Tempfile:/var/blah/test###.csv>
В сеансе rails console
:
> Tempfile.new(['test', '.csv'])
{"test"=>nil, ".csv"=>nil}
ArgumentError: unexpected prefix: {"test"=>nil, ".csv"=>nil}
from /path/to/ruby-2.3.3/lib/ruby/2.3.0/tmpdir.rb:113:in `make_tmpname'
Должен быть драгоценным камнем или чем-то еще, но не может понять, почему это происходит или где или что меняет поведение.
Любые идеи или предложения по отладке?
Каков результат 'puts caller' внутри вашего исправленного tempfile.rb? –