Bundle install предоставляет метод undefined `ruby 'для # <Bundler:: Dsl: 0x00000001c4e1f8>

bundle install дает:

> undefined method `ruby' for #<Bundler::Dsl:0x00000001c4e1f8>

Любая идея, как исправить? Я использую Ruby 1.9.3-p125.

Ответ 1

Версия 1.2 Gembundler внесла метод ruby для dsl, который позволяет указать версию Ruby, которую должно использовать ваше приложение.

Похоже, что для этой новой версии было написано использование Gemfile youre, но версия связанного пакета не поддерживает метод ruby. Вам нужно либо установить последний комплектщик (gem install bundler должен это сделать), либо удалить строку из Gemfile.

Ответ 2

Запустите эти команды, чтобы устранить проблему.

шаг 1: установить пакет                комплект для установки gem
Шаг 2: установить пакет

он исправит проблему.

Ответ 3

Вы вызываете ruby 'something or other' в свой Gemfile.

Этот однострочный слой должен найти для вас строку нарушения (обратите внимание, что вам нужно быть в том же каталоге, что и Gemfile, а ca $h указывает подсказку - в вашей системе это может быть >)

$ ruby -ne 'print "(line #$.) #$_" if /^\s*ruby/' Gemfile

Не понимая, почему вы это сделали, я не могу сказать вам, что вы должны были сделать вместо этого, но нет метода ruby как части DSL поставщика.

Вы можете увидеть код DSL здесь.

Вы можете увидеть документацию Bundler здесь, а документация для Gemfiles здесь.

Ответ 4

Возможно, вы используете устаревшую версию bundler

Вы можете проверить версию подключаемого устройства, которое вы используете с помощью

bundle --version

Если он старше версии 1.2, он, вероятно, устарел, на основе матового ответа.

В моем случае я сделал gem install bundler, но забыл сделать rbenv rehash (я использую rbenv), и поэтому он не использовал набор, который я только что установил, но старую устаревшую версию.