从引擎运行rake任务

时间:2016-03-10 16:51:38

标签: ruby-on-rails

我的引擎位于

apps/my_engine

如何运行当前位于apps/my_engine/lib/tasks

的rake任务

当我尝试运行它时,我得到一个“不知道如何构建任务”错误。

这就是我的Rakefile在引擎中的样子:

begin
  require 'bundler/setup'
rescue LoadError
  puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
end

require 'rdoc/task'

RDoc::Task.new(:rdoc) do |rdoc|
  rdoc.rdoc_dir = 'rdoc'
  rdoc.title    = 'GoalSaver'
  rdoc.options << '--line-numbers'
  rdoc.rdoc_files.include('README.rdoc')
  rdoc.rdoc_files.include('lib/**/*.rb')
end

APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
load 'rails/tasks/engine.rake'

Bundler::GemHelper.install_tasks

require 'rake/testtask'

Rake::TestTask.new(:test) do |t|
  t.libs << 'lib'
  t.libs << 'test'
  t.pattern = 'test/**/*_test.rb'
  t.verbose = false
end

task default: :test

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您正尝试使用引擎的rake任务扩展主应用程序。是的,有可能。只需在apps/my_engine/lib/tasks中定义您的任务,只留下引擎的Rakefile。前者未加载到主应用程序的上下文中。

一个例子:

# apps/my_engine/lib/tasks/admin.rb
namespace :'admin-ui' do
  desc 'reload it!'
  task :reload do
    warn 'reloading!'
  end
end


# apps/my_engine/Rakefile
require "bundler/gem_tasks"