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.
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>
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!
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
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'
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