در دنیای توسعه ی نرم افزار استفاده از سیستمهای مدیریت تسکهای تکراری روشی برای اتوماتیک کردن کارهای تکراری و پیچیده و خستهکننده است است. مثال کلاسیک آن گنو make است که در بیشتر پروژههایی که از زبانهای c و ++c و بیشتر کتابخانهها و ابزارهای لینوکسی دیدهاید از آن استفاده شده است.
اگر توسعه دهنده ی ruby هستید، rake یکی از بهترین ابزارها برای اتوماتیک کردن عملیاتها و دستورات است که برای توسعه دهندگان این زبان ساخته شده است و به وفور در پروژههای این زبان مانند rails و .. استفاده شده است.
برای استفاده از rake ابتدا جم مربوط به آن را نصب کنید :
gem install rake
برای انجام هرکار بصورت خودکار، یک تسک برای آن تعریف میکنیم. ساختار کلی تسک ها در rake بصورت زیر است :
task :taskname do
jobs
end
که به جای taskname یک نام برای تسک مورد نظر گذاشته و بجای jobs عملیاتهایی که تسک مورد نظر ما باید انجام دهد را مینویسیم. ساختار ریک همانند روبی است و از دستورات روبی میتوان در لابهلای تسکها استفاده نمود.
برای مثال تسکی به نام sayhi که عبارت `Hello, rake` را روی صفحه نمایش میدهد را بصورت زیر مینویسیم :
task :sayhi do
puts "Hello, rake"
end
کدهای نوشته شده در rake را در فایلی بنام Rakefile در پروژه ذخیره میکنند. کد بالا را در یک دایرکتوری ذخیره کنید و پس از ورود به ان دایرکتوری، برای اجرای این تسک دستور rake sayhi را بزنید. اگر مراحل را درست انجام داده باشید باید عبارت `Hello, rake` روی ترمینال شما نمایش داده شود.
یک مثال کاربردی تر اجرای یک فایل روبی است. دستورات خط فرمان را میتوان با متد درونی rake بنام sh فراخوانی،اجرا و استفاده کرد.
task :run do
sh('echo "puts \"hi\"" > hi.rb')
sh("ruby","hi.rb")
do
کد بالا اگر درست نوشته و اجرا شود مقدار `puts "hi"` را در فایلی به نام `hi.rb` میریزد و سپس دستور `ruby hi.rb` این فایل را اجرا میکند.
میتوان از تسکها را وابسته به تسکهای دیگر کرد، یعنی اجرای تسک منوط به اجرای چند تسک مشخص شده ی دیگر باشد. در مورد دیپندینسی ها بخوانید...
task :createfile do
sh('echo "puts \"hi\"" > hi.rb')
end
task :run => [:createfile] do
sh("ruby","hi.rb")
end
به ساختار تسک run در کد بالا دقت کنید. این ساختار بیان میکند که با اجرای run ابتدا createfile بصورت خودکار اجرا شده و سپس این تسک اجرا میشود.
تسک پیشفرض
برای اجرای تسک های نوشته شده از دستور `rake taskname` استفاده میکنیم. اما یک حالت ویژه و پرکاربرد هم داریم که تنها با دستور `rake` اجرا میشود، تسک default. مانند مثال زیر :task :default do
puts "Hellllllooooooooo:)"
end
که با اجرای دستور rake این تسک اجرا میشود.
فضاهای نام
ریک از فضاهای نام پشتیبانی میکند. ساختار آن بصورت زیر است :namespace :jobs do
task :hi do
puts "hi"
end
end
که برای اجرای تسک hi از فضاینام jobs از دستور `rake jobs:hi` استفاده میکنیم.
توصیف تسک ها
میتوانید توضیحات کوتاهی درمورد هرتسک بنویسید که در هنگام اجرای دستورات نمایش داده شوند. برای اینکار قبل از هر تسک توضیحات را در متد desc مینویسیم و موقع اجرای دستور rake سوییچ `-T` را به آن اضافه میکنیم. به عنوان نمونه :desc 'create hi.rb'
task :createfile do
sh('echo "puts \"hi\"" > hi.rb')
end
desc 'run hi.rb'
task :run => [:createfile] do
sh("ruby","hi.rb")
end
که برای نمایش توضیحات دستور rake را بصورت زیر استفاده میکنیم :rake run -T
که خروجی در صفحه ی نمایش بصورت زیر است :rake createfile # create hi.rb
rake run # run hi.rb