Как мне запускать команды в заданном каталоге в Ruby?

Прежде всего, я хотел бы сказать, что я совсем новичок в Ruby, и мне нужно внести некоторые изменения.

Просто чтобы знать, я использую Windows 7.

Я установил драгоценный камень Foundation 5 в свой Ruby, но когда я пытаюсь запустить команду foundation new projectName, я получаю сообщение об ошибке The system cannot find the path specified.

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

Более конкретно, скажем, я нахожусь в папке C:\Test\ и запускаю команду

foundation new myApp

Базовый драгоценный камень создаст папку myApp и внутри этой папки сгенерирует все необходимые файлы.

Наконец, пока я нахожусь в C:\, основной жемчужине, попытаюсь запустить команду

bower install

в то время как bower.json находится в папке C:\TEST\myApp\

В настоящее время я модифицирую файл generator.rb из драгоценного камня Foundation, чтобы установить местоположение файла bower.json.

Я пробовал что-то из следующего, но ничего не работает:

run("#{name/}bower install", capture: true, verbose: false)
run("/#{name/}bower install", capture: true, verbose: false)

где #{name} в этом примере — это myApp.

Есть ли способ сказать «Изменить каталог и перейти в каталог проекта перед запуском команды bower install»?

Может кто-нибудь, пожалуйста, помогите мне?


person KodeFor.Me    schedule 27.12.2013    source источник
comment
Тот, кто проголосовал за мой вопрос, должен сначала начать читать, а затем начать голосовать.   -  person KodeFor.Me    schedule 28.12.2013


Ответы (2)


попробуйте: Dir.chdir метод. Ссылка: http://www.ruby-doc.org/core-2.1.0/Dir.html#method-c-chdir

Dir.chdir(directory) do
  run("bower install", capture: true, verbose: false)
end

Приведенный выше пример кода изменится на каталог, представленный переменной directory, а затем запустит все команды, которые вы передадите этому блоку.

person Stoic    schedule 27.12.2013
comment
Как использовать имя каталога? В моем случае переменная name содержит новое имя папки. Извините за этот вопрос, но я не знаю синтаксиса Ruby. Должен ли я использовать брекеты? - person KodeFor.Me; 27.12.2013
comment
Кроме того, должен ли я включать какую-либо внешнюю библиотеку? Dir по умолчанию доступен в Ruby? - person KodeFor.Me; 27.12.2013
comment
@MerianosNikos: Dir по умолчанию доступен в ruby. Кроме того, где находится этот скрипт, т.е. в каком каталоге будет код для этой команды run? Это поможет мне создать для вас переменную directory. - person Stoic; 27.12.2013

Вам следует изучить возможность запуска Ruby из VirtualBox. Я начал с Ruby в Windows 7, и проблема за проблемой. Теперь я все еще на Windows, но мы запускаем все Ruby из Ubuntu Linux VirtualBox со скриптом Vagrant, и это работает намного лучше.

Загрузите Console2 с http://sourceforge.net/projects/console/.

и Git Bash с https://openhatch.org/missions/windows-setup/install-git-bash

Затем установите консоль по умолчанию для оболочки Git Bash, выбрав «Правка» -> «Настройки», а затем вставьте это в поле «Оболочка»:

"C:\Program Files (x86)\Git\bin\sh.exe --login -i"

С этой настройкой вы получите основные команды Linux. Запустите locate bower, и это должно сказать вам, где живет Bower. Добавьте этот путь к вашему пути в ваших переменных среды. Вы также должны использовать Console2 для запуска вашего Ruby вместо командной строки.

person rdaniels    schedule 27.12.2013