Как использовать основные расширения Active Support? - PullRequest
93 голосов
/ 21 ноября 2010

У меня установлена ​​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.

Ответы [ 5 ]

134 голосов
/ 21 ноября 2010

Поскольку использование Rails должно обрабатывать это автоматически, я предполагаю, что вы пытаетесь добавить Active Support в сценарий, не относящийся к Rails.

Read " Как загрузить расширения ядра ».

Методы 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> 
26 голосов
/ 14 июля 2012

Вы можете детально добавлять библиотеки через уже упомянутые

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 , так что теперь вы можете запрашивать их индивидуально , YAY!

0 голосов
/ 25 января 2019

В моем случае работала следующая ссылка:

https://bundler.io/blog/2019/01/04/an-update-on-the-bundler-2-release.html

$ cat Gemfile.lock | grep -A 1 "BUNDLED WITH"
BUNDLED WITH
   1.17.3

$ gem install bundler -v '1.17.3'
0 голосов
/ 21 октября 2011

Вы можете:
требуется 'active_support / core_ext'
или:
требуется 'active_support / all'

0 голосов
/ 21 ноября 2010

Это работает с консоли?Это работает для меня:

$ 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
...