Rake เป็นนักวิ่งยอดนิยมใน Ruby
งานคืออะไร
- การสำรองฐานข้อมูลของคุณ
- ดำเนินการทดสอบของคุณ
- สถิติการรวบรวมและการรายงาน
งานเหล่านี้เป็นงานเล็กๆ ที่ไม่มี Rake จะกระจัดกระจายไปทั่วโปรเจ็กต์ของคุณในไฟล์ต่างๆ
คราดรวมศูนย์การเข้าถึงงานของคุณ
Rake ยังทำให้บางสิ่งง่ายขึ้นด้วย เช่น การค้นหาไฟล์ที่ตรงกับรูปแบบเฉพาะ &ที่เพิ่งแก้ไข
อีกสิ่งหนึ่ง :
อย่าสับสน Rake กับ Rack ชื่อคล้ายกันมาก แต่ต่างกันโดยสิ้นเชิง
- คราด เป็นผู้ดำเนินการ
- แร็ค ช่วยให้เซิร์ฟเวอร์และเฟรมเวิร์กของ Ruby ทำงานร่วมกันได้
ตอนนี้:
มาสำรวจคราดอย่างละเอียดกันดีกว่า!
ใครใช้คราด
ราง!
หากคุณเคยทำอะไรกับ Rails มาก่อน คุณอาจคุ้นเคยกับ rake db:migrate คำสั่ง
หรือ rake routes .
นั่นคือ Rake ที่ใช้งานจริงที่นั่น
ขอให้สังเกตว่า Rails ตั้งแต่เวอร์ชัน 5.0 ให้คุณเรียก rake . ได้มากที่สุด คำสั่งด้วย rails แทน
กล่าวอีกนัยหนึ่ง :
คุณสามารถทำ rails db:migrate แต่คราดยังทำงานอยู่
วิธีการเขียนงานคราด
นี่เป็นงาน 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 ที่เป็นประโยชน์บางอย่างที่คุณสามารถใช้ได้
ตัวอย่างเช่น :
- ruby (เรียกใช้ไฟล์ Ruby)
- sh (รันคำสั่งของระบบ)
- safe_ln (สร้างลิงก์สัญลักษณ์ในระบบไฟล์ของคุณ)
คราดรวม 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
ในตัวอย่างนี้ ฉันกำลังเรียกใช้สคริปต์ Ruby ภายใน data โฟลเดอร์ในโครงการ Rails ของฉัน
วิธีใช้เนมสเปซในคราด
เนื่องจากงานสามารถมีชื่อคล้ายกันได้ จึงง่ายที่จะใช้ชื่อเดียวกันสองครั้ง
นั่นคือเหตุผลที่ 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 .
รายการงานที่ขึ้นต่อกันยังสามารถเป็นอาร์เรย์ของสตริงหรืออาร์เรย์ของสัญลักษณ์ได้
เรียกใช้งานคราดภายในงานอื่น
ถ้าแทนที่จะมีชุดของงานที่รันก่อนงานปัจจุบัน คุณต้องการรันงานอื่นภายในงานปัจจุบัน คุณสามารถใช้โค้ดต่อไปนี้ได้
ตัวอย่าง :
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
ประโยชน์ของการใช้กฎคือเมื่อไฟล์ถูกบีบอัดแล้ว ไฟล์จะไม่ถูกบีบอัดอีกจนกว่าไฟล์ต้นฉบับจะเปลี่ยนไป
สังเกตบางสิ่งในโค้ดนี้ :
- เราใช้
FileListclass ซึ่งเป็นส่วนหนึ่งของ Rake เพื่อกำหนดรายการไฟล์ที่เราต้องการใช้งาน - กฎเริ่มต้นด้วยส่วนขยาย TARGET เพื่อให้กฎตรงกัน เราต้องใช้
.ext(".txt.gz")ในFileList. - นี่
.txt.gz => .txtไม่ได้หมายความว่าเราไปจากtxt.gzเป็นtxtมันเป็นวิธีอื่น ลูกศรคือไวยากรณ์แฮช
ตัวเลือกและคำสั่งคราด
นี่คือรายการตัวเลือกคราดที่มีประโยชน์ :
- rake -T (แสดงรายการงานที่มี)
- rake -P (รายการงานและการอ้างอิง)
- rake -W (รายการงาน &ตำแหน่งที่กำหนดไว้)
- rake -V (โหมด verbose, คำสั่งระบบ echo)
- 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
สรุป
คุณได้เรียนรู้เกี่ยวกับ Rake นักวิ่งยอดนิยมของ Ruby แล้ว
ใช้ rake -T เพื่อค้นหาว่ามีงานใดบ้าง ให้สร้างงานของคุณเองและเพิ่มลงใน Rakefile หรือภายใน lib/tasks โฟลเดอร์ และจำไว้ว่า Rake &Rack เป็นสิ่งที่แตกต่างกัน

อย่าลืมที่จะแบ่งปันบทความนี้เพื่อให้คนอื่น ๆ สามารถเพลิดเพลินกับมันได้ 🙂
ขอบคุณสำหรับการอ่าน!