作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在即将升级到 5.1 的 Rails 5.0.7 应用程序中,我们希望将所有(许多)弃用警告捕获到一个文件中。
Rspec 3.9 提供了一个非常清晰的示例,说明如何将弃用信息发送到文本文件: https://relishapp.com/rspec/rspec-core/v/3-9/docs/configuration/custom-deprecation-stream
但它不起作用:
# spec/spec_helper.rb
RSpec.configure do |config|
config.deprecation_stream = File.open('deprecations.txt', 'w')
end
当我运行一个有警告的规范没有上面的代码时,stdout 显示一堆实例:弃用警告:uniq 已弃用,将从 Rails 5.1 中删除(改为使用 distinct)(调用自...
如果我在上面添加 config.deprecation_stream 代码,并重新运行相同的规范:
如何配置 Rspec 的 deprecation_stream 使其按预期工作,例如,将所有弃用警告发送到文件?
最佳答案
要捕获 Rails 弃用消息,您可以使用 active_support.deprecation选项:
# config/environments/test.rb
config.active_support.deprecation = ->(message, callstack, deprecation_horizon, gem_name) {
# Do anything you want with the deprecation (append to a file, send to an external service, etc.)
puts "!!! [#{gem_name}] #{message}", callstack[0..2]
}
这将产生如下输出:
!!! [Rails] DEPRECATION WARNING: ActiveRecord::Base.allow_unsafe_raw_sql= is deprecated and will be removed in Rails 6.2 (called from old_method at /my_project/app/models/post.rb:36)
/my_project/app/models/post.rb:36:in `old_method'
/my_project/spec/models/post_spec.rb:36:in `block (3 levels) in <main>'
/my_gems/rspec-core-3.10.1/lib/rspec/core/memoized_helpers.rb:317:in `block (2 levels) in let'
RSpec deprecation_stream
对于 RSpec 的弃用很有用。从文档中,一个例子可以是:
class Foo
def bar
RSpec.deprecate "Foo#bar"
end
end
关于rspec-rails - 如何配置 Rspec deprecation_stream 以便将弃用警告记录到文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64313388/
在即将升级到 5.1 的 Rails 5.0.7 应用程序中,我们希望将所有(许多)弃用警告捕获到一个文件中。 Rspec 3.9 提供了一个非常清晰的示例,说明如何将弃用信息发送到文本文件: htt
我是一名优秀的程序员,十分优秀!