gpt4 book ai didi

ruby-on-rails - 什么取代了 Rails 5 中的静音(捕获)内核方法?

转载 作者:行者123 更新时间:2023-12-03 16:02:52 24 4
gpt4 key购买 nike

我在我的规范 ( http://apidock.com/rails/Kernel/capture ) 上使用了静音方法。

例如,我想避免在此块上显示:

silence(:stdout) do
ActiveRecord::Tasks::DatabaseTasks.purge_current
ActiveRecord::Tasks::DatabaseTasks.load_schema_current
end

它运行良好,但自 Rails 4 以来已被标记为已弃用。
由于它将在下一个版本中删除,我搜索了替代品但没有找到。

是否存在线程安全的东西?
有替代品吗?

最佳答案

没有什么可以取代它。请注意,这不是线程安全的,这是我现在在 spec_helper.rb 中的内容:

# Silence +STDOUT+ temporarily.
#
# &block:: Block of code to call while +STDOUT+ is disabled.
#
def spec_helper_silence_stdout( &block )
spec_helper_silence_stream( $stdout, &block )
end

# Back-end to #spec_helper_silence_stdout; silences arbitrary streams.
#
# +stream+:: The output stream to silence, e.g. <tt>$stdout</tt>
# &block:: Block of code to call while output stream is disabled.
#
def spec_helper_silence_stream( stream, &block )
begin
old_stream = stream.dup
stream.reopen( File::NULL )
stream.sync = true

yield

ensure
stream.reopen( old_stream )
old_stream.close

end
end

它不优雅但有效。

关于ruby-on-rails - 什么取代了 Rails 5 中的静音(捕获)内核方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33350725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com