Rake & Rakefile nedir?

Mustafa Gunes
Delivery Hero Tech Hub

--

Konuya girmeden önce Ruby dilinden bahsetmek gerek. 1995 yılında Yukihiro Matsumoto tarafından Japonyada yazılmış ve ilk sürümü çıkarılmış olan bu dil; nesne tabanlı, fonksiyonel ve sözdizimi anlaşılır bir dil olarak kabul edilir. Açık kaynak olarak geliştirilmeye devam edilen bu dilin esinlendiği diller şunlar; Perl, Smalltalk, Eiffel, Ada ve Lisp. Kendisinin en meşhur framework’ü ise herhalde şüphe götürmez Ruby on Rails web framework’üdür. Bu kadar giriş bilgisinden sonra artık rake kısmına geçelim.

Rake

Rake Unix’in “make”ine benzer şekilde Ruby için yerel bir araçtır. Jim Weirich tarafından yazılmıştır. Yönetim komutlarını, görevlerini ve/veya bağımlılıkları işler. Ruby’nin standart sözdizimini kullanır. Temelde Bir klasör içerisindeki Rakefile dosyasını bulur ve onu çalıştırır.

Dipnot: Ruby ve rake macOS işletim sisteminde yerel olarak gelmektedir.

Rakefile

Rakefile ise ruby geliştiricilerinin tıpkı make/makefile gibi ardışık komutların çalıştırılmasını sağlayacak bir yapı geliştirmek isteyince ruby-make sonucunda Rakefile ortaya çıkmış. Rakefile içerisine ardışık komutlar ile çıktısı alınacak veya tekrar eden döngüleri otomatize eder. Bunu bir örnekle anlamaya çalışalım.

Bir text editörünü açalım. Bir klasör oluşturup içinede main.ruby ve Rakefile adında bir dosya oluşturalım. Ve aşağıdaki kodları içlerine ekleyelim.

Burada yaptıklarımızda bahsedelim biraz. main.ruby dosyamızda bize rastgele 20 farklı sayıyı, rastgele 20 farklı sayıdan çıkaran bir methodumuz var. Ve bunu raporlamak istiyorum. Bu workflow’da Rakefile devreye giriyor. Rakefile içinde görüldüğü gibi task1, 2, 3 diye devam eden methodlarımız var. Terminaldeki yazıları renklendirecek bir Color Extension’ımız var.

Not: Terminalden rake komutunu çalıştırdığınızda task default: [:method_name] satırını eklemezsek rake komutu bize çalıştırabileceği default methodu isteyecektir.

Şimdi çalıştırıp, sonuçlarını görelim.

İşte başardık 🚀. Temel hatlarıyla Rake ve Rakefile böyleydi. Beni ve yaptıklarımı aşağıdaki linklerden takip edebilirsiniz. Sonraki yazılarda görüşmek üzere 👋🏻

--

--