Как использовать расширения активной поддержки Active Support?
У меня установлена 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.
Ответы
Ответ 1
Поскольку использование Rails должно обрабатывать это автоматически, я собираюсь предположить, что вы пытаетесь добавить Active Support к не-Rails script.
Прочитайте " Как загрузить основные расширения".
Активные методы поддержки были разбиты на небольшие группы в Rails 3, поэтому мы не загружаем много ненужных вещей простым require 'activesupport'
. Теперь мы должны делать что-то вроде require 'active_support/core_ext/object/blank'
Если вы не заботитесь о детализации, вы можете загрузить больше кусков. Если вы хотите, чтобы все в одном большом gulp использовало...
Для 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>
Ответ 2
Вы можете детально добавлять библиотеки через уже упомянутый
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
, которые решат OP, запрашивая, не требуя всего.
Патч My Rails, который добавляет active_support/core_ext/date
и date_time
, превратил его в Rails v4.0.0, поэтому теперь вы можете потребовать их индивидуально. YAY!
Ответ 3
В моем случае работала следующая ссылка:
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'
Ответ 4
Это работает с консоли? Это работает для меня:
$ 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
Ответ 5
Вы можете:
require 'active_support/core_ext'
или:
требуется "active_support/all"