我不确定何时启动,但是每当我在Rails中运行rake任务时:
$ rake routes
在打印路线之前,它会显示跟踪:
** Invoke routes (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute routes
我认为只有在我的命令中添加--trace
时才会出现那些invoke / execute语句,但这在我所有的rake任务(db create / migrate,Capistrano等)中都会发生
是否可以禁用跟踪功能? Rails中是否有一个配置文件可能启用了我不知道的跟踪?
答案 0 :(得分:0)
该问题已被追溯到实现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
的最上一行最终要求为所有Rake任务启用跟踪的capistrano-lib/capistrano/all.rb
。
解决方案是将require: false
简单地添加到自定义gem的Gemfile中。
# Gemfile
group :development do
gem 'capistrano_custom_vc', require: false
end