Что это такое?
Я создал крошечную библиотеку, соединяющую Rails и Digdag.
Теперь доступна библиотека “mogura”.
Для чего она используется?
Задачи Rake – это способ управления пакетами в Rails.
Однако пакетная обработка имеет тенденцию раздувать кодовую базу и увеличивать эксплуатационные расходы.
В некоторых случаях внедрение профессионального инструмента Python ETL, такого как Airflow, может стать препятствием для обучения/строительства/эксплуатации/расходов или найма персонала.
Кроме того, переписать доменную логику, связанную с Rails, содержащуюся в задачах Rake, в виде микросервисов на Python часто не представляется реальной возможностью.
Может возникнуть потребность включить механизм документооборота в Rails-приложение.
Я искал способ использовать доменную логику Rails-приложения и при этом удовлетворить требования механизма документооборота.
И я пришел к варианту создания крошечной библиотеки, соединяющей Rails и Digdag.
Использование
Добавьте следующее в Gemfile вашего проекта Rails и bundle install
.
gem 'mogura'
Когда библиотека будет установлена, попробуйте выполнить следующую команду в корневом каталоге вашего проекта Rails
$ bundle exec mogura help
Commands:
mogura help [COMMAND] # Describe available commands or one specific command
mogura init # Initialize Digdag files
mogura push # Push Digdag workflows
mogura version # Prints version
bundle exec mogura init
создаст следующие файлы в вашем проекте Rails
RAILS_ROOT/config/digdag/sample.dig
RAILS_ROOT/app/dags/sample_dag.rb
_export:
rb:
require: {{ RAILS_ROOT }}/config/environment
+run:
rb>: SampleDag.run
class SampleDag
def run
puts "Hello Rails #{Rails.env}"
end
end
Команда bundle exec mogura push
зарегистрирует sample.dig
в Digdag.
Загрузив среду Rails из Digdag внутрь sample.dig
, вы сможете вызывать свою доменную логику Rails из рабочего процесса.
Спасибо за прочтение!
В настоящее время только один проект Digdag может быть зарегистрирован как рабочий процесс, но я думаю, что было бы лучше, если бы можно было регистрировать несколько проектов Digdag.
Кроме того, в настоящее время эта библиотека позволяет выполнять операции с Digdag только из CLI, но я хотел бы иметь возможность регистрировать и редактировать рабочие процессы из вашей доменной логики Rails-приложения.
И я активно ищу отзывы или вклад в эту библиотеку, не стесняйтесь, если у вас есть идеи по добавлению новой функциональности! 🙂