Подтвердить что ты не робот

Сделать рейк-задачу из драгоценного камня, доступного повсюду?

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

4b9b3361

Ответ 1

Для приложений 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

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

require 'rake'             # the gem
require 'rake/rdoctask'    # the task

Ответ 3

Вы не можете этого сделать. По крайней мере, не с Рейком. Но это то, что для Sake. Datamapper и Merb с большим успехом используют Sake.

Ответ 4

Вам нужно импортировать эти задачи в 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

Ответ 5

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

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

Кроме того, посмотрите thor vs. rake.