ruby on rails-在每次rake执行之前调用的通用方法



在我的rails项目(Rails 3.1Ruby 1.9.3)中,定义了大约40个rake任务。要求是,当我们启动每个rake时,我应该能够在数据库表中创建一个条目(rake详细信息)。我需要的细节是rake nameargumentsstart timeend time。出于这个目的,我不想用代码更新rake文件。是否可以在rake文件的范围之外执行此操作。

任何帮助都将不胜感激!!

试试这个https://github.com/guillermo/rake-hooks

For example in your Rakefile
require 'rake/hooks'
task :say_hello do
  puts "Good Morning !"
end
before :say_hello do
  puts "Hi !"
end
#For multiple tasks
namespace :greetings do 
  task :hola    do puts "Hola!" end ;
  task :bonjour do puts "Bonjour!" end ;
  task :gday    do puts "G'day!" end ;  
end 
before "greetings:hola", "greetings:bonjour", "greetings:gday" do
  puts "Hello!"
end
rake greetings:hola # => "Hello! Hola!"

这似乎有点尴尬,但它可能会帮助其他人。

Rake.application.top_level_tasks

将返回一组信息,包括Rake-name及其参数。下文附有参考资料。

pry(main)> a = Rake.application.top_level_tasks
=> ["import_data[client1,", "data.txt]"]

创建rake任务时,可以传递一个将在任务之前运行的父任务:

task my_task: :my_parent_task do
  # ...
end

如果你的任务依赖于一个以上的任务,你可以通过一组父任务

task my_task: [:my_prev_task, :my_another_prev_task] do
  # ...
end

最新更新