Среда родительского процесса (ENV
) передается в подчиненные оболочки. Либо сам огурец, то, как вы используете огурец (например, bundle exec cucumber
), ваши сценарии, либо код загружаемого сценария (например, приложение и, следовательно, пакет), портит ENV
. Переменные окружения, такие как RUBYLIB
, GEM_PATH
и BUNDLE_GEMFILE
, могут оказать существенное влияние на то, что могут загружать / вести себя ваши процессы Ruby с субоболочками.
Попробуйте распечатать переменную ENV
в вашем сценарии и сравнить ее с тем, что вы получаете, когда делаете это с помощью ruby -rubygems -rpp -e "pp ENV"
или просто env
в командной строке.
Для чего бы это ни стоило, возможной альтернативой было бы загрузить и вызвать задачу rake напрямую, например, Rake::Task['db:schema:load'].invoke
, без использования вложенной оболочки. Однако зависит от того, что вы пытаетесь сделать.