为我们的 Rails 3.2.22.2 应用程序测试升级到 Ruby 2.3.3,并得到一个奇怪的情况,我们将数组作为第一个参数传递给Tempfile.new
,但它最终以哈希的形式出现。
我已经修补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'
必须是宝石或其他东西,但我一生都无法弄清楚为什么会发生这种情况,或者在哪里或在什么地方改变了行为。
关于如何调试的任何想法或建议?