Использование Rake или Gem для создания скриптов? - PullRequest
2 голосов
/ 19 августа 2010

Я хочу создать сценарии, которые автоматизируют вещи для меня.

Вот пример того, что я хочу сделать:

  • Создать новое приложение rails (rails new application_name -database = mysql)
  • Перейти в папку
  • Инициализировать git (git init; git add.; git commit -m "first commit"; git remote add name address; git push name name master)
  • Создать проект heroku (heroku create; git push heroku master)
  • И т.д ...

У меня много таких скриптов (не только связанных с рельсами)) Я хочу собрать.

Должны ли эти шаги быть закодированы с помощью Rake или Gem?

Из того, что я понял, rake обычно получает задачи из файла Rakefile текущей папки.Если я хочу сделать операции универсальными, лучше ли создавать гем?

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

Что такоеплюсы и минусы с каждым?

Ответы [ 3 ]

2 голосов
/ 19 августа 2010

С рейком или самоцветом все в порядке. Если вы хотите централизовать свои грабли (если вы используете OSX или вариант Linux / * nix), вы можете создать их в своем домашнем каталоге:

~/.rake/*.rake

Rake будет искать задачи для запуска, если в каталоге нет Rakefile.

Кроме того, подумайте (опять же, если вы на какой-то платформе * nix), просто создайте псевдонимы оболочки для ваших команд.

Edit:

Еще одно соображение, характерное для вашей работы на Rails, - это использование шаблонов приложений. Вот ссылка на хороший скринкаст .

2 голосов
/ 20 августа 2010

Кое-что из того, что вы хотите, может быть достигнуто с помощью псевдонимов оболочки, некоторые с гемами, некоторые с рейком.

Используя предложение Брайана, я добавил следующее в ~ / .rake / git.rake:

namespace :git do
  desc "Init, add, initial commit"
  task :init do
    `git init .`
    `git add .`
    `git commit -m 'Initial commit'`
  end
end

Тогда в любой директории я могу запустить "rake git: init", и он выполнит все начальные настройки.Удаленное добавление немного сложнее, потому что удаленное имя будет переменной (может быть предоставлено через переменную оболочки или приглашение Readline).

Для создания приложения rails я бы добавил псевдоним в ~ /.bash_profile:

alias new_mysql="rails new $ARGV --database=mysql"

Затем запустите "new_mysql myRailsProject".

В большинстве случаев я думаю, что выполнение нескольких сценариев командной строки будет псевдонимом оболочки, а не задачей Rake..

1 голос
/ 19 августа 2010

Вы должны использовать грабли для этого материала. У Бейтса есть скринкаст , показывающий, как выполнить то, что вы пытаетесь сделать. По сути, вы создаете пользовательское задание и после того, как можете вызвать rake my_task, и он выполнит ваш скрипт.

...