Як користуватися основними розширеннями Active Support


96

У мене встановлено Active Support 3.0.3 та Rails 3.0.3 з Ruby 1.8.7.

Коли я намагаюся використовувати 1.week.agoя отримую

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

Інші основні розширення, здається, працюють. Я спробував це на комп’ютері друга (ті ж характеристики встановлення та застарілі версії є на його) з тими самими результатами.

Що дає?

Все це в IRB.


Ви не кажете, чи працює ваш код у програмі Rails, чи в програмі Ruby, в якій ви хочете використовувати деякі розширення Rails.
Олов'яна людина,

Відповіді:


136

Оскільки використання Rails повинно обробляти це автоматично, я припускаю, що ви намагаєтесь додати активну підтримку до сценарію, який не є Rails.

Прочитайте " Як завантажити основні розширення ".

Методи Active Support розбилися на менші групи в Rails 3, тому ми не завантажуємо багато непотрібних речей простими require 'activesupport'. Тепер ми повинні робити такі речі, як

require 'active_support/core_ext/object/blank'

Якщо ви не дбаєте про детальність, ви можете завантажити більші шматки. Якщо ви хочете, щоб все було залпом ...

Для 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> 

Для версії 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> 

мені спочатку потрібно вимагати rubygems та active_record, але це виправлення ДІЇ працювало в irb після цього.
griotspeak

Все, що я зробив, це те, що є у прикладі. Додам те, що я зробив, щоб запустити його також у версії 1.8.7.
Олов'яна людина

1
якщо вам це потрібно весь час - скажімо, ви граєте з якимось кодом або чимось, ви можете додати або змінити файл .irbrc, щоб вимагати всі бібліотеки, якими ви користуєтесь весь час. Він завантажить їх автоматично при запуску. IE, я постійно використовую awesome_print, hirb та деякі власні методи - тому я просто поміщаю їх туди і не потрібно двічі думати про такі речі, як 1.hour.ago або ap {: a => 3,: b => " nick "} працювати.
konung

1
Перевірте irbtools. Він включає всі види приємних налаштувань IRB. І якщо вам потрібно тимчасово вимкнути їх, зателефонуйте, irb -fі вони не завантажать їх.
Олов'янець

Додам, що новою гарячістю є Pry for a Ruby interactive session. Дуже вражає.
The Tin Man

28

Ви можете детально додавати бібліотеки за допомогою вже згаданих

require 'active_support/core_ext/some_class/some_file'

Також є ще один рівень, де ви можете

require 'active_support/core_ext/some_class'

Але на даний момент це, на жаль, недоступно для Time, Dateі DateTime.

Шлях навколо цього - це те, require 'active_support/time'що дасть вам Time, Dateі DateTimeяке вирішить ОП, про яке просили, не вимагаючи всього.


Патч My Rails , який додаєactive_support/core_ext/dateіdate_time, зробив це Rails v4.0.0 , тому тепер ви можете вимагати їх окремо. ТАК!



-3

Це працює з консолі? Це працює для мене:

$ 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

Ви можете:
вимагати 'active_support / core_ext'
або:
вимагати 'active_support / all'

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.