2010-10-07 3 views
1

Transition vers bundler avec une configuration de production existante. Naïvement avec un Gemfile et la configuration comme:Comment faire fonctionner mongrel avec bundler?

gem "rails", "2.3.8" 
gem "mongrel", git: "http://github.com/dynamix/mongrel.git" 

bundle install --path /mnt/app/shared/bundle 

A partir de

bundle exec mongrel_rails start --environment=production ... 

résultats dans

/mnt/app/shared/bundle/ruby/1.9.1/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:166:in `require': 
no such file to load -- /mnt/services/shared/bundle/ruby/1.9.1/gems/mongrel-1.2.0.beta.1/lib/mongrel/init.rb (MissingSourceFile) 

Que faire?

Répondre

1

Pour répondre à ma propre, puisque je ne pouvais pas trouver une solution correcte ailleurs sur le web pour ce scénario:

Le problème semble être une interaction de bundler et de l'utilisation de mongrel du gem_plugin. Oui, ceux-ci peuvent être sur le support de la vie, mais malheureusement beaucoup de configs de production de personnes dépendent encore d'eux.

Semble que avec mongrel --pre installé à partir de la source git, il cherche dans bundle/ruby/1.9.1/gems/mongrel_ au lieu de bundle/ruby/1.9.1/bundler/gems/mongrel_ qui est l'endroit où bundler est Stashing la gemme cloné à partir git.

Donc, la solution qui a fonctionné pour notre config est de simplement les liens symboliques:

ln -s /mnt/app/shared/bundle/ruby/1.9.1/bundle/gems/mongrel* \ 
/mnt/app/shared/bundle/ruby/1.9.1/gems/mongrel-1.2.0.beta.1 

Ceci est clairement quelque chose de simple que Bundler pourrait faire automatiquement. La trace complète de l'exception était:

/mnt/app/shared/bundle/ruby/1.9.1/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:166:in `require': 
no such file to load -- /mnt/app/shared/bundle/ruby/1.9.1/gems/mongrel-1.2.0.beta.1/lib/mongrel/init.rb (MissingSourceFile) 
    from /mnt/app/shared/bundle/ruby/1.9.1/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:166:in `require' 
    from /mnt/app/shared/bundle/ruby/1.9.1/gems/gem_plugin-0.2.3/lib/gem_plugin.rb:134:in `block in load' 
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/source_index.rb:241:in `each' 
    from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/source_index.rb:241:in `each' 
    from /mnt/services/shared/bundle/ruby/1.9.1/gems/gem_plugin-0.2.3/lib/gem_plugin.rb:112:in `load' 
    from /mnt/app/shared/bundle/ruby/1.9.1/bundler/gems/mongrel-f3e69eb8e6fb/lib/mongrel/configurator.rb:231:in `load_plugins' 
Questions connexes