bundle exec
- это команда, используемая для того, чтобы Bundler мог выполнять свою работу и управлять драгоценными камнями для разных приложений (которые могут использовать разные версии одних и тех же драгоценных камней).Если вы запустите bundle, а затем попытаетесь запустить ruby foo.rb
в оболочке, ваш Gemfile
будет проигнорирован, и будет использоваться самая последняя версия каждого драгоценного камня require
d.
Heroku уже использует bundle exec
при запуске приложения.Это встроено в платформу, и это единственный способ, позволяющий им по-настоящему справляться со слизнями.
Я думаю, что ваша проблема проистекает из несовместимости между двумя разными камнями, которые вы используете.Если один драгоценный камень имеет зависимость от foo ~> 0.2.3
, а другой драгоценный камень имеет зависимость от foo >= 0.3
, вы не сможете запустить их оба - у вас не может быть двух версий одинаковых драгоценных камней, доступных в одном процессе,Вы можете убедиться в этом, запустив bundle
в разработке и дважды проверив Gemfile.lock
.Также убедитесь, что ваш Gemfile.lock
проверяется в вашем хранилище;если вы отправите в Heroku только свой Gemfile
, который работает на вашем компьютере, и они установят его на его основе, они могут получить более новые версии библиотек с различными зависимостями (я не уверен, что Heroku будет жаловаться, если вы неGemfile.lock
).