2011-06-21 12 views
25

Bazı kitaplarda, #days, , #megabytes, #minutes vb. Sayıları süslemek için bazı mücevherler belirtilmiştir. Bu yalnızca ActiveSupport'ta mı yoksa bu işlevsellik (küçük) ray olmayan taşlarda kullanım için daha küçük bir taş var mı? Bu işlevselliği, küçük bir gemide DSL'nin bir parçası olarak kullanmak istiyorum. Bu işlevselliğe sahiptir.3.days.ago, 2.hours.from_now vb Raylar olmadan?

+0

Ben de bu davranışı ister ve çoğu zaman benim olmayan raylar projeleri yakut kullanmak istedim: – jaydel

cevap

34

Uygun başka taş ActiveSupport yanında varsa emin değilim, ama küçük bir sürümünü kendiniz yapmak gerçekten düz ileri olacaktır:

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_nowago gibi ama + self ve weeks ile uygulanabilir Farklı sabitler kullanarak days gibi hours vb. https://github.com/kylewlacy/timerizer

+1

Bu sanki gidiş yolum gibi görünüyor, teşekkürler. Sayısal şeyin bir başkasının projesinde başladığını ve ActiveSupport'un bunu kendi kaynakları ile birleştirdiğini düşündüm. Muhtemelen sadece hayal ediyorum. – d11wtq

+1

çok güzel bir iş! –

9

ActiveSupport Aslen Rayların bir parçasıydı ama şimdi ayrı olarak kullanılabilir.

+18

Bu doğru ama artık sadece '' 'activesupport '' 'gerektirmeyeceğini de unutmayın. OP'nin aktive edilmeden ne istediklerini '' gerektiren '' konusunda biraz daha açık olması gerekecek. Eğer sadece zaman isteseniz "active_support/core_ext/numeric/time" '' '' '' ' –

+0

gerektirebilir. Bunun için tüm ActiveSupport'a güvenmek istemiyorum :) Bu kaçınmaya çalıştığım bir çeşitdi. . Benim Gem sadece yaklaşık 30 satır kod ile tek bir sınıftır: P Ama onay için teşekkürler :) – d11wtq

+0

@ d11wtq sonra michael kohl'un cevabı gitmek için yol olacaktır. Sadece fixnum sınıfını '' '' '' '' '' '' '' 'yöntemiyle genişletmek. –

1

buldum. İyi soru ...