Массив # prepend / append undefined в Rails 3.1.3? - PullRequest
1 голос
/ 01 февраля 2012

Изучая руководство Active Support Core , похоже, что некоторые из них недоступны. Вот дословный вывод из новой сессии:

$ rails --version
Rails 3.1.3
$ rails console
[1] pry(main)> [].prepend(10)
NoMethodError: undefined method `prepend' for []:Array
from (pry):1:in `<main>'
[2] pry(main)> [].unshift(10)
=> [10]
[3] pry(main)> %w(a b c d).append('e')
NoMethodError: undefined method `append' for ["a", "b", "c", "d"]:Array
from (pry):3:in `<main>'
[4] pry(main)> %w(a b c d) << 'e'
=> ["a", "b", "c", "d", "e"]
[5] pry(main)> require 'active_support/core_ext/array'
=> false

Ничто не указывает на то, что append и prepend устарели или только передовые, так что здесь происходит?

Похоже, что они на самом деле не являются частью Rails 3.1.3, потому что они терпят неудачу:

$ grep 'prepend\|append' ~/.rvm/gems/ruby-1.9.3-p0@project_name/gems/activesupport-3.1.3/lib/active_support/core_ext/array/*
$ ls ~/.rvm/gems/ruby-1.9.3-p0@taclom/gems/activesupport-3.1.3/lib/active_support/core_ext/array/prepend_and_append.rb

Ответы [ 2 ]

4 голосов
/ 01 февраля 2012

Эти методы были добавлены в 3.2.0 и являются не более чем псевдонимами << и unshift соответственно.

1 голос
/ 01 февраля 2012

Похоже, это доступно только из Rails v3.2.1 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...