Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: KodeFor.MeОтветов: 2

Прежде всего, я хотел бы сказать, что я совсем новичок в 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"?

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

  • Тот, кто проголосовал за мой вопрос, должен сначала начать читать, а затем начать голосовать. KodeFor.Me 28.12.2013

rubyruby-on-railsjsonbowerzurb-foundation

Ответы

Ответ 1 · рейтинг 2 · Stoic

попробуйте: 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, а затем запустит все команды, которые вы передадите этому блоку.

Ответ 2 · рейтинг 1 · rdaniels

Вам следует изучить возможность запуска 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 вместо командной строки.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы