Deux versions de Rails (2.1.0 et 2.2.2) sont 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)?
J'ai trouvé ici une option non documentée pour créer une nouvelle application utilisant une ancienne version de Rails.
Rails _2.1.0_ new myapp
Voici la commande que j'utilise normalement:
Rails _version_ new application_name
par exemple Rails _2.1.0_ new my_app
Voici la liste de toutes les versions disponibles de Rails jusqu'à présent:
J'avais quelques difficultés à 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 utilisant bundle exec Rails...
afin que Bundler se charge d'exécuter la version appropriée de Rails
. par exemple. Pour créer un nouveau projet Rails 4.2.9, procédez comme suit:
mkdir myapp
cd myapp
echo "source 'https://rubygems.org'" > Gemfile
echo "gem 'Rails', '4.2.9'" >> Gemfile
bundle install
bundle exec Rails new . --force --skip-bundle
bundle update
Vous pouvez générer le squelette avec l'une ou l'autre version et demander celui que vous voulez dans config/environment.rb
:
# Specifies gem version of Rails to use when vendor/Rails is not present
Rails_GEM_VERSION = '2.1.2' unless defined? Rails_GEM_VERSION
ou utilisez la commande "Rails" de la version de votre choix.
Vous devriez également jeter un coup d'œil à la "congélation" de vos gemmes Rails dans l'application. Cela aide beaucoup lors du déploiement, spécialement dans les environnements d'hébergement partagé.
Il suffit de changer la variable Rails_GEM_VERSION
dans config/environment.rb
et d'émettre la tâche de congélation figée:
rake Rails:freeze:gems
Comme souligné à juste titre par @mikej pour Rails 5.0.0 ou supérieur , procédez comme suit:
Créez un répertoire pour votre application avec un Gemfile pour spécifier la version de Rails souhaitée et laisser bundler installer les gems dépendants:
$ mkdir myapp
$ cd myapp
$ echo "source 'https://rubygems.org'" > Gemfile
$ echo "gem 'Rails', '5.0.0.1'" >> Gemfile
$ bundle install
Vérifiez que la version correcte de Rails a été installée: $ bundle exec Rails -v
Créez maintenant votre application, laissez Rails créer un nouveau fichier Gemfile (ou remplacez le fichier existant à l'aide de l'indicateur --force
). Au lieu d'installer le paquet (--skip-bundle
), mettez-le à jour manuellement:
$ bundle exec Rails new . --force --skip-bundle
Si vous vérifiez l'entrée pour Rails dans Gemfile
, cela devrait ressembler à ceci:
gem 'Rails', '~> 5.0.0', '>= 5.0.0.1'
Vous devez le mettre à jour avec la version exacte requise pour l'application:
gem 'Rails', '5.0.0.1'
Maintenant, la dernière étape:
$ bundle update