每次执行rake之前要调用的一般方法

时间:2016-07-20 06:53:34

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 rake

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

非常感谢任何帮助!!

3 个答案:

答案 0 :(得分:0)

试试这个 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!"

答案 1 :(得分:0)

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

Rake.application.top_level_tasks

将返回一系列信息,包括 Rake名称及其参数。 参考文献如下。

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

答案 2 :(得分:-1)

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

task my_task: :my_parent_task do
  # ...
end

如果您的任务取决于多个任务,则可以传递一组父任务

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