Как заставить ублюдка работать с бандлером?

Переход на сборщик с существующей производственной установкой. Наивно с gemfile и настройками вроде:

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

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

Начиная с

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

приводит к

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

Что делать?


person tribalvibes    schedule 07.10.2010    source источник


Ответы (1)


Чтобы ответить на свой вопрос, поскольку я не смог найти правильного решения для этого сценария в другом месте в Интернете:

Проблема, похоже, заключается во взаимодействии bundler и mongrel использования gem_plugin. Да, они могут быть на жизнеобеспечении, но, к сожалению, многие производственные конфигурации людей все еще зависят от них.

Похоже, что с mongrel --pre, установленным из git источника, он ищет bundle/ruby/1.9.1/gems/mongrel_ вместо bundle/ruby/1.9.1/bundler/gems/mongrel_, где bundler хранит гем, клонированный из git.

Итак, решение, которое сработало для нашей конфигурации, - это просто символическая ссылка на них:

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

Очевидно, что это простая вещь, которую сборщик может делать автоматически. Полный след исключения был:

/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'
person tribalvibes    schedule 07.10.2010