Jadi saya menulis permata kecil dan saya punya dir / / tugas 'di dalamnya dengan beberapa tugas penggaruk tertentu. Bagaimana cara membuat tugas-tugas itu tersedia secara otomatis di mana saja, di mana permata itu diperlukan? Sebagai contoh, saya berharap saya bisa menjalankan 'rake mygemrake: task' di dalam dir root rel saya setelah saya memasang gem.
Untuk aplikasi Rails3, Anda mungkin ingin melihat cara membuat Railtie untuk permata Anda.
Anda dapat melakukannya dengan:
lib / your_gem / railtie.rb
require 'your_gem'
require 'rails'
module YourGem
class Railtie < Rails::Railtie
rake_tasks do
require 'path/to/rake.task'
end
end
end
lib / your_gem.rb
module YourGem
require "lib/your_gem/railtie" if defined?(Rails)
end
Padahal, saya mengalami kesulitan dalam menuntut rake.task
file di saya railtie.rb
. Saya memilih untuk hanya mendefinisikan measley saya satu atau dua tugas dalam rake_tasks
blok.
Lihat rdoctask dalam penggaruk untuk contoh bagaimana mendefinisikan tugas yang disediakan oleh permata. Tugas didefinisikan dalam ruby, bukan bahasa membangun rake dan dapat diminta seperti ini:
require 'rake' # the gem
require 'rake/rdoctask' # the task
Anda harus mengimpor tugas-tugas tersebut dalam Rakefile aplikasi. Ini adalah tampilannya di tambang (saya menggunakan bundler08 untuk mengelola permata saya):
%w(gem1 gem2 gem3).each do |g|
Dir[File.dirname(__FILE__) + "/vendor/bundler_gems/**/#{g}*/tasks/*.rake"].each do |f|
import f
end
end
Anda dapat menulis tugas penggaruk normal untuk permata dan memuatnya seperti ini:
require 'rake'
load 'path/to/your/tasks.rake'
Juga, lihatlah thor vs. rake.
S apa Demi adalah untuk. Datamapper dan Merb telah menggunakan Sake dengan sukses.