从宝石到处可以进行rake任务吗?

sni*_*tko 33 ruby rake

所以我正在写一个小宝石,我有一个'/ tasks'目录,里面有一些特定的rake任务.如何在需要宝石的地方自动提供这些任务?例如,我希望在安装gem之后可以在rails root目录中运行'rake mygemrake:task'.

kel*_*unn 23

对于Rails3应用程序,您可能希望研究为您的gem制作Railtie.

您可以这样做:

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
Run Code Online (Sandbox Code Playgroud)

LIB/your_gem.rb

module YourGem
  require "lib/your_gem/railtie" if defined?(Rails)
end
Run Code Online (Sandbox Code Playgroud)

虽然,我有一些困难,要求rake.task我的文件railtie.rb.我选择在rake_tasks块中定义我的一个或两个任务.


dst*_*rkr 2

查看rake 中的rdoctask,了解如何定义 gem 提供的任务的示例。该任务是用 ruby​​ 而不是 rake 构建语言定义的,并且可以像这样要求:

require 'rake'             # the gem
require 'rake/rdoctask'    # the task
Run Code Online (Sandbox Code Playgroud)