Использовать rake task хороший способ автоматизировать рабочий процесс. Давайте обратим внимание как мы можем передавать аргументы в task.
Возьмем простой пример:

Запустим через командную строку:

Вычислим сумму динамически, используя параметры.

1 метод. Используем аргументы


Теперь передаем параметры следующим образом:

 Данный подход многим не нравится. Синтаксис более чем загадочный и команда не раскрывает до конца цель использования. Лично мне симпотизирует второй подход.

2 метод. Используем именованные переменные

Запускаем таск через консольку следующей командой:

Лично мне данный способ нравится больше всего. Синтаксис лаконичный. Название команды более осмысленная.

3 метод. Добавляем больше магии!

Этот метод дает нам гораздо больше DSL-подобный синтаксис, который кажется более чистым и более интуитивным. Запускаем данный таск следующим образом:

Стоит более детально объяснить, что здесь происходит:

Во первых в командной строке мы используем параметр из коллекции ARGV, чтобы перехватить наш текущий аргумент.
Обратим внимание, что эта коллекция будет содержать все аргументы для Rake, а не только для нашего таска. Поэтому мы и перехватываем последний аргумент, т.к. первый это имя таска.

Давайте, для примера, изменим следующим образом:

Как мы видим, ARGV коллекция включает два элемента, имя задачи и значение аргумента, который мы передаем.

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

По умолчанию команда выше вначале вызывает say_hello, а потом пытается вызвать таск с именем «Ruby». Таким способом мы просто определяем пустой таск с соответствующим именем. Это поможет нам избежать исключения, когда rake не найдет задачу по конкретному имени.