Ruby (Rails, w\o Rails) — как выполнить shell команду с другим Gemfile (в новом потоке\процессе)?
Есть приложение на Rails. Пробую из него вызвать команду (с bundle exec) другого приложения (spawn, popen3, exec, system, ` ... ). Команда: middleman deploy, на что получаю, что middleman-core не включен в Gemfile и т.д.
Оба приложения на одном гемсете. Из командной строки все работает. Сделал bash скрипт, запуская из приложения, получаю ошибку, любым другим способом - все нормально.
Вопрос: как понять потоки (или же процессы?) руби? Я ожидал, что одна из команд (например, exec, которая, как говорят, выполняет все в новом процессе и даже не возвращает управление) будет выполнятся точно так же, как если я открою новое окно терминала.
Ну, раз в Gemfile, то надо: bundle exec middleman deploy
Или по новому, запихнуть стаб в bin (bundle binstubs middleman-core) и вызывать как:bin/middleman deploy
Спасибо, что ответили. Именно bundle exec я и использовал, вызывая exec, system, `, spawn. Я так понимаю, что ошибка в том. что нужные гемы не указаны в гемфайле Rails приложения (их я считаю указывать не логично, т.к. это другое приложение, плюс и не получается, т.к. с 4 рельсами зависимости не удовлетворяются). binstubs, как я понимаю, так же нужны для того, что бы можно было вызывать скрипты в идентичном окружении. Я же хочу наоборот, в новом. Или я что-то делаю не так?
Получается, сейчас я хочу, что бы одно приложение rails могло вызвать другое произвольное приложение в новом процессе с новым окружением. Возможно ли это ?
Ну тогда нужно указать полный путь к исполняемому файлу. bundle show имя джема, для тех кто в Gemfile, и gem which имя джема для остальных. Нужные файлы находятся в каталоге bin/.