我觉得这很奇怪。为什么我不能这样做?:
puts Time.now
x=2
puts x
puts x.class
sleep x
puts Time.now
x=x.seconds
puts x
puts x.class
sleep (x)
puts Time.now
我得到的输出是:
Mon Oct 01 16:14:58 +0530 2012
2
Fixnum
Mon Oct 01 16:15:00 +0530 2012
2
Fixnum
rake aborted!
can't convert ActiveSupport::Duration into time interval
/Users/hariharanganapathiraman/Documents/MigrationScripts/sample/lib/import/boot.rb:23:in `sleep'
同样,它不适用于 .minutes
或 .days
。
最佳答案
那是因为 ActiveSupport::Duration
将自己模仿为 Fixnum
类:
ActiveSupport::Duration.new(3600, [[:seconds, 3600]]).class #=> Fixnum
使用sleep(2.seconds.to_i)
。
关于ruby-on-rails - Ruby 中的 sleep 语句不接受任何 Rails 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12671849/