Rake는 Ruby에서 인기 있는 태스크 러너입니다.
작업이란 무엇입니까?
- 데이터베이스 백업하기
- 테스트 실행
- 통계 수집 및 보고
Rake가 없으면 프로젝트 전체에 다른 파일로 흩어져 있는 작은 작업입니다.
Rake는 작업에 대한 액세스를 중앙 집중화합니다.
Rake는 또한 특정 패턴과 일치하고 최근에 수정된 파일을 찾는 것과 같은 몇 가지 작업을 더 쉽게 만듭니다.
한 가지 더 :
이름이 매우 비슷하지만 완전히 다른 Rake와 Rack을 혼동하지 마십시오.
- 갈퀴 작업 실행자입니다.
- 랙 Ruby 서버와 프레임워크가 함께 작동하도록 도와줍니다.
지금:
레이크를 더 자세히 살펴봅시다!
Rake는 누가 사용합니까?
레일!
Rails로 무엇이든 해본 적이 있다면 rake db:migrate
에 익숙할 것입니다. 명령.
또는 rake routes
.
바로 Rake가 실행 중인 것입니다.
Rails는 버전 5.0부터 대부분의 rake
rails
명령어 대신.
즉 :
rails db:migrate
를 할 수 있습니다. , 하지만 Rake는 여전히 일을 하고 있습니다.
Rake 작업을 작성하는 방법
다음은 간단한 레이크 작업입니다.
desc "Print reminder about eating more fruit." task :apple do puts "Eat more apples!" end
이 코드를 Rakefile
이라는 파일에 넣을 수 있습니다. 또는 Rails를 사용하는 경우 lib/tasks/apple.rake
아래에 저장할 수 있습니다. .
이 작업을 실행하려면 :
rake apple # "Eat more apples!"
작업 내에서 일반적인 Ruby 코드를 작성할 수 있지만 사용할 수 있는 몇 가지 유용한 Rake 메서드가 있습니다.
예를 들어 :
- 루비(루비 파일 실행)
- sh(시스템 명령 실행)
- safe_ln(파일 시스템에 심볼릭 링크 생성)
Rake에는 FileUtils
가 포함됩니다. 모듈.
즉, cp
로 파일을 복사할 수 있습니다. , mkdir_p
로 디렉토리 생성 , chown
으로 파일 권한 변경도 가능 .
예시 :
task :clean_cache do rm_r FileList["tmp/cache/*"] end
rm_r
주의 (재귀로 제거) 확인 없이 파일을 삭제하므로 확인 단계를 추가하려면 종속 작업을 추가할 수 있습니다. (이 기사 뒷부분에서 다룹니다) 계속하지 않으려면 예외를 발생시키십시오.
다른 디렉토리 내에서 Rake 명령 실행
특정 디렉토리 내에서 Rake 명령을 실행할 수 있습니다.
방법은 다음과 같습니다. :
task :import do puts "Importing data..." Dir.chdir(Rails.root.join("data")) { ruby "load-data.rb" } end
이 예에서는 data
내에서 Ruby 스크립트를 실행하고 있습니다. 내 Rails 프로젝트의 폴더입니다.
Rake에서 네임스페이스를 사용하는 방법
작업 이름이 비슷할 수 있으므로 같은 이름을 두 번 사용하기 쉽습니다.
이것이 Rake에 네임스페이스가 있는 이유입니다.
예를 들어 :
backup
을 만들 수 있습니다. 모든 백업 작업을 위한 네임스페이스입니다.
좋아요 :
namespace :backup do task :create do # ... end task :list do # ... end task :restore do # ... end end
네임스페이스 작업을 실행하려면 :
rake backup:create
종속 작업
Rake를 사용하면 현재 작업 전에 실행해야 하는 다른 작업 목록을 정의할 수 있습니다.
이를 통해 작업에 필요한 모든 설정을 수행할 수 있습니다.
예:
task create_examples: "load_database" do # ... end
이 예에서 load_database
create_examples
전에 실행됩니다. .
종속 작업 목록은 문자열 배열 또는 기호 배열일 수도 있습니다.
다른 작업 내에서 Rake 작업 실행
현재 작업 이전에 실행되는 작업 집합을 갖는 대신 현재 작업 내에서 다른 작업을 실행하려는 경우 다음 코드를 사용할 수 있습니다.
예 :
task :coverage do ENV['COVERAGE'] = 'true' Rake::Task["test"].execute end
이것은 테스트 커버리지 및 기타 옵션을 활성화하는 환경 변수를 설정하는 데 도움이 될 수 있습니다.
레이크 규칙 사용 방법
규칙은 파일 확장자 변환을 정의합니다.
예 :
task compress: FileList["/tmp/*.txt"].ext(".txt.gz") rule '.txt.gz' => '.txt' do |t| sh "gzip", "-k", "-f", t.source end
규칙을 사용하면 파일이 압축되면 소스 파일이 변경될 때까지 다시 압축되지 않는다는 이점이 있습니다.
이 코드에서 몇 가지 주의사항 :
FileList
를 사용합니다. Rake의 일부인 클래스를 사용하여 작업하려는 파일 목록을 정의합니다.- 규칙은 TARGET 확장자로 시작합니다. 규칙을 일치시키려면
.ext(".txt.gz")
를 사용해야 합니다.FileList
에서 . - 이
.txt.gz => .txt
txt.gz
에서 이동한다는 의미는 아닙니다.txt
로 , 그 반대입니다. 화살표는 해시 구문입니다.
갈퀴 옵션 및 명령
유용한 갈퀴 옵션 목록입니다. :
- rake -T(사용 가능한 작업 나열)
- rake -P(작업 및 종속 항목 나열)
- rake -W(작업 및 정의된 위치 나열)
- rake -V(상세 모드, 에코 시스템 명령)
- rake -t(디버깅 모드)
- rake -f(특정 Rakefile 사용)
예:Rails 앱에서 :
> rake -T test rake test # Runs all tests in test folder except system ones rake test:db # Run tests quickly, but also reset db rake test:system # Run system tests only
요약
Ruby의 인기 있는 작업 실행기인 Rake에 대해 배웠습니다.
rake -T
사용 사용 가능한 작업을 찾으려면 자신의 작업을 만들고 Rakefile
에 추가하십시오. , 또는 lib/tasks
내부 폴더를 만들고 Rake
&Rack
다른 것들입니다.
더 많은 사람들이 즐길 수 있도록 이 기사를 공유하는 것을 잊지 마세요 🙂
읽어주셔서 감사합니다!