ruby-on-rails - Ruby 中的 sleep 语句不接受任何 Rails 转换

标签 ruby-on-rails ruby

我觉得这很奇怪。为什么我不能这样做?:

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/

相关文章:

ruby-on-rails - 如何使用 ruby​​ on rails 事件记录创建二进制索引?

ruby-on-rails - rails 如何正确地将模型移动到命名空间

ruby-on-rails - Rails 完整引擎路线未加载到 Rails 4 应用程序中

ruby-on-rails - 处理业务代码中的 GraphQL Enum 值

ruby-on-rails - mysql和ruby-mysql gem有什么区别

ruby-on-rails - Heroku 服务器无法与 Devise 配合使用

ruby-on-rails - Rails API 不拆分 Json

ruby - rspec 中的 double 方法有什么用?

ruby-on-rails - 将应用程序从 Heroku 迁移到 AWS 的高级说明?

ruby-on-rails - rcov + Rails3 rc 现在不再依赖于 linecache