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 的回答将是正确的选择。只需使用 days
和 ago
方法扩展 fixnum 类即可。
现在是require 'active_support/all'
以上是关于3.days.ago、2.hours.from_now 等没有 Rails?的主要内容,如果未能解决你的问题,请参考以下文章