【问题标题】:How can I disable the trace in rake tasks?如何禁用 rake 任务中的跟踪?
【发布时间】:2018-11-20 13:38:18
【问题描述】:

我不确定这是什么时候开始的,但是每当我在 Rails 中运行 rake 任务时:

$ rake routes

在打印路线之前,它会显示跟踪:

** Invoke routes (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute routes

我认为这些调用/执行语句只有在我将 --trace 添加到我的命令时才会出现,但它发生在我的所有 rake 任务(db create/migrate、Capistrano 等)中

有没有办法禁用跟踪功能? Rails 中是否有可能启用我不知道的跟踪的配置文件?

【问题讨论】:

    标签: ruby-on-rails rake


    【解决方案1】:

    问题已被追踪到实现 Capistrano 插件的自定义 gem。 gem 允许与 Capistrano 一起使用不同的版本控制系统,而不是它们提供的版本控制系统(Git、SVN 等)。

    最终的问题是capistrano/lib/capistrano/all.rb 有这行:

    Rake.application.options.trace = true
    

    该文件是通过 Capistrano 插件加载的,但在 Capfile 中使用之前不需要默认文件。当我们使用新插件创建自定义 gem 时,我们只需将新 gem 添加到应用程序的 Gemfile 中,默认情况下会加载文件。所以我们的插件文件看起来像这样:

    # custom_gem/lib/capistrano/scm/custom_vc.rb
    require 'capistrano/scm/plugin'
    class Capistrano::SCM::CustomVC < Capistarno::SCM::Plugin
      # ... Mimic the capistrano/lib/capistrano/scm/git.rb in the Capistrano gem.
    end
    

    需要capistrano/scm/plugin 的第一行最终要求capistrano-lib/capistrano/all.rb 为所有Rake 任务设置跟踪。

    解决方案是简单地将 require: false 添加到自定义 gem 的 Gemfile。

    # Gemfile
    group :development do
      gem 'capistrano_custom_vc', require: false
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-16
      • 2010-10-09
      • 2012-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多