2010-11-08 21 views
1

Je voulais utiliser bundler à l'intérieur de la gemme que j'ai écrit. J'avais Gemfile et my_gem_file.rb jeUtilisation bundler à l'intérieur de ma gemme

require 'rubygems' 
require 'bundler' 
Bundler.setup 
Bundler.require(:default) 

Mais quand je construis et installer mon petit bijou j'obtenir exception Bundler :: GemfileNotFound: Impossible de trouver Gemfile. Y at-il une solution pour utiliser bundler à l'intérieur des gemmes?

Répondre

2

Bundler ne convient pas à la gestion des gemmes en fonction de la source de la gemme. À l'intérieur d'une gemme, il suffit de disposer des bibliothèques dont vous avez besoin.

3

Étant donné que votre gemme a spécifié ses dépendances dans son fichier .gemspec, vous pouvez supposer qu'elles seront disponibles au moment de l'exécution. Ne pas impliquer Bundler.

Cependant, vous pouvez toujours utiliser Bundler pour le développement de votre gemme. Si vous utilisez ce Gemfile:

source :rubygems 
gemspec 

Bundler regardera dans votre .gemspec afin de déterminer les pierres précieuses pour installer lors de l'exécution d'installer ensemble. Vous pouvez lire plus à ce sujet ici: http://jeffkreeftmeijer.com/2010/bundler-because-your-gems-depend-on-gems-too/

2

Je ne suis pas d'accord, Bundler est idéal pour le développement de la gemme. Cela facilite le démarrage et la collaboration. Et garder le gemspec plus propre?

J'éliminerions les dépendances dev

Gem::Specification.new do |s| 
    s.add_development_dependency("mocha", ["~>0.9.8"]) 

bien sûr garder les s.add_dependency("i18n", ["~>0.4.1"]) et d'autres que votre bijou dépend.

Vous pourriez vous retrouver avec un Gemfile (comme Theo montre), comme celui-ci

source :rubygems 
gemspec 

group :test do 
    gem 'rails', '3.0.0' 
    gem 'mocha' 
    gem 'rspec-rails', "~>2.0.1" 
end 

Nice et propre, facile à lire. J'espère que cela t'aides.