J'ai deux versions de rails (2.1.0 et 2.2.2) installées sur mon ordinateur.
Lorsque je crée une nouvelle application, est-il possible de spécifier que je souhaite utiliser l'ancienne version (2.1.0)?
ruby-on-rails
hectorsq
la source
la source
Réponses:
J'ai trouvé ici une option non documentée pour créer une nouvelle application en utilisant une ancienne version de Rails.
la source
_3.1.3_
new sample_app /home/ninad/.rbenv/versions/1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems.rb:314:inbin_path': can't find gem railties (["3.1.3"]) with executable rails (Gem::GemNotFoundException) from /home/ninad/.rbenv/versions/1.9.2-p290/bin/rails:19:in
<main> 'Voici la commande que j'utilise normalement:
par exemple
rails _2.1.0_ new my_app
Voici la liste de toutes les versions de rails disponibles à ce jour:
http://rubygems.org/gems/rails/versions
la source
J'avais du mal à utiliser
rails _version_ new application_name
(le projet résultant était toujours généré pour la dernière version de Rails installée.)Après avoir creusé un peu, j'ai trouvé un article de Michael Trojanek avec une approche alternative. Cela fonctionne en créant un dossier avec un Gemfile spécifiant la version souhaitée de Rails puis en l'utilisant
bundle exec rails...
pour que Bundler se charge d'exécuter la version appropriée derails
. Par exemple, pour créer un nouveau projet Rails 4.2.9, les étapes sont les suivantes:la source
bundle update
, cela mettra également à jour les rails !!bundle update
est nécessaire car une mise à jour manuelle est utilisée (--skip-bundle
). Les rails ne seront pas mis à niveau car une version spécifique est spécifiée dans le Gemfile (4.2.9 dans l'exemple.)--force
écrase le Gemfilebundle exec rails new...
exécuté la version derails
spécifié dans le Gemfile qui finit par être remplacée.)gem 'rails', '5.0.0.1' >> Gemfile
et après avoir exécuté l'bundle exec rails new
option --force, c'estgem 'rails', '~> 5.0.0', '>= 5.0.0.1'
dans Gemfile. Maintenant, quand je coursbundle update
, sa mise à jour des rails à 5.0.4 (dans Gemfile.lock), mais je m'attendais à utiliser la version 5.0.0.1 des railsComme indiqué à juste titre par @mikej for Rails 5.0.0 ou supérieur , vous devez suivre ces étapes:
Créez un répertoire pour votre application avec un Gemfile pour spécifier la version souhaitée de Rails et laissez bundler installer les gemmes dépendantes:
Vérifiez que la bonne version des rails a été installée:
$ bundle exec rails -v
Maintenant, créez votre application, laissez Rails créer un nouveau Gemfile (ou plutôt remplacez l'existant en utilisant l'
--force
indicateur) et au lieu d'installer le bundle (--skip-bundle
), mettez-le à jour manuellement:Si vous vérifiez l'entrée des rails
Gemfile
, cela devrait ressembler à ceci:Vous devez le mettre à jour vers la version exacte requise pour l'application:
Maintenant, la dernière étape:
la source
Vous pouvez générer le squelette avec l'une ou l'autre version et exiger celle que vous souhaitez dans
config/environment.rb
:ou utilisez la commande "rails" de la version que vous souhaitez de toute façon.
la source
Vous devriez également jeter un oeil à "geler" vos gemmes Rails dans l'application. Cela aide beaucoup au déploiement, en particulier dans les environnements d'hébergement partagé.
Modifiez simplement la
RAILS_GEM_VERSION
variableconfig/environment.rb
et lancez la tâche de gel de râteau:la source
Il existe deux façons d'y parvenir:
un comme suggéré dans la réponse acceptée:
et une autre méthode consiste à créer un fichier gemme avec la version de rails souhaitée avant d'initialiser le projet de rails
J'ai écrit à ce sujet en détail dans mon article
la source