Rake: logging any task executing

后端 未结 1 1235
长发绾君心
长发绾君心 2021-02-08 00:17

how can I create database logging for every rake task without changing source of tasks ? I need to store datetime , task name , parameters . Is there some kind of observer etc

1条回答
  •  时光取名叫无心
    2021-02-08 00:22

    You can override Rake::Task#invoke method in application.rb:

    #application.rb
    module Rake
      class Task
        alias_method :origin_invoke, :invoke if method_defined?(:invoke)
        def invoke(*args)
          logger = Logger.new('rake_tasks_log.log')
          logger.info "#{Time.now} -- #{name} -- #{args.inspect}"
          origin_invoke(*args)
        end
      end
    end
    

    output for rake test:

    2011-05-27 16:57:42 +0300 -- test -- []
    2011-05-27 16:57:42 +0300 -- test:units -- []
    2011-05-27 16:57:51 +0300 -- db:test:load -- []
    2011-05-27 16:57:51 +0300 -- db:schema:load -- []
    2011-05-27 16:58:19 +0300 -- test:functionals -- []
    2011-05-27 16:58:49 +0300 -- test:integration -- []
    

    0 讨论(0)
提交回复
热议问题