在每次 rake 执行之前调用的通用方法
A General Method to be invoked before every rake execution
在我的 rails 项目(Rails 3.1
、Ruby 1.9.3
)中,定义了大约 40 个 rake 任务。要求是我应该能够在我们开始每个耙子时在数据库 table 中创建一个条目(耙子详细信息)。我需要的详细信息是 rake name
、arguments
、start time
和 end time
。为此,我不想用代码更新 rake 文件。是否可以在 rake 文件的范围之外执行此操作。
任何帮助将不胜感激!!
当您创建 rake 任务时,您可以传递一个父任务,它将 运行 在您的任务之前:
task my_task: :my_parent_task do
# ...
end
如果您的任务依赖于不止一个任务,您可以传递一组父任务
task my_task: [:my_prev_task, :my_another_prev_task] do
# ...
end
试试这个
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
将return一组信息,包括Rake名称及其参数。
下面附上参考文献。
pry(main)> a = Rake.application.top_level_tasks
=> ["import_data[client1,", "data.txt]"]
在我的 rails 项目(Rails 3.1
、Ruby 1.9.3
)中,定义了大约 40 个 rake 任务。要求是我应该能够在我们开始每个耙子时在数据库 table 中创建一个条目(耙子详细信息)。我需要的详细信息是 rake name
、arguments
、start time
和 end time
。为此,我不想用代码更新 rake 文件。是否可以在 rake 文件的范围之外执行此操作。
任何帮助将不胜感激!!
当您创建 rake 任务时,您可以传递一个父任务,它将 运行 在您的任务之前:
task my_task: :my_parent_task do
# ...
end
如果您的任务依赖于不止一个任务,您可以传递一组父任务
task my_task: [:my_prev_task, :my_another_prev_task] do
# ...
end
试试这个 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
将return一组信息,包括Rake名称及其参数。 下面附上参考文献。
pry(main)> a = Rake.application.top_level_tasks
=> ["import_data[client1,", "data.txt]"]