Запуск команды " bundle install " не выполнен
Все,
Я использую приведенную ниже команду после создания некоторых файлов в определенном каталоге. Получает сообщение об ошибке.
Команда
desc "new project_name", "new a project with a name"
def new(project_name = 'my_project')
directory 'doc', project_name
path = Dir.pwd + '/' + project_name
system("cd #{path}")
run('bundle install')
#But this command is working that makes me so confusing
#run("cd #{path} && bundle install")
#puts "Initializing complete"
end
Ошибка
create aaaaaaa/views/index.slim
create aaaaaaa/views/layout.slim
run bundle install from "."
Could not locate Gemfile
Я вижу рельсы, которые проходят это bundle install
непосредственно, когда он инициализирует новый проект, как рельсы могут сделать это? Как мне заставить эту команду работать.
2 ответа
system
создает подпроцесс и затем выходит. Подпроцесс изменил каталог и затем завершил работу, но ваш сценарий по-прежнему считает, что он находится в любом рабочем каталоге, в котором он находится.
Если вы хотите изменить рабочий каталог процесса, выполняющего скрипт, используйте Dir.chdir()
,
Rails фактически использует небольшой хак, который "печатает" команду bundle install в оболочку и запускает ее. Обратите внимание на обратные галочки в выводе.
print `"#{Gem.ruby}" -rubygems "#{Gem.bin_path('bundler', 'bundle')}" #{command}`
Я также думаю, что системная команда не обязательно изменяет текущий рабочий каталог процессов (в терминах команды запуска Тора).