Active Support çekirdek uzantıları nasıl kullanılır


96

Active Support 3.0.3 kurulu ve Ruby 1.8.7 ile Rails 3.0.3 kullanıyorum.

Kullanmaya çalıştığımda 1.week.agoalırım

NoMethodError: undefined method 'week' for 1:Fixnum
from (irb):2

Diğer çekirdek uzantılar işe yarıyor gibi görünüyor. Bir arkadaşımın bilgisayarında denedim (aynı yükleme özellikleri ve eski sürümler onun üzerinde) aynı sonuçlarla.

Ne oluyor?

Bunların hepsi IRB'de.


Kodunuzun bir Rails uygulamasında mı yoksa bazı Rails uzantılarını kullanmak istediğiniz bir Ruby uygulamasında mı çalıştığını söylemiyorsunuz.
Tin Man

Yanıtlar:


137

Rails'i kullanmak bunu otomatik olarak halledeceği için, Rails olmayan bir komut dosyasına Aktif Destek eklemeye çalıştığınızı varsayacağım.

" Çekirdek Uzantıları Nasıl Yüklenir " bölümünü okuyun .

Active Support'un yöntemleri Rails 3'te daha küçük gruplara ayrıldı, bu nedenle çok fazla gereksiz şeyi basit bir şekilde yüklemeyi bırakmıyoruz require 'activesupport'. Şimdi şöyle şeyler yapmalıyız

require 'active_support/core_ext/object/blank'

Ayrıntı düzeyini önemsemiyorsanız, daha büyük parçaları yüklemeyi seçebilirsiniz. Her şeyin büyük bir yudum kullanımında olmasını istiyorsanız ...

1.9.2 için:

rvm 1.9.2
irb -f
irb(main):001:0> require 'active_support/all'
=> true
irb(main):002:0> 1.week.ago
=> 2010-11-14 17:56:16 -0700
irb(main):003:0> 

1.8.7 için:

rvm 1.8.7
irb -f
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'active_support/all'
=> true
irb(main):003:0> 1.week.ago
=> Sun Nov 14 17:54:19 -0700 2010
irb(main):004:0> 

Önce rubygems ve active_record'a ihtiyacım var, ancak bu düzeltme DID bundan sonra irb'de çalışıyor.
griotspeak

Tek yaptığım örnekte olan şeydi. 1.8.7'de çalıştırmak için yaptığımı da ekleyeceğim.
The Tin Man

1
buna her zaman ihtiyacınız varsa - diyelim ki bir kodla veya başka bir şeyle oynuyorsunuz, her zaman kullandığınız tüm kitaplıkları gerektirecek şekilde .irbrc dosyasını ekleyebilir veya değiştirebilirsiniz. Başlangıçta otomatik olarak yükleyecektir. IE Her zaman awesome_print, hirb ve bazı özel yöntemler kullanıyorum - bu yüzden onları oraya koyuyorum ve 1.hour.ago veya ap {: a => 3,: b => "gibi şeyler için iki kez düşünmek zorunda kalmıyorum çalışmak için nick "}.
konung

1
Kontrol edin irbtools. IRB'ye her türlü güzel ayarlamayı içerir. Ve onları geçici olarak devre dışı bırakmanız gerekirse, arayın irb -fve yüklenmeyecektir.
The Tin Man

Yeni ateşin bir Ruby etkileşimli oturumu için Pry olduğunu ekleyeceğim . Çok etkileyici.
The Tin Man

28

Daha önce belirtilenler aracılığıyla kitaplıkları parçalı olarak ekleyebilirsiniz.

require 'active_support/core_ext/some_class/some_file'

Yapabileceğiniz başka bir seviye de var

require 'active_support/core_ext/some_class'

Ama, şu anda bu maalesef mevcut değildir Time, Dateve DateTime.

Bu çevrede bir yolu olduğunu require 'active_support/time'size verecektir hangi Time, Dateve DateTimehangi şeyi gerektirmeden OP soruyordu çözecek.


Ekleyenactive_support/core_ext/date vedate_timeonu Rails v4.0.0'a getiren My Rails yaması ,artık bunları ayrı ayrı talep edebilirsiniz. YAŞASIN!



-3

Bu konsoldan çalışıyor mu? Bu benim için çalışıyor:

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.6.5
BuildVersion:   10H574

$ rails c
Loading development environment (Rails 3.0.3)
>> 1.week.ago
=> Sun, 14 Nov 2010 16:57:18 UTC +00:00

-4

Şunları yapabilirsiniz:
'active_support / core_ext'
veya:
'active_support / all' gerektir

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.