web-dev-qa-db-fra.com

Spécification de la version de Rails à utiliser lors de la création d'une nouvelle application

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)?

199
hectorsq

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 
449
hectorsq

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:

http://rubygems.org/gems/Rails/versions

60
Hardik

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
23
mikej

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.

3
Keltia

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
3
Thiago Arrais

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
0
Rajkaran Mishra