3.days.ago、2.hours.from_now 等没有 Rails?

Posted

技术标签:

【中文标题】3.days.ago、2.hours.from_now 等没有 Rails?【英文标题】:3.days.ago, 2.hours.from_now etc without Rails? 【发布时间】:2011-09-19 04:58:20 【问题描述】:

有些书提到了一些用#days#megabytes#minutes 等来装饰数字的 gem。这只是在 ActiveSupport 中,还是有一个更小的 gem 提供此功能以用于(小)非 Rails宝石?我想在一个小小的 gem 中将此功能用作 DSL 的一部分。

【问题讨论】:

我也喜欢这种行为,并且经常想在我的非 Rails Ruby 项目中使用它。好问题... 【参考方案1】:

我不确定除了ActiveSupport 之外是否还有其他可用的 gem,但是自己制作一个小版本真的很简单:

class Fixnum
  SECONDS_IN_DAY = 24 * 60 * 60

  def days
    self * SECONDS_IN_DAY
  end

  def ago
    Time.now - self
  end
end

3.days.ago #=> 2011-06-18 08:45:29 0200

【讨论】:

这似乎是我最终要走的路,谢谢。我认为 Numeric 的事情是在其他人的项目中开始的,而 ActiveSupport 只是将它合并到他们自己的源中。不过我可能只是在想象。 干得好!!【参考方案2】:

我找到了:https://github.com/kylewlacy/timerizer

【讨论】:

正是我想要的。没有被广泛使用或成熟(最近的版本是 0.3.0;当我输入这个时,33 颗星和 3 个分叉),但它已经有一段时间了,看起来是一个赢得了胜利的插件不要强迫我将 ActiveSupport 破解管道添加到我的 Hanami 项目中。谢谢。【参考方案3】:

ActiveSupport 具有此功能。它最初是 Rails 的一部分,但现在可以单独使用。

【讨论】:

这是正确的,但请注意您不能再只是require 'activesupport'。 OP 需要更明确地说明他们想从 activesupport 中向require 发送什么。如果你只是想要时间,你可以require "active_support/core_ext/numeric/time" 我真的不想依赖所有的 ActiveSupport :) 这就是我试图避免的。我的 Gem 只是一个包含大约 30 行代码的类:P 但感谢您的确认 :) @d11wtq 那么 michael kohl 的回答将是正确的选择。只需使用 daysago 方法扩展 fixnum 类即可。 现在是require 'active_support/all'

以上是关于3.days.ago、2.hours.from_now 等没有 Rails?的主要内容,如果未能解决你的问题,请参考以下文章