Jump to content

Рейк (программное обеспечение)

Грабли
Разработчик(и) Джим Вейрих
Стабильная версия
13.2.1 [1] / 5 апреля 2024 г .; 3 месяца назад ( 05.04.2024 )
Репозиторий
Написано в Руби
Операционная система Кросс-платформенный
Тип Инструменты разработки программного обеспечения
Лицензия МОЯ лицензия
Веб-сайт рубин .github .что /грабли /

Rake — это средство управления программными задачами и инструмент автоматизации сборки, созданное Джимом Вейрихом . Он позволяет пользователю указывать задачи и описывать зависимости, а также группировать задачи в пространства имен. Он похож на SCons и Make . Rake был написан на Ruby и является частью стандартной библиотеки Ruby, начиная с версии 1.9. [2] [3]

Задачи, которые необходимо выполнить, необходимо определить в файле конфигурации под названием Rakefile. Rakefile не имеет специального синтаксиса и содержит исполняемый код Ruby. [4]

Основной единицей в Rake является задача. Задача имеет имя и блок действий, определяющий ее функциональность. Следующий код определяет задачуприветствие, которая выводит текст «Привет, Рейк!» на консоль. [5]

task :greet do
    puts "Hello, Rake!"
end

При определении задачи можно по желанию добавить зависимости, то есть одна задача может зависеть от успешного завершения другой задачи. Вызов задачи «начального заполнения» из следующего примера сначала выполнит задачу «миграции», а только затем продолжит выполнение задачи «начального заполнения». [5]

task :seed => :migrate do
    # This task will run after the :migrate task
end

Задачи также можно сделать более универсальными, приняв аргументы. Например, задача «generate_report» будет принимать дату в качестве аргумента. Если аргумент не указан, используется текущая дата. [5]

task :generate_report, [:date] do |t, args|
    report_date = args[:date] || Date.today
    # Generate the report based on the specified date
end

Особым типом задач является файловая задача, которую можно использовать для указания задач создания файлов. Например, в следующей задаче даны два объектных файла, т.е. «ao» и «bo», для создания исполняемой программы. [6]

file "prog" => ["a.o", "b.o"] do |t|
    sh "cc -o #{t.name} #{t.prerequisites.join(' ')}"
end

Еще одним полезным инструментом является метод удобства каталогов, который можно использовать для создания каталогов по требованию. [7]

directory "testdata/examples/doc"

Если файл указан как предварительное условие, но для него не определена файловая задача, Rake попытается синтезировать задачу, просматривая список правил, предоставленный в Rakefile. Например, предположим, что мы пытаемся вызвать задачу «mycode.o», для которой не определены никакие задачи. Если в Rakefile есть правило, которое выглядит так:

rule '.o' => '.c' do |t|
  sh "cc #{t.source} -c -o #{t.name}"
end

Это правило будет синтезировать любую задачу, оканчивающуюся на «.o». Обязательным условием является наличие исходного файла с расширением «.c». Если Rake сможет найти файл с именем «mycode.c», он автоматически создаст задачу, которая собирает «mycode.o» из «mycode.c». Если файл «mycode.c» не существует, Rake попытается рекурсивно синтезировать для него правило.

Когда задача синтезируется из правила, атрибуту источника задачи присваивается соответствующий исходный файл. Это позволяет пользователям писать правила с действиями, которые ссылаются на исходный файл. [8]

Расширенные правила

[ редактировать ]

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

Следующее правило эквивалентно приведенному выше примеру:

rule(/\.o$/ =>
  ->(t_name){ t_name.sub /\.o$/, '.c' }) do |t|
  sh "cc #{t.source} -c -o #{t.name}"
end

ПРИМЕЧАНИЕ. Из-за особенностей синтаксиса Ruby правила необходимо заключать в круглые скобки, если первый аргумент является регулярным выражением.

Для файлов Java можно использовать следующее правило: [9]

rule '.class' => ->(t_name){ t_name
    .sub(/\.class$/, '.java')
    .sub(/^classes\//, 'src/') } do |t|
  java_compile(t.source, t.name)
end

Пространства имен

[ редактировать ]

Чтобы лучше организовать большие Rake-файлы, задачи можно сгруппировать по пространствам имен. [10] Ниже приведен пример простого рецепта рейка:

namespace :cake do
  desc 'make pancakes'
  task :pancake => [:flour,:milk,:egg,:baking_powder] do
     puts "sizzle"
  end
  task :butter do
    puts "cut 3 tablespoons of butter into tiny squares"
  end
  task :flour => :butter do
    puts "use hands to knead butter squares into 1 1/2 cup flour"
  end
  task :milk do
    puts "add 1 1/4 cup milk"
  end
  task :egg do
   puts "add 1 egg"
  end
  task :baking_powder do
   puts "add 3 1/2 teaspoons baking powder"
  end
end

См. также

[ редактировать ]
  1. ^ «Выпуск v13.2.1 · Ruby/rake · GitHub» . Гитхаб . 5 апреля 2024 г. . Проверено 21 июня 2024 г.
  2. ^ «Грабли — Руби Мейк» . нд . Проверено 28 февраля 2024 г.
  3. ^ «НОВОСТИ» . nd Архивировано из оригинала 4 марта 2016 года . Проверено 29 февраля 2024 г.
  4. ^ «Формат рейк-файла» . Гитхаб . Проверено 21 июня 2024 г.
  5. ^ Jump up to: а б с «Учебное пособие по Ruby on Rails: понимание Rake и автоматизации задач» . 10.06.2019 . Проверено 21 июня 2024 г.
  6. ^ «Формат Rakefile # Задачи файла» . Гитхаб . Проверено 21 июня 2024 г.
  7. ^ «Формат Rakefile # Задачи каталога» . Гитхаб . Проверено 21 июня 2024 г.
  8. ^ «#Правила формата Rakefile» . Гитхаб . Проверено 21 июня 2024 г.
  9. ^ «Формат Rakefile # Расширенные правила» . Гитхаб . Проверено 21 июня 2024 г.
  10. ^ «Формат Rakefile # Пространства имен» . Гитхаб . Проверено 21 июня 2024 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 3ef049014d4ea50d5a24bc2217b35e07__1718994780
URL1:https://arc.ask3.ru/arc/aa/3e/07/3ef049014d4ea50d5a24bc2217b35e07.html
Заголовок, (Title) документа по адресу, URL1:
Rake (software) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)