Lorsque j'essaie de démarrer mon serveur Rails, j'obtiens l'erreur suivante:
$ ruby -v ruby 2.3.8p459 (2018-10-18 revision 65136) [x86_64-darwin18] $ rbenv version 2.3.8 (set by /Users/ceasar/foo/.ruby-version) $ which -a ruby /Users/ceasar/.rbenv/shims/ruby /usr/local/opt/ruby@2.3/bin/ruby /usr/local/bin/ruby /usr/bin/ruby $ which -a bundle /Users/ceasar/.rbenv/shims/bundle /usr/local/bin/bundle $ /usr/bin/xcodebuild -version Xcode 10.2 Build version 10E125 $ brew list ruby@2.3 /usr/local/Cellar/ruby@2.3/2.3.8_1/bin/erb /usr/local/Cellar/ruby@2.3/2.3.8_1/bin/gem /usr/local/Cellar/ruby@2.3/2.3.8_1/bin/irb /usr/local/Cellar/ruby@2.3/2.3.8_1/bin/rake /usr/local/Cellar/ruby@2.3/2.3.8_1/bin/rdoc /usr/local/Cellar/ruby@2.3/2.3.8_1/bin/ri /usr/local/Cellar/ruby@2.3/2.3.8_1/bin/ruby /usr/local/Cellar/ruby@2.3/2.3.8_1/include/ruby-2.3.0/ (25 files) /usr/local/Cellar/ruby@2.3/2.3.8_1/lib/libruby.2.3.0.dylib /usr/local/Cellar/ruby@2.3/2.3.8_1/lib/pkgconfig/ruby-2.3.pc /usr/local/Cellar/ruby@2.3/2.3.8_1/lib/ruby/ (1211 files) /usr/local/Cellar/ruby@2.3/2.3.8_1/lib/ (3 other files) /usr/local/Cellar/ruby@2.3/2.3.8_1/share/emacs/ (7 files) /usr/local/Cellar/ruby@2.3/2.3.8_1/share/man/ (4 files) /usr/local/Cellar/ruby@2.3/2.3.8_1/share/ri/ (13487 files $ bundle env | head -n 40 ## Environment ``` Bundler 2.0.1 Platforms ruby, x86_64-darwin-18 Ruby 2.3.8p459 (2018-10-18 revision 65136) [x86_64-darwin18] Full Path /Users/ceasar/.rbenv/versions/2.3.8/bin/ruby Config Dir /Users/ceasar/.rbenv/versions/2.3.8/etc RubyGems 2.5.2.3 Gem Home /Users/ceasar/.rbenv/versions/2.3.8/lib/ruby/gems/2.3.0 Gem Path /Users/ceasar/.gem/ruby/2.3.0:/Users/ceasar/.rbenv/versions/2.3.8/lib/ruby/gems/2.3.0 User Path /Users/ceasar/.gem/ruby/2.3.0 Bin Dir /Users/ceasar/.rbenv/versions/2.3.8/bin Tools Git 2.19.2 RVM not installed rbenv rbenv 1.1.2 chruby not installed ``` ## Bundler Build Metadata ``` Built At 2019-01-04 Git SHA d7ad2192f Released Version true ``` ## Bundler settings ``` build.libv8 Set for the current user (/Users/ceasar/.bundle/config): "--with-system-v8" build.mysql2 Set for the current user (/Users/ceasar/.bundle/config): "--with-mysql-config=/usr/local/Cellar/mysql@5.7/5.7.24/bin/mysql_config" path Set for your local app (/Users/ceasar/Desktop/beacon/.bundle/config): "vendor/bundle" disable_shared_gems Set for your local app (/Users/ceasar/Desktop/beacon/.bundle/config): true ```
Je ne comprends pas pourquoi cela se produit, car j'ai défini Ruby sur 2.3.8 à la fois en utilisant Homebrew et en utilisant rbenv. 2.3.7 est la version du ruby du système. J'utilise Mac OS 10.14.4.
$ bundle exec rails s Your Ruby version is 2.3.7, but your Gemfile specified ~> 2.3.8
Je ne vois rien ici qui me ferait penser qu'il devrait utiliser 2.3.7.
Je ne sais pas quoi essayer d'autre.
Comment Bundler décide-t-il de la version de Ruby à utiliser, et comment puis-je le configurer pour utiliser rbenv ou mon installation Ruby homebrew?
4 Réponses :
Que diriez-vous d'essayer d'utiliser «rvm»?
rvm install 2.4.2
Cette commande installera une autre version de ruby, 2.4.2
Et vous pouvez simplement vérifier les versions que vous avez comme
liste rvm
.
Après cela, exécutez la version que vous souhaitez comme ci-dessous,
rvm
ou rvm utilise
J'espère que cela vous aidera!
Je ne suggère pas d'utiliser RVM au lieu de RBEnv. RBEnv est l'une des solutions les plus récentes et la plupart des gens s'y tiennent.
Pouvez-vous essayer d'exécuter gem update --system
pour mettre à jour votre bundler en premier.
Installez Rbenv et exécutez les commandes suivantes dans le répertoire de votre projet pour installer 2.3.8:
rbenv install 2.3.8 rbenv local 2.3.8 bundle install --path=vendor/cache
Résumé: la mauvaise version du bundler est à l'origine du problème. Utilisez un gestionnaire de versions ruby pour installer la version ruby nécessaire. Ensuite, installez la version correcte du gem bundler pour votre projet.
Détails: Dans mon cas, j'exécute un exemple de rails sur github qui nécessitait une ancienne version de ruby et bundler et j'ai obtenu l'erreur décrit.
Pour gérer mes différentes versions de ruby, j'utilise ruby-install
et chruby
tous deux installés avec homebrew .
J'ai suivi ces étapes pour résoudre le problème sous macOS Catalina v10.15.7:
Could not find 'bundler' (1.16.1) required by your ... /Gemfile.lock. (Gem::GemNotFoundException) To update to the latest version installed on your system, run `bundle update --bundler`. To install the missing version, run `gem install bundler:1.16.1`
Avant d'exécuter les étapes ci-dessus, les messages d'erreur m'ont indiqué quelle version de ruby et de bundler je devais installer . Le bundler système était de la mauvaise version (je suis sur un mac) et le message d'erreur initial utilisant cette version m'a donné l'erreur ci-dessous. Ce n'est qu'après l'installation de la gemme du bundler nécessaire (voir ci-dessus) que la version correcte de ruby a été résolue (voir ci-dessus).
% bundle install Your Ruby version is 2.6.3, but your Gemfile specified 2.4.1 % which ruby /Users/richardlogwood/.rubies/ruby-2.4.1/bin/ruby % which bundle /usr/bin/bundle
Remarque, le la version du bundle requise a été indiquée par ce message d'erreur:
% ruby-install 2.4.1 # open a new shell so chruby will find 2.4.1 % chruby 2.4.1 % which ruby /Users/richardlogwood/.rubies/ruby-2.4.1/bin/ruby % gem install bundler:1.16.1 % which bundle /Users/richardlogwood/.gem/ruby/2.4.1/bin/bundle % cd (to the rails project directory) # Note: it's a rails project so there was a binstub # for bundler, hence `bin/bundler` in the project directory* % bin/bundler install % rake db:{create,migrate} % bin/rails s
Il se peut que votre shell ait l'ancienne commande
bundle
en cache, essayez d'exécuterhash -r
.Malheureusement, j'ai réussi à résoudre mon problème sans identifier ce qui l'a réellement résolu. Je laisserai cette question en suspens et accepterai une réponse si l'on commence à obtenir une majorité de votes.
J'ai essayé la méthode suggérée par @matt et ça marche! geeksforgeeks.org/hash-command-in-linux-with-examples
@matt veuillez ajouter cela comme réponse - cela a fonctionné pour moi et j'aimerais le voter.