3.days.prije, 2.hours.from_now и т.н. без Rails?

В някоя книга се споменава някакъв скъпоценен камък за украсяване на числа с #days, #megabytes, #minutes и т.н. Това само в ActiveSupport ли е, или има по-малък скъпоценен камък, който предоставя тази функционалност за използване в (малки) нерелсови скъпоценни камъни? Искам да използвам тази функционалност като част от DSL в малко малко бижу.


person d11wtq    schedule 21.06.2011    source източник
comment
И аз харесвам това поведение и често съм искал да го използвам в моите нерелсови ruby ​​проекти. Добър въпрос...   -  person jaydel    schedule 21.06.2011


Отговори (3)


Не съм сигурен дали има друг наличен скъпоценен камък освен ActiveSupport, но би било наистина лесно да направите сами малка версия:

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

from_now може да се реализира като ago, но с + self и weeks, hours и т.н. като days, като се използват различни константи.

person Michael Kohl    schedule 21.06.2011
comment
Изглежда, че това може да е начинът, по който ще тръгна, благодаря. Мислех, че нещото Numeric е започнало в проект на някой друг и че ActiveSupport просто го е слял в техния собствен източник. Сигурно само си въобразявам. - person d11wtq; 21.06.2011
comment
много хубава работа!! - person Chris Habgood; 18.02.2018

ActiveSupport има тази функционалност. Първоначално беше част от Rails, но сега може да се използва отделно.

person Jordan Running    schedule 21.06.2011
comment
Това е правилно, но имайте предвид, че вече не можете просто require 'activesupport'. OP ще трябва да бъде малко по-ясно какво искат да require от activesupport. Ако просто искате време, можете да require "active_support/core_ext/numeric/time" - person Caley Woods; 21.06.2011
comment
Наистина не искам да разчитам на цялата ActiveSupport за това :) Това беше нещо, което се опитвах да избегна. Моят Gem е само един клас с около 30 реда код: P Но благодаря за потвърждението :) - person d11wtq; 21.06.2011
comment
@d11wtq тогава отговорът на Майкъл Кол би бил правилният начин. Просто разширяване на класа fixnum с нещо като метод days и ago. - person Caley Woods; 21.06.2011
comment
това е require 'active_support/all' в наши дни - person phoet; 29.01.2014

Намерих: https://github.com/kylewlacy/timerizer

person Erik    schedule 12.10.2012
comment
Точно това, което търсих. Не е широко използван или зрял (най-новата версия е 0.3.0; 33 звезди и 3 разклонения, докато пиша това), но е от известно време и изглежда, че е пускане, което спечели Не ме принуждавайте да добавя крак канала ActiveSupport към моя проект Hanami. Благодаря. - person Jeff Dickey; 15.04.2018