10 votes

bundle install donne une méthode indéfinie `ruby' pour #<Bundler::Dsl:0x00000001c4e1f8>

bundle install donne :

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

Une idée de la façon de réparer ? J'utilise Ruby 1.9.3-p125.

19voto

matt Points 33799

Version 1.2 de Gembundler a introduit un ruby à la méthode dsl qui vous permet de spécifier la version de Ruby que votre application doit utiliser.

On dirait que le Gemfile que vous utilisez a été écrit pour cette nouvelle version, mais la version de bundler que vous possédez ne prend pas en charge l'option ruby méthode. Vous devez soit installer le dernier bundler ( gem install bundler devrait le faire) ou supprimez la ligne de votre Gemfile .

5voto

errakesh Points 156

Exécutez ces commandes, le problème sera résolu

gem install bundler
étape 2 : installation du faisceau

cela va régler le problème

1voto

Joshua Cheek Points 9450

Vous appelez ruby 'something or other' dans votre Gemfile.

Cette ligne devrait trouver la ligne incriminée pour vous (notez que vous devez être dans le même répertoire que le Gemfile, et que le ca$h indique l'invite -- sur votre système, cela peut être > )

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

Sans comprendre pourquoi vous avez fait cela, je ne peux pas vous dire ce que vous auriez dû faire à la place, mais il n'y a pas d'autre solution. ruby dans le cadre du DSL de bundler.

Vous pouvez voir le code DSL aquí .

Vous pouvez consulter la documentation de Bundler aquí et la documentation sur les Gemfiles aquí .

0voto

Andrew Grimm Points 22996

Vous utilisez peut-être une version obsolète de bundler.

Vous pouvez vérifier la version de bundler que vous utilisez avec

bundle --version

S'il est antérieur à la version 1.2, il est probablement périmé, sur la base des éléments suivants réponse de matt .

Dans mon cas, j'avais fait gem install bundler mais j'ai oublié de le faire. rbenv rehash (j'utilise rbenv), et donc il n'utilisait pas le bundler que je venais d'installer, mais une version ancienne et périmée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X