Rake 任务只调用一次就执行两次

2024-03-05

我编写了一个非常简单的 rake 任务来尝试找到这个问题的根源。

namespace :foo do
 task bar: :environment do
  puts 'RUNNING'
 end
end

在控制台执行时rake foo:bar输出是:

RUNNING
RUNNING

当我执行任何 rake 任务时会发生这种情况。以前有人遇到过这样的事情吗?

EDIT

上述 rake 任务是在该 .rake 文件中编写的全部内容。

这是当前正在使用的 Rakefile。

require File.expand_path('../config/application', __FILE__)

OurApp::Application.load_tasks

这也是运行 --trace 的输出。

** Invoke foo:bar (first_time)
** Invoke environment (first_time)
** Execute environment
Hostname is: ourhost
** Execute foo:bar
RUNNING
RUNNING

Rake 任务可能运行两次的原因有很多,在这种特定情况下,我认为这可能与 Rake 环境加载多次有关,正如链接的问题@kucaahbe https://stackoverflow.com/users/692969/kucaahbe建议。

我实际上是来这里寻求帮助的,但我的问题不同,我设法找到了答案。我认为这不会对这个特定问题有帮助,但我也将其留在这里。

确保您的 Rake 环境仅加载一次

@kucaahbe 链接的问题 https://stackoverflow.com/questions/35875661/rake-task-executing-twice-when-only-called-once#comment69648259_35875661,这表明如果您的环境正在加载和初始化 Rake 两次,就会发生这种情况。

在 Rake 任务运行的上下文中rake已被要求并初始化,因此请确保您的任务不包含以下行:

require 'rake'
...
Rake.application.init
Rake.application.load_rakefile

在这种特定情况下,任务似乎没有做任何类似的事情,所以我会检查其他任务或Rakefile强制 Rake 上下文加载两次的原因。

在重新定义之前清除预先存在的任务

刚刚遇到这个问题是由于 gem 创建了同名的 Rake 任务。

例如,如果您在 Rails 应用程序中声明以下任务:

namespace :assets do
  task :precompile do
    puts "Hello"
  end
end

and run rake assets:precompile:

...
I, [2017-07-31T11:25:09.498897 #9455]  INFO -- : Writing /home/pfac/...css.gz
Hello
Hello

但如果你使用Rake::Task#clear https://github.com/ruby/rake/blob/master/lib/rake/task.rb#L146:

namespace :assets do
  task(:precompile).clear
  task :precompile do
    puts "Hello"
  end
end

它禁用任何预先存在的行为并仅打印Hello.

我认为这个选项不能解决这个特定问题,除非@broc-西兰花 https://stackoverflow.com/users/4456032/broc-broccoli一直在定义其他foo:bar耙任务。

无论如何,希望这会有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rake 任务只调用一次就执行两次 的相关文章

随机推荐

  • 从 RxJS Observable 中过滤未定义的内容

    是否有特定的习惯用法或实用程序用于过滤undefined从 RxJS 可观察到的 这段代码具有我想要的行为 obs pipe filter x gt x undefined 一些替代方案是 obs pipe filter x gt x fo
  • 脚本的布尔参数

    在 Python 中 我了解如何将 int 和 str 参数添加到脚本中 parser argparse ArgumentParser description Mydescription parser add argument l type
  • Elasticsearch - 每个文档的匹配数

    我使用此查询来搜索字段中出现的短语 query match phrase content my test phrase 我需要计算每个文档的每个短语发生了多少次匹配 如果这可能的话 我考虑过聚合器 但认为它们不满足要求 因为它们会给我整个索
  • 如何在 Nextjs 中切换类并更改 CSS?

    我正在开发一个 Next js 项目 其中菜单打开时显示 p 切换菜单类 我设法做到了这一点 但是当我在 CSS 中添加该类时 它没有考虑这两个类 这是我的代码 成分 import useState from react import st
  • 将不完整的嵌套列表放入矩形 ndarray 中

    在Python 也使用numpy 中 我有一个列表列表的列表 每个列表的长度不同 header1 header2 item1 value1 header1 header2 header3 item2 value2 item3 value3
  • Haskell:最简单的 wai 示例的问题

    我是 Haskell 新手 我正在尝试让 wai 包正常工作 因为我对使用 Haskell 进行 Web 应用程序感兴趣 我尝试从第一个 最简单的例子开始wai http github com snoyberg wai主页 1 LANGUA
  • SQL Server 字符串执行带有输出参数的过程

    如何将输出参数与 String Exec 一起使用 考虑使用 标准 语法进行以下查询 DECLARE testString nvarchar 50 EXEC testProcedure param1 testString OUTPUT SE
  • MSVSP100D.dll 缺少在窗口 8 中与 opencv 2.4.1 配合使用 [已关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有以下场景 我正在尝试在 Wind
  • 使用 Cargo 时如何获得带有调试信息的发布版本?

    以下命令 cargo build 产生一个未优化 build with调试信息 相反 cargo build release 产生一个优化 build without调试信息 有没有一种方法可以产生优化 build with调试信息 我需要
  • Heroku 上的 Radiant 扩展?

    有人有过将 Radiant CMS 扩展实际应用到 Heroku 实例上的经验吗 我尝试删除子模块并将文件添加回来 但运气不太好 Heroku 目前不支持 git 子模块 然而 他们的 优秀的 文档表达了解决这个问题的方法 在这里查看 ht
  • 删除 .svn/pristine 的内容是否安全?

    我正在使用一个大型应用程序 我从我的存储库中签出了该应用程序的大部分内容 svn pristine文件夹 据我了解 原始文件夹包含我的workingCopy目录中的文件副本 话虽如此 删除这些文件可以吗 我真的需要它们吗 我已经备份了文件
  • 如何在 C# 中修改装箱值而不创建新对象?

    如何在 C 中修改装箱值而不创建新对象 例如 如果我有object o 5 我想改变盒装的值5 to 6 我怎样才能做到这一点 The o 6 将在堆上创建一个新对象并将对该对象的引用分配给o 还有其他方法可以更改盒装值吗 你可以自己 拳击
  • 从 ansible 运行 powershell 脚本并注册输出

    我正在尝试运行一个 Powershell 脚本 该脚本在远程 Windows PC 上使用 ansible 从 MSI 文件读取 ProductGUID powershell 在本地工作台上作为 ps1 文件运行 但从 ansible 中它
  • 请求超时并显示代码

    Error Domain NSURLErrorDomain Code 1001 The request timed out UserInfo NSUnderlyingError 0x608000244a70 Error Domain kCF
  • Spring Boot JSF 集成

    环境 雄猫8 春季启动 1 5 JSF 2 2 阿帕奇 MyFaces 春季MVC Code 我正在 Servlet 3 0 环境中集成 Spring Boot 和 JSF 2 2 配置类 JSFConfig java JSF 的配置 Co
  • 无法通用导入Python包

    假设我有以下目录结构 workspace init py ys manage init py manage py ys utils init py project dicts py 现在 假设我需要访问project dicts py in
  • 如何合并多个数组而不减慢编译器速度?

    添加这行代码会使我的编译时间从 10 秒缩短到 3 分钟 var resultsArray hashTagParticipantCodes prefixParticipantCodes asterixParticipantCodes att
  • C# 中引用类型和值类型有什么区别?

    几个月前有人问我这个问题 我无法详细解释 C 中引用类型和值类型有什么区别 我知道值类型是int bool float等 参考类型是delegate interface等等 或者这也是错误的吗 你能用专业的方式给我解释一下吗 你的例子有点奇
  • Windows 8 ARM(A.K.A.)吗? “Windows RT”有可供第三方开发人员使用的 Winapi (win32) 吗?

    Windows 8 for ARM 也称为 Windows RT 它是否具有与 Win32 API 等效的功能 I don t意味着它是否可以运行 Win32 x86 代码 但如果它具有 Win32 API可用的给第三方开发商 是的 ARM
  • Rake 任务只调用一次就执行两次

    我编写了一个非常简单的 rake 任务来尝试找到这个问题的根源 namespace foo do task bar environment do puts RUNNING end end 在控制台执行时rake foo bar输出是 RUN