rake ruby что такое

RAKE – Ruby Make ¶ ↑

Description ¶ ↑

Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax.

Rake has the following features:

Rakefiles (rake’s version of Makefiles) are completely defined in standard Ruby syntax. No XML files to edit. No quirky Makefile syntax to worry about (is that a tab or a space?)

Users can specify tasks with prerequisites.

Rake supports rule patterns to synthesize implicit tasks.

Flexible FileLists that act like arrays but know about manipulating file names and paths.

A library of prepackaged tasks to make building rakefiles easier. For example, tasks for building tarballs. (Formerly tasks for building RDoc, Gems, and publishing to FTP were included in rake but they’re now available in RDoc, RubyGems, and rake-contrib respectively.)

Supports parallel execution of tasks.

Installation ¶ ↑

Gem Installation ¶ ↑

Download and install rake with the following.

Usage ¶ ↑

Simple Example ¶ ↑

First, you must write a “Rakefile” file which contains the build rules. Here’s a simple example:

This Rakefile has two tasks:

A task named “test”, which – upon invocation – will run a unit test file in Ruby.

A task named “default”. This task does nothing by itself, but it has exactly one dependency, namely the “test” task. Invoking the “default” task will cause Rake to invoke the “test” task as well.

Running the “rake” command without any options will cause it to run the “default” task in the Rakefile:

Type “rake –help” for all available options.

Resources ¶ ↑

Rake Information ¶ ↑

Presentations and Articles about Rake ¶ ↑

Avdi Grimm’s rake series:

Other Make Re-envisionings … ¶ ↑

Rake is a late entry in the make replacement field. Here are links to other projects with similar (and not so similar) goals.

directory.fsf.org/wiki/Bras – Bras, one of earliest implementations of “make in a scripting language”.

Credits ¶ ↑

Who originally created Rake.

Ryan Dlugosz

For the initial conversation that sparked Rake.

Nobuyoshi Nakada

For the initial patch for rule support.

Tilman Sauerbeck

For the recursive rule patch.

Eric Hodel

For aid in maintaining rake.

Hiroshi SHIBATA

Maintainer of Rake 10.X and Rake 11.X

License ¶ ↑

Rake is available under an MIT-style license.

Copyright © Jim Weirich

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Other stuff ¶ ↑

Copyright Jim Weirich. Released under an MIT-style license. See the MIT-LICENSE file included in the distribution.

Warranty ¶ ↑

This software is provided “as is” and without any express or implied warranties, including, without limitation, the implied warranties of merchantability and fitness for a particular purpose.

Historical ¶ ↑

Rake was originally created by Jim Weirich, who unfortunately passed away in February 2014. This repository was originally hosted at github.com/jimweirich/rake, however with his passing, has been moved to ruby/rake.

You can read more about Jim at Wikipedia.

Thank you for this great tool, Jim. We’ll remember you.

Источник

rake setup: Конфигурация окружения для работы проекта на Ruby On Rails

Доброго времени суток!

Перечитывая блог Signals Vs Noise я наткнулся на интересную статью

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

> All our apps has a rake setup task that’ll run bundler,
> create the databases, import seeds, and install any auxiliary
> software (little these days) or do any other setup. So when you git
> clone a new app, you know that “rake setup” will take care of you.

Я расскажу о том, как сделать подобную задачу в Ruby On Rails приложении.

Зайдем в папку с приложением и запустим
Данная команда выведет список всех задач, доступных для rake.

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

Создаем новую Rake task

Он создаст скелет для нашей новой инструкции:
lib/tasks/setup.rake

Hello World

Пройдемся по лексемам только что созданной задачи

:hello_world — имя задачи.

=> :environment — зависимости. Перед тем как запустить основную задачу, Rake запускает все зависимые задачи. В данном случае запустится инструкция rake environment, которая включена в сборку RoR и позволяет работать с операциями, зависящими от окружения, например, использование базы данных.

Поприветствовать мир через rake будет просто. Добавим в тело задачи puts ‘Hello from rake!’ и запустим ее

Invoke

Это дает возможность создать ряд инструкций, которые с помощью встроенных Rails задач подготовят нашу базу к работе:

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

Работа с моделями

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

Собираем все вместе

Допишем в конце файла (вне блока namespace :setup) следующую инструкцию:

Запуск!

Все прошло как и было задумано! Поздравляю!

Заключение

После создания данной rake задачи на вас ложится еще одна ответственность — держать этот файл в актуальном состоянии, не забывайте про это.

И помните — вы не единственный разработчик. Если какая-то деталь кажется вам очевидной, то другой может потерять много времени до того как поймет как с ней работать. Старайтесь упростить разработку не только себе, но и коллегам.

Источник

Rake ruby что такое

Rake is a Make-like program implemented in Ruby. Tasks and dependencies are specified in standard Ruby syntax.

Rake has the following features:

Rakefiles (rake’s version of Makefiles) are completely defined in standard Ruby syntax. No XML files to edit. No quirky Makefile syntax to worry about (is that a tab or a space?)

Users can specify tasks with prerequisites.

Rake supports rule patterns to synthesize implicit tasks.

Flexible FileLists that act like arrays but know about manipulating file names and paths.

A library of prepackaged tasks to make building rakefiles easier. For example, tasks for building tarballs. (Formerly tasks for building RDoc, Gems, and publishing to FTP were included in rake but they’re now available in RDoc, RubyGems, and rake-contrib respectively.)

Supports parallel execution of tasks.

Download and install rake with the following.

First, you must write a “Rakefile” file which contains the build rules. Here’s a simple example:

This Rakefile has two tasks:

A task named “test”, which – upon invocation – will run a unit test file in Ruby.

A task named “default”. This task does nothing by itself, but it has exactly one dependency, namely the “test” task. Invoking the “default” task will cause Rake to invoke the “test” task as well.

Running the “rake” command without any options will cause it to run the “default” task in the Rakefile:

Type “rake –help” for all available options.

Источник

Рейк 101

Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)

В этой статье объясняются основы Rake. Это супер популярный инструмент сборки, написанный на Ruby. Он предлагает большую гибкость и используется для управления всеми видами задач. Если вы используете Rails, я рекомендую взглянуть под капотом, чтобы узнать, какие задачи имеются в вашем распоряжении, и как писать свои собственные.

Что такое Rake?

Благодаря Rails, Rake стал стандартом де-факто как инструмент для сборки Ruby приложений. Он очень популярен в сообществе Ruby. Очень рано команда Rails решила использовать Rake в качестве сборщика для Rails, что означало, что в прошлом, когда вы загружали Rails, вам также нужна была копия Rake. Таким образом Rake был представлен сразу куче людей. Чуть позже он был включен в Ruby (1.9).

Что делает Rake очень сильным, так это то, что эти задачи могут быть связаны друг с другом и могут быть построены друг на друге. Кроме того, поскольку он написан в Ruby, вы можете написать любой код Ruby для своих задач. Хотите использовать библиотеки Ruby в своих задачах Rake? Нет проблем! Интересный факт: это самый загруженный RubyGem с более чем 100 миллионами загрузок. Так что это определенно то, что должно быть в вашем наборе для инструментов, и на что вы должны обратить больше внимания.

Он был придуман покойным Джимом Вейрихом, известным и любимым разработчиком, докладчиком и вкладчиком в экосистему Ruby. Это прекрасный инструмент, действительно, спасибо, Джим! ПОКОЙСЯ С МИРОМ!

Список заданий

Давайте рассмотрим некоторые задачи, которые Rails предлагает прямо из коробки. Бьюсь об заклад, вы немного удивлены тем, что вам доступно. В соответствующем каталоге вашего приложения или вашего Rakefile вы можете перечислить их, введя в оболочку следующее:

Вывод:

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

Shell:

Вывод:

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

Начинаем работу

Rakefile может иметь один из следующих пяти вариантов:

Организация пользовательских Rakefile

Rails делает это невероятно простым. Он содержит Rakefile в корне вашего приложения. В котором находится следующее:

Rakefile

Shell

Анатомия заданий Rake

lib/tasks/some_task.rake

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

require/import

Некий Rakefile

Некий Rakefile

invoke & execute

С кодом Rake::Task[‘some_task’] мы выполнили задачу some_task Rake. Он возвращает экземпляр класса Rake::Task и затем запускает любой доступный ему метод.

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

Другие примеры включают:

Некий Rakefile

Предпосылки

Некий Rakefile

Если вы хотите полагаться на несколько задач, вы просто привязываете их к массиву. Конечно, порядок, в котором вы их распологаете, имеет значение.

Если вы выполняете задачу Rake, которая зависит от другой, мы получим следующий результат:

Shell

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

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

Некий Rakefile

Передача аргументов

У вас есть два варианта передачи аргументов для задач Rake: либо с использованием переменных Bash, либо с использованием самого синтаксиса Rake.

Переменная ENV

Так же, если вы наберете env или ENV в своей оболочке, вы получите доступ к целой группе переменных окружения. Я отредактировал список, но для лучшего понимания того, какие переменные среды доступны и что они в себя включают, я призываю вас запустить это и у себя.

Shell

Вывод

Shell

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

Метод класса Ruby ENV

Shell

Некий Rakefile

В этом определении задачи вы можете увидеть, как мы готовы принять или включить переменную, переданную в вызов задачи. Ruby ENV[BASHVARIABLE] сделает за нас всю необходимую работу. Если BOOKTITLE была глобальной переменной окружения, мы могли бы получить доступ к ней внутри этого определения задачи, а также с этим синтаксисом.

Синтаксис параметров Rake

Shell

Некий Rakefile

Задачи, представляющие интерес

Ниже приведен краткий список задач Rake, связанных с Rails:

Ниже приведены несколько полезных задач в пространстве имен db для запуска миграции Active Record:

rake db:version печатает текущую версию схемы. Результат выглядит примерно так:

rake db:migrate запускает последнюю миграцию (-и), которые еще не запущены. Вы также можете передать ему конкретную миграцию для запуска.

Shell

rake db:create создает вашу базу данных. Если по умолчанию установлены базы данных разработки и тестирования.

rake db:test:prepare проверяет, что миграции, которые уже запущены в вашей базе данных разработки, также запускаются для вашей тестовой базы данных. Если схема тестовой базы данных не синхронизирована с вашей базой данных разработки, это, конечно, не очень полезная задача.

rake db:drop:all по умолчанию дропает как тестовые, так и базы данных разработки.

rake db:rollback отменяет последнюю миграцию.

rake db:drop по умолчанию дропает базу разработки и тестовую.

rake db:reset сначала сбрасывает базы данных и снова устанавливает их, загружая схему и наполняя базу данных.

Скриншот

rake ruby что такое. Смотреть фото rake ruby что такое. Смотреть картинку rake ruby что такое. Картинка про rake ruby что такое. Фото rake ruby что такоеrake ruby что такое. Смотреть фото rake ruby что такое. Смотреть картинку rake ruby что такое. Картинка про rake ruby что такое. Фото rake ruby что такое rake ruby что такое. Смотреть фото rake ruby что такое. Смотреть картинку rake ruby что такое. Картинка про rake ruby что такое. Фото rake ruby что такое

stats

rake stats дает вам хороший обзор вашего приложения.

notes

Некий файл Ruby

Shell

about

rake about дает вам обзор номеров версий для:

и много другой полезной информации.

secret

Если вы параноик относительно своего ключа сеанса и хотите его заменить, rake secret создаст для вас новый псевдослучайный ключ. Тем не менее, он не заменяет ключ для вас. Результат в оболочке выглядит следующим образом:

ресурсы

routes

rake routes наверно самая важная команда. Она показывает вам все маршруты в вашем приложении.

Заключение

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

Источник

Rake Tutorial

Rake — инструмент для автоматизации сборки программного кода, написаный на Ruby, подобен таким инструментам как make, Ant или Phing. Хотя между ними существует огромная разница. В отличие от других инструментов, Rake не обеспечивает внешний DSL (например, XML-файл сборки в Ant). Вместо этого, все задачи описываются на чистом Ruby. Таким образом вы получаете полную гибкость и можете пользоваться полезными фичами Ruby.

Что такое инструменты сборки?

Если вы когда-либо пробовали инсталлировать программное обеспечение из исходных кодов в системе Linux или Unix, существует высокая вероятность, что вам приходилось иметь дело с make. Процесс установки обычно выглядит одинаково. Сперва вы переходите в директорию с уже распаковаными исходными кодами, затем вводите следующие команды:

./configure
make
make install

Вторая и третья линии — просто вызов программы make. В первую очередь при запуске make ищет файл Makefile. В нем содержится информация о исходниках и зависимостях между ними. make сортирует топологические зависимости и пытается решить их в надлежащем порядке. Это выглядит следующим образом: сначала разработчик указывает зависимости, а инструмент сборки отвечает за их обработку. make также позволяет сэкономить время. Если исходный код не изменился с последней компиляции, он не будет обработано снова, поскольку это будет чистой потерей времени. Инструменты сборки могут быть использованы не только для компиляции кода, хотя это и есть их основная задача. В общем, инструменты сборки используются для автоматизации утомительных и повторяющихся задач.

Отличия между Rake и остальными инструментами сборки.

Как я уже говорил, есть одно существенное различие между Rake и другими инструментами для сборки. Вместо того чтобы писать Makefile для make и build.xml для Ant и Phing, вы просто пишете код на Ruby. Вам не прийдется осваивать синтаксис новых инструментов сборки, если решите заменить один инструмент на другой.
Но теории недостаточно, давайте перейдем к практике.

Установка Rake

Установка rake достаточно легка, при условии, что у вас на компьюторе присудствуют Ruby gems. Для установки rake, введите следующие команды:

В большинстве случаев вам могут понадобиться права администратора, поэтому либо перейдите аод администратора, либо используйте приставку sudo.

sudo gem install rake

После того как rake gem установлен, мы можем написать наш первый пример.

Первый пример Rake

Наипростейший путь определить задачу Rake — написать следующий код на Ruby:

task :default do
puts «Hello World!»
end

Rake задачи должны всегда находиться в файле с именем Rakefile, Rakefile, rakefile.rb или Rakefile.rb. Первые две формы используются чаще всего. После того как Rakefile сохранен, нужно перейти в папку с этим файлом и выполнить следующую команду:

$ rake
(in /home/lukasz/ruby/rake_examples)
Hello World!

Первая rake задача работает отлично.

Итак, что же произошло на самом деле? Получая наш Rakefile, Rake ищет в нем задачи, которые являются просто вызовами метода task. В одном Rakefile может быть много задач. При запуске файла вы можете передать имя задачи, которую хотите выполнить. Если же задача не передается, rake ищет default задачу. Вот почему наш Rake вызов сделал свою работу без запросов каких-либо дополнительных параметров.

Давайте попробуем добавить много задач в один Rakefile:

task :ring do
puts «Bell is ringing.»
end

task :enter do
puts «Entering home!»
end

Если мы попробуем запустить команду rake без каких-либо параметров, то получим ошибку:

$ rake
(in /home/lukasz/ruby/rake_examples)
rake aborted!
Don’t know how to build task ‘default’

В этом файле не указано задание по умолчанию, поэтому мы должны явно передать им имя задачи:

$ rake enter
(in /home/lukasz/rake_examples)
Entering home!
$ rake ring
(in /home/lukasz/rake_examples)
Bell is ringing.

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

Добавление зависимостей

Давайте немного модифицируем наш файл:

task :ring do
puts «Bell is ringing.»
end

task :enter => :ring do
puts «Entering home!»
end

Теперь, когда вы захотите зайти в дом, сначала произойдет звонок в дверь:

$ rake enter
(in /home/lukasz/ruby/rake_examples)
Bell is ringing.
Entering home!

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

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

Для достижения того же эффекта со звонком в дверь, мы можем написать:

task :ring do
puts «Bell is ringing.»
end

task :enter do
puts «Entering home!»
end

И эффект будет таким же.

Описание задачи.

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

desc ‘Ring the bell’
task :ring do
puts «Bell is ringing.»
end

desc ‘Enter home’
task :enter => :ring do
puts «Entering home!»
end

file ‘products.sql’ => ‘products.xml’ do
# build SQL INSERT clause and save it in products.sql file,
# basing on products.xml datafile
end

Файл задача — в общем — не отличается от регулярных задач. Дело в том, что он не будет работать, если входной файл (products.xml в данном случае) не существует. Он также не будет работать, если файл-результат (products.sql) не старше входного файла. Если вам не подходит данное поведение, тоесть вам нужно перезаписывать выходной файл каждый раз при запуске задачи, используйте регулярные задачи.

FileUtils

Rake включает в себя модуль Fileutil, который обеспечивает множество Unix-подобных методов, включая mkdir, rmdir, cp, chmod и touch.
Поскольку модуль Fileutils уже включен, вы можете вызывать эти методы непосредственно, без использования рамок операторов.

task :manipulate_files do
mkdir ‘new_dir’
mv ‘new_dir’, ‘lukasz’
chmod 0777, ‘lukasz’
touch ‘lukasz/wrobel.txt’
rm_rf ‘lukasz’
end

Если вы знакомы с командной оболочкой Linux / Unix вы освоите этот модуль в очень краткие сроки.
Кстати, помните поводение файлов-задач? Если выходной файл не старше входного файла, файл задача не будет работать. В случае, если вы хотите выполнить такую проверку в регулярных задачах, вы можете использовать метод Fileutils, который называется uptodate.

unless uptodate?(output_file, input_file)
# regenerate output_file
end
end

FileList

Представьте себе файл задачи, где объединены много входных файлов, чтобы получить один выходной файл. Наиболее очевидным способом определения зависимостей между файлами будет:

one_file_to_rule_them_all = ‘database.sql’
tables_sql = [‘orders.sql’, ‘payments.sql’, ‘categories.sql’]

file one_file_to_rule_them_all => tables_sql

Это будет работать, но что если мы создадим еще один входной SQL файл? Мы должны помнить о том, что его нужно добавить в наш список.

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

Существует класс FileList, который может быть полезным в таких ситуациях. Давайте используем его сейчас:

Забудьте о добавлении каждого отдельного SQL файла в список. Rake сделает это за вас.

Аннотация

Существует огромное количество функций Rake, которые небыли охвачены в данном пояснении, например clean, clobber, rdoc и gem tasks, pathmap, rules и namespaces. У вас будет шанс узнать о них позже.
Я надеюсь что эта статья станет хорошей отправной точкой, чтобы получить представление о Rake. Rake доказал свою ценность и в настоящее время он широко используется в мире Ruby, так что написание Rake задач является обязательным навыком. Удачи в ваших собственных экспериментах с Rake.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *