Rails와 Digdag를 연결하는 작은 라이브러리를 만들었습니다.
이게 뭐야?
Rails와 Digdag를 연결하는 작은 라이브러리를 만들었습니다.
이제 "mogura "라이브러리를 사용할 수 있습니다.
이것은 무엇을 위해 사용됩니까?
Rake 작업은 Rails에서 배치를 관리하는 방법입니다.
그러나 일괄 처리는 코드베이스를 부풀리고 운영 비용을 증가시키는 경향이 있습니다.
경우에 따라 Airflow와 같은 전문 Python ETL 도구를 도입하는 것이 학습/구축/운영/비용 또는 인력 채용에 걸림돌이 될 수 있습니다.
또한 Rake 작업에 포함된 Rails 관련 도메인 논리를 Python의 마이크로서비스로 다시 작성하는 것은 현실적인 옵션이 아닌 경우가 많습니다.
Rails 애플리케이션 내에 워크플로 엔진을 포함하라는 요구가 있을 수 있습니다.
저는 워크플로 엔진의 요구 사항을 충족하면서 Rails 애플리케이션의 도메인 논리를 사용하는 방법을 찾고 있었습니다.
그리고 Rails와 Digdag를 연결하는 작은 라이브러리를 만드는 옵션을 생각해 냈습니다.
용법
Rails 프로젝트 Gemfile에 다음을 추가하고
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
은 Digdag에 등록sample.dig
합니다.Digdag 내부
sample.dig
에서 Rails 환경을 로드하면 작업 흐름에서 Rails의 도메인 로직을 호출할 수 있습니다.읽어 주셔서 감사합니다!
현재는 하나의 Digdag 프로젝트만 워크플로로 등록할 수 있지만 여러 개의 Digdag 프로젝트를 등록할 수 있으면 더 좋을 것 같습니다.
또한 이 라이브러리는 현재 CLI에서만 Digdag 작업을 허용하지만 Rails 애플리케이션의 도메인 로직에서 워크플로를 등록하고 편집할 수 있기를 바랍니다.
그리고 저는 이 라이브러리에 대한 피드백이나 기여를 적극적으로 찾고 있습니다. 자유롭게 추가할 새로운 기능 아이디어가 있으세요! :)
Reference
이 문제에 관하여(Rails와 Digdag를 연결하는 작은 라이브러리를 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kentfujii/ive-created-a-tiny-library-connecting-rails-and-digdag-42d2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)