2009-11-02 3 views
4

Je crée une nouvelle gemme Ruby en utilisant NetBeans comme IDE. La structure initiale du projet contient un fichier Rake avec la spécification gem et d'autres tâches rake.Spécification Gem dans Rakefile vs .gemspec

Ma question est, quelle est la différence entre avoir une spécification de gem situé dans un fichier Rakefile par rapport à l'avoir situé dans un fichier .gemspec? Existe-t-il une meilleure pratique pour savoir où déclarer la spécification? Est-ce que chaque gem devrait aussi contenir un fichier gemspec ou est-ce que tout ce qui est dans le Rakefile est suffisant?

Répondre

5

Avoir une tâche dans votre Rakefile pour construire une gemme est bien pour la plupart des cas. Cependant, je préfère avoir un fichier gemspec dans la racine du projet parce que la plupart des gens s'attendraient à ce que ces paramètres soient là plutôt qu'être enterrés dans le Rakefile.

En ce qui concerne les différences, le fichier Rake va exécuter la commande gem build sur son gemspec en ligne avec une tâche rake. c'est à dire. rake gem: build ou si vous utilisez un gemspec vous exécutez la commande gem build .gemspec

Par exemple Jeweler, un assistant pour créer et gérer des projets Rubygem avec Github, conserve une spécification de base dans un fichier Rakefile puis génère un fichier gemspec qui contient les paramètres de .gitignore ainsi que les paramètres génériques par défaut pour générer rdoc, etc.

+0

Oui, je préfère également un fichier .gemspec autonome dans le répertoire racine. C'est plus facile à comprendre, en râteau je dois chercher où l'information est stockée. – shevy

+0

Ce n'était pas clair: le fait d'avoir un fichier .gemspec autonome est-il suffisant pour que les tâches Rake concernées puissent s'exécuter, ou est-il nécessaire de copier son contenu dans le Rakefile de toute façon? – Alexey

+0

Si pour les tâches de rake concernées la définition de gemspec en ligne est nécessaire, comment la garder synchronisée avec le fichier .gemspec? – Alexey