Сделать задачу граблей из самоцвета доступной везде? - PullRequest
32 голосов
/ 13 апреля 2009

Итак, я пишу небольшой драгоценный камень, и у меня есть каталог '/ tasks' с некоторыми конкретными рейковыми задачами. Как сделать эти задачи автоматически доступными везде, где требуется драгоценный камень? Например, я хотел бы запустить 'rake mygemrake: task' внутри моей корневой директории rails после того, как я установил гем.

Ответы [ 5 ]

23 голосов
/ 08 ноября 2010

Для приложений Rails3 вы, возможно, захотите создать Railtie для своего драгоценного камня.

Вы можете сделать это с помощью:

Библиотека / 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

Библиотека / your_gem.rb

module YourGem
  require "lib/your_gem/railtie" if defined?(Rails)
end

Хотя у меня была доля трудностей с требованием файла rake.task в моем railtie.rb. Я решил просто определить свою одну или две задачи в блоке rake_tasks.

2 голосов
/ 13 апреля 2009

Проверьте rdoctask в граблях для примера того, как определить задачу, предоставленную гемом. Задача определена в ruby ​​вместо языка сборки rake и может потребоваться примерно так:

require 'rake'             # the gem
require 'rake/rdoctask'    # the task
0 голосов
/ 31 января 2011

Вы можете написать обычные грабли для гема и загрузить их так:

require 'rake'
load 'path/to/your/tasks.rake'

Также взгляните на тор против рейка .

0 голосов
/ 28 июля 2010

Вы должны импортировать эти задачи в Rakefile приложения. Вот как это выглядит у меня (я использую bundler08 для управления моими драгоценными камнями):

%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 голосов
/ 15 апреля 2009

Вот для чего Ради . Datamapper и Merb успешно используют Sake.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...