【问题标题】:Rake task selectivly ignoring new code选择性地忽略新代码的 Rake 任务
【发布时间】:2018-07-27 20:46:52
【问题描述】:

在一个 rake 任务中,我正在编写一些 puts 语句来显示更改,而其他语句则没有。比如改变

puts model+" | "+id

进入

puts model+" * "+id

脚本的输出不会改变。不过有些地方变了

puts "Connecting to "+site

进入

puts "Connecting to ----"+site

显示所做的更改。

在对行的任何更改都不会更改输出的地方,在任务运行时不会显示之前或之后添加新的 puts 语句。注释掉执行实际工作的不变 puts 语句周围的代码行会导致脚本不执行这些行,就像它应该执行的那样,但是在那里更改或添加 puts 语句不会改变脚本的输出。

从 lib/tasks 文件夹中删除所有其他任务和 emacs 备份文件没有帮助。之前我曾被一项任务的备份副本所困扰,该副本具有相同的命名空间和任务名称,而不是我正在处理的任务。

这是在 fx-8350 上的 OpenBSD 6.3-stable 上使用 Ruby 2.4.3 运行的。我会发布整个脚本,但我工作的公司不允许。

【问题讨论】:

    标签: ruby debugging rake rake-task openbsd


    【解决方案1】:

    怎么样

    puts "#{model} +/*/whatever #{site}"

    听起来像文件系统更新问题(重新启动)应该无关紧要,但将变量像这样放在字符串中而不是 + "" 它们可能是更好的形式。

    【讨论】:

    • 我尝试按照您的建议将其更改为单个字符串,但它仍然显示输出,就好像没有任何更改一样。我已经尝试过重新启动一次,但我认为这不是文件系统问题,因为我可以查看其他程序中的文件并且可以看到更改,并且脚本的一些更改确实会在更改时显示出来。所有任务都在一个文件中。我知道这些函数正在被调用,因为数据的工作正在完成并删除任何这些行以导致它们无法运行。但是,在 puts 语句之前添加“raise model.inspect”或“exit”并不能阻止它。
    • 我也是,在我从事编码工作的 18 年中,我从未遇到过如此奇怪的事情。感谢您的帮助!
    • 我见过奇怪的文件系统的东西。我还更新了方法,并没有让它们更新,只是为了发现它们后来被重新定义。也许添加 byebug 和断点以确保您确实在执行您认为的操作。和/或没有发生一些疯狂的事情——比如将 puts 修改为将所有 '*' 替换为 '|'。
    猜你喜欢
    • 2011-05-12
    • 1970-01-01
    • 2015-10-11
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 2011-05-06
    相关资源
    最近更新 更多