Rails 레이크 작업 사용자 지정
10910 단어 railswebdevrubyproductivity
동기 부여
Rails rake 작업은 개발자 또는 다른 메커니즘(예: rake 작업을 호출하는 배포)에서 사용할 특정 작업을 자동화하는 명령입니다. 많은 작업은 중요한 기능을 제공하기 위해 Rails로 구성되어 제공됩니다. 이 게시물에서는 작업을 재정의하고 단계를 변경하여 자신의 응용 프로그램에 맞게 사용자 지정하는 방법을 설명합니다.
다음은 즉시 사용 가능한 작업의 몇 가지 예입니다.
$ rake -T # Lists all rake tasks for the application
$ rake # Default rake task. On a fresh application, does the same as rake test
$ rake test # Task to run your tests (replaced by "rake spec" if using rspec instead of minitest)
$ rake db:seed # Populates the database using the seeds.rb file
그러나 작업은 다른 작업을 실행하기 위해 매우 쉽게 재정의될 수 있습니다. 이것은 테스트 스위트 실행 이상의 것을 포함할 수 있는 빌드 프로세스의 단계를 정의하거나 단순히 기존 작업의 동작을 변경하는 데 유용합니다.
요구 사항에 맞게 갈퀴 작업을 사용자 지정하면 생산성이 향상되고 프로젝트의 모든 사람이 표준화된 프로세스를 사용하고 있는지(또는 최소한 쉽게 수행할 수 있는 도구가 있음) 보장할 수 있습니다.
그것을 하는 방법?
레이크 작업을 재정의하는 것은 매우 간단합니다. 원래 작업을 지우고 재정의하는 두 가지 작업이 포함됩니다. 모든 코드가 새 정의 안에 들어갈 수 있지만 단순성을 위해 각 단계를 자체 레이크 작업으로 깔끔하게 구성하는 것이 좋습니다.
새 갈퀴 작업을 만드는 방법
사용자 정의 레이크 작업은 lib/tasks 폴더 안에 있습니다. ".rake"로 끝나는 모든 파일은 Rails에 의해 자동으로 선택되고 로드됩니다.
# lib/tasks/my_task.rake
namespace :custom do
desc "This take does something useful!"
task :do_it do
puts "Do something useful!"
end
end
완료! 이제 아래 명령을 사용하여 새 레이크 작업을 호출할 수 있습니다. 다음 섹션에서는 다른 작업에서 호출하는 방법을 살펴보겠습니다.
$ rake custom:do_it
기존 작업을 재정의하는 방법
작업을 재정의하려면 현재 동작을 지우고 Rakefile에서 재정의하십시오. 아래 예제는 기본 레이크를 재정의하여 사용자 지정 작업을 호출합니다.
# Rakefile
# frozen_string_literal: true
require_relative "config/application"
Rails.application.load_tasks
Rake::Task["default"].clear
task :default do
Rake::Task["custom:do_it"].invoke
end
그리고 당신은 그것을 가지고 있습니다! 기본 레이크 작업은 애플리케이션이 필요로 하는 모든 작업을 수행하도록 구성할 수 있습니다.
다음 섹션에서는 Rails 애플리케이션에 대한 일반적인 설정을 살펴보겠습니다.
내가 선호하는 구성
내가 사용하고 싶은 구성은 기본 작업과 테스트 레이크 작업을 모두 재정의하여 몇 가지 도구와 통합합니다. 각각에 대한 단계는 아래에 설명되어 있습니다(해당 리포지토리에서 개별 도구 설정 및 구성 확인).
이러한 단계 중 하나라도 중단되면 빌드 프로세스가 중지되고 실패합니다.
기본
단계는 다음 순서로 실행됩니다.
$ rake -T # Lists all rake tasks for the application
$ rake # Default rake task. On a fresh application, does the same as rake test
$ rake test # Task to run your tests (replaced by "rake spec" if using rspec instead of minitest)
$ rake db:seed # Populates the database using the seeds.rb file
레이크 작업을 재정의하는 것은 매우 간단합니다. 원래 작업을 지우고 재정의하는 두 가지 작업이 포함됩니다. 모든 코드가 새 정의 안에 들어갈 수 있지만 단순성을 위해 각 단계를 자체 레이크 작업으로 깔끔하게 구성하는 것이 좋습니다.
새 갈퀴 작업을 만드는 방법
사용자 정의 레이크 작업은 lib/tasks 폴더 안에 있습니다. ".rake"로 끝나는 모든 파일은 Rails에 의해 자동으로 선택되고 로드됩니다.
# lib/tasks/my_task.rake
namespace :custom do
desc "This take does something useful!"
task :do_it do
puts "Do something useful!"
end
end
완료! 이제 아래 명령을 사용하여 새 레이크 작업을 호출할 수 있습니다. 다음 섹션에서는 다른 작업에서 호출하는 방법을 살펴보겠습니다.
$ rake custom:do_it
기존 작업을 재정의하는 방법
작업을 재정의하려면 현재 동작을 지우고 Rakefile에서 재정의하십시오. 아래 예제는 기본 레이크를 재정의하여 사용자 지정 작업을 호출합니다.
# Rakefile
# frozen_string_literal: true
require_relative "config/application"
Rails.application.load_tasks
Rake::Task["default"].clear
task :default do
Rake::Task["custom:do_it"].invoke
end
그리고 당신은 그것을 가지고 있습니다! 기본 레이크 작업은 애플리케이션이 필요로 하는 모든 작업을 수행하도록 구성할 수 있습니다.
다음 섹션에서는 Rails 애플리케이션에 대한 일반적인 설정을 살펴보겠습니다.
내가 선호하는 구성
내가 사용하고 싶은 구성은 기본 작업과 테스트 레이크 작업을 모두 재정의하여 몇 가지 도구와 통합합니다. 각각에 대한 단계는 아래에 설명되어 있습니다(해당 리포지토리에서 개별 도구 설정 및 구성 확인).
이러한 단계 중 하나라도 중단되면 빌드 프로세스가 중지되고 실패합니다.
기본
단계는 다음 순서로 실행됩니다.
Brakeman - 보안을 위한 코드 분석
Parallel tests - 병렬로 테스트 실행
Rubocop - 코드 품질 분석
Rails best practices - Rails 분석을 위한 모범 사례
Reek - 코드 냄새 분석
테스트
이것은 단순히 병렬을 사용하도록 실행 중인 테스트를 대체합니다.
Parallel tests - 병렬로 테스트 실행
높은 수준의 설명을 살펴보았으므로 이제 비즈니스를 시작하겠습니다. 다음은 재정의된 작업과 개별 작업 정의 자체가 있는 Rakefile입니다.
# Rakefile
# frozen_string_literal: true
require_relative "config/application"
require "rubocop/rake_task"
Rails.application.load_tasks
Rake::Task["default"].clear
Rake::Task["test"].clear
task :default do
Rake::Task["brakeman:check"].invoke
Rake::Task["parallel:test"].invoke
RuboCop::RakeTask.new(:rubocop)
Rake::Task["rubocop"].invoke
Rake::Task["rails_best_practices:run"].invoke
Rake::Task["reek:run"].invoke
end
task :test do
Rake::Task["parallel:test"].invoke
end
브레이크맨 레이크 작업
# lib/tasks/brakeman.rake
# frozen_string_literal: true
namespace :brakeman do
desc "Check your code with Brakeman"
task :check do
require "brakeman"
result = Brakeman.run app_path: ".", print_report: true, pager: nil
exit Brakeman::Warnings_Found_Exit_Code unless result.filtered_warnings.empty?
end
end
레일 모범 사례 레이크 작업
# lib/tasks/rails_best_practices.rake
# frozen_string_literal: true
namespace :rails_best_practices do
desc "Run rails best practices"
task :run do
puts "Running rails best practices!"
puts `rails_best_practices`
end
end
악취가 나는 갈퀴 작업
# lib/tasks/reek.rake
# frozen_string_literal: true
namespace :reek do
desc "Run reek"
task :run do
puts "Running reek!"
bundle exec "reek ."
end
end
젬파일
# Gemfile
group :development, :test do
gem "brakeman", require: false
gem "parallel_tests"
gem "rails_best_practices", require: false
gem "reek", require: false
gem "rubocop", require: false
end
결론
재정의된 갈퀴 작업은 생산성을 높이고 팀 구성원 간에 모범 사례를 적용하는 데 도움이 될 수 있습니다. 그들을 활용하십시오!
갈퀴 작업과 통합할 다른 도구는 무엇입니까?
이 기능은 다른 어떤 용도로 사용할 수 있습니까?
Reference
이 문제에 관하여(Rails 레이크 작업 사용자 지정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/vinistock/customizing-rails-rake-tasks-3bg5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Rails 레이크 작업 사용자 지정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/vinistock/customizing-rails-rake-tasks-3bg5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)