2011-12-03 1 views
4

Comme la plupart des développeurs de Rails, j'ai beaucoup d'applications Rails sur mon système - exécutant différentes versions de Rails. En conséquence, j'ai maintenant plusieurs versions de Rake (0.8.7 et 0.9.2).Plusieurs versions de rake - Meilleures pratiques

Chacune des applications est déployée sur son propre VPS, exécutant une seule version de Rails et une version de Rake. En outre, il existe d'autres développeurs sur ces projets qui ont leurs propres configurations, qui peuvent avoir ou non la même version (ou les deux) de Rake.

Quelle est la meilleure pratique pour gérer cela?

Dois-je spécifier une version de Rake in my Gemfile (pour les applications Rails 3, en utilisant Bundler)? Si je le fais, alors j'ai toujours besoin de bundle exec rake, ce qui est bien - mais je me demande si c'est maintenant la norme. Est-ce que tout le monde doit le faire? Y a-t-il un moyen de l'éviter?

En outre, as noted elsewhere, je dois mettre à jour mon Rakefile avec

require 'rake/dsl_definition' 
include Rake::DSL 

si je veux utiliser Rake 0.9.2. Même alors, je reçois ces avertissements:

/Library/Ruby/Gems/1.8/gems/rake-0.9.2/lib/rake/file_utils.rb:10: warning: already initialized constant RUBY 
/Library/Ruby/Gems/1.8/gems/rake-0.9.2/lib/rake/file_utils.rb:84: warning: already initialized constant LN_SUPPORTED 

Dois-je juste spécifier 0.8.7 dans mon Gemfile? Il semble que je devrais pouvoir utiliser 0.9.2. Je (a) besoin de l'application sur le serveur pour travailler sans bundle exec, des choses simples comme rake db:migrate de travail, et (b) besoin de quelque chose qui jouera bien avec d'autres développeurs.

Comment les gens manipulent-ils cela? Qu'est-ce qui semble bien fonctionner? Qu'est-ce qui ne va pas?

Un commentaire serait grandement apprécié!

Répondre

3

L'utilisation de bundles et l'appel de la bonne version avec bundle exec rake est quasiment le chemin à parcourir. Cela dit, taper tout cela vieillit vite.

Ce que vous pouvez faire est bundle install --binstubs qui inclura des bouts exécutables pour les pierres précieuses que vous utilisez. Ensuite, vous pouvez simplement appeler (par exemple) bin/rake cucumber:ok

4

Si vous utilisez RVM et et gemsets, vous pouvez éviter le problème d'exécution groupée tous ensemble. Par exemple, chaque application ou projet que je fais obtient son propre gemset.

Exemple d'utilisation:

rvm use 1.9.2; rvm gemset create foobar 

Puis, dans les applications fichier .rvmrc:

rvm use [email protected] 

Cela fera RVM utiliser le gemset approprié et que vous avez l'habitude des collisions de version ou être coincé à l'aide exec bundle pour la vie.

Une fois que vous créez le fichier .rvmrc n'oubliez pas de cd, puis de nouveau ou émettre un

rvm reload 

pour commencer à utiliser la nouvelle gemset

Questions connexes