Jak korzystać z rozszerzeń Active Support core?

Mam zainstalowane aktywne wsparcie 3.0.3 i Rails 3.0.3 z Ruby 1.8.7.

Kiedy próbuję użyć 1.week.ago dostaję

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

Inne rozszerzenia rdzenia wydają się działać. Wypróbowałem go na komputerze znajomego (te same specyfikacje instalacji i starsze wersje są na jego komputerze) z tymi samymi wynikami.

Co się dzieje?

Wszystko to jest w IRB.

Author: the Tin Man, 2010-11-21

4 answers

Ponieważ używanie Rails powinno obsługiwać to automatycznie, zakładam, że próbujesz dodać aktywne wsparcie do skryptu nie-Rails.

Przeczytaj " Jak wczytać rozszerzenia Rdzenia ".

Metody Active Support zostały podzielone na mniejsze grupy w Rails 3, więc nie kończymy ładowania wielu niepotrzebnych rzeczy prostym require 'activesupport'. Teraz musimy robić rzeczy takie jak require 'active_support/core_ext/object/blank'

Jeśli nie zależy ci na ziarnistości, możesz załadować większe kawałki. Jeśli chcesz wszystko w jednym duży łyk...

Dla 1.9.2:

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> 

Dla 1.8.7:

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> 
 125
Author: the Tin Man,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-17 23:27:18

Możesz granularnie dodawać biblioteki za pomocą wspomnianego już

require 'active_support/core_ext/some_class/some_file'

Jest też inny poziom, na którym możesz

require 'active_support/core_ext/some_class'

Ale w tej chwili nie jest to niestety dostępne dla Time, Date i DateTime.

Sposobem obejścia tego jest require 'active_support/time' co da ci Time, Date co rozwiązałoby zadanie, nie wymagając wszystkiego.


My rails patch, który dodaje active_support/core_ext/date i date_time, uczynił go Rails v4.0.0, więc teraz możesz je wymagać indywidualnie. YAY!

 25
Author: mraaroncruz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-15 23:12:45

Czy to działa z konsoli? To mi działa:

$ 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
 -2
Author: Paul Schreiber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-21 16:57:58

Możesz:
require 'active_support/core_ext'
lub:
require 'active_support / all'

 -4
Author: 张健健,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-21 02:55:00