2009-06-11 6 views
3

Я бы хотел установить плагин, но я боюсь, что он установит много ненужных вещей. Я хотел бы посмотреть, как грабли файлы берут инструкции по установке и удаляют что-то ненужное.Какие шаги следует после того, как вы произнесите «rake install»?

Я считаю, что это Rakefile. Но я не уверен, что происходит, когда рейк смотрит на файл rakefile - выполняет ли он весь файл rake или только части файла rake, которые обозначены как имеющие отношение к этой процедуре «установки»?

ответ

3

rake-файл представляет собой набор задач, когда вы вызываете rake с аргументом (в этом случае install), это задача, которая выполняется. (Это похоже на ant, если вы пришли из Java)

Итак, нет, рейк не выполняет весь файл rake при вызове «rake + task», а только выбранную задачу. Обратите внимание, что задачи могут иметь зависимости (например, задача «тест» может зависеть от других предыдущих задач, таких как создание некоторых папок и прочее для запуска тестов).

И, наконец, полезно использовать руководство пользователя рейка, указанное другими пользователями, но я рекомендую читать более приятное здесь ->Ruby on Rails Rake tutorial.

+1

Кроме того, если вы выполните «rake install -dry-run», вы увидите, какие задачи будут выполняться, без какой-либо обработки, фактически выполняемой. – Shadwell

1

Рейк устанавливается так же, как Make в том, что Rakefile состоит из целей и зависимостей. Это отличается от обычного рубинового скрипта тем, что Rake начинается с цели, которую вы запрашиваете, и рекурсивно выполняет свои зависимости перед выполнением самой цели.

Таким образом, установка может выглядеть следующим образом:

task :install => :stage do 
    # stuff to do 
end 

Здесь ваша цель является install задачей, и это зависит от какой-либо другой задачи называется stage.

Чтобы выполнить install, Реки должны сначала выполнить зависимости stage (если он есть), то stage, а затем, наконец, он выполняет install. Так что нет, вы не выполняете весь файл, достаточно его, чтобы безопасно выполнить цель, которую вы просили.

Реки также поддерживает цель файлов:

file 'foo.html' => 'bar.xml' do |t| 
    # Build foo.html from bar.xml, however that is done 
end 

Если вы знаете сделать, это выглядит знакомым. Рейк сначала проверяет, зависит ли от bar.xml, и если да, то он выполняет это. Затем, если bar.xml новее, чем foo.html, то Rake выполняет эту задачу. Если foo.html новее, то Рейк предполагает, что он был создан и пропускает его.

Для получения дополнительной информации, Rake User Guide - хорошее место для начала, если вы хотите узнать, что делает Рейк.

+0

Я собирался написать один и тот же пример зависимости задачи, но потом я подумал ... «компилировать» в рубине? : D –

+0

Хорошая точка. Хех. – tgamblin

0

Почему плагин устанавливает что-то «лишнее»?

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