Pertanyaan Buat garu tugas dari permata tersedia di mana-mana?


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.


32
2018-04-12 23:27


asal


Jawaban:


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.


23
2017-11-08 09:48



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

2
2018-04-13 13:59



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

0
2017-07-28 16:34



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.


0
2018-01-30 22:13



S apa Demi adalah untuk. Datamapper dan Merb telah menggunakan Sake dengan sukses.


0
2018-04-15 13:43