【问题标题】:Run a rake task upon saving a file保存文件时运行 rake 任务
【发布时间】:2016-09-19 04:17:11
【问题描述】:

我的项目中有一些文件在每次更新时都需要进行后处理。

我可以将这些进程提取到一个 rake 任务中。我的问题是:

如何在每次保存特定文件时自动运行 rake 任务?

【问题讨论】:

  • 为什么 rake 任务,使用一些 after_save 回调来处理你想要执行的处理
  • @Bijendra 我需要运行一些终端命令。我认为after_save 是不可能的。
  • 如果在保存时调用Rake::Task['task_name'].invoke 之类的任务会怎样
  • @TonyVincent 我不知道调用语句是什么意思。你是如何实现的?
  • @sscirrus 好的,如果有帮助,请检查 ans

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


【解决方案1】:

我认为你可以使用invoke 方法来做到这一点

if @file.save
  .
  .
  .
  Rake::Task['task_name'].invoke
end

查看SO question了解更多信息

【讨论】:

    【解决方案2】:

    您可以在模型文件中执行此操作。

      after_save :update_rake_operations
    
      def update_rake_operations
        task = "update_status"
        Rake::Task[task].invoke
      end
    

    您应该在项目文件夹下的 Rakefile 中有以下代码。这应该默认存在。

      require File.expand_path('../config/application', __FILE__)
      require 'rake'
    
      ProjectFolder::Application.load_tasks
    

    【讨论】:

    • 这适用于在数据库中保存记录,而不是文件。
    猜你喜欢
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 2010-10-09
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多