Web 控制台 gem 是否取代了 better_errors gem?

Does the web-console gem supersede the better_errors gem?

rails 4.2 web-console gem 是 better_errors gem 的完全替代品还是我需要查看每个的功能才能解决我更喜欢哪一个?

它们不是一回事.. README 上的 web-console even recommends better_errors:

Check out better_errors as a great alternative for any Rack application!

web-console 的优点是您可以启动控制台会话调用 debug 在您的文件或视图中的任何位置,非常类似于 binding.pry (来自 pry gem)总是这样。

better_errors 是一个改进的错误屏幕,恰好在侧边栏上有一个控制台会话(如果您使用 binding_of_caller gem。

IMO,您可以同时使用 gems.. 无需二选一。

TL;DR:better_errors 更好。

我不同意此处接受的答案。主要是因为建议的差异不是真实的。

在您想要的任何地方触发 better_errors 控制台一直都是微不足道的,就像 raise 'bang' 一样简单。你在你想要的地方抛出一个异常,然后在那个上下文中启动一个控制台。您可以在任何文件或视图中引发异常,并在该上下文中获得一个控制台。

我不确定接受的答案是否暗示 web_console 不会在异常时被触发,这就是他建议同时使用这两个 gem 的原因,但无论如何现在 web_console 也会触发异常。

因此,如果没有功能差异,那么,首先,运行 两个 gem 都没有意义。事实上,我预计会发生冲突,尽管可能只是归结为哪个先捕获异常。

其次,真正的区别在于 better_errors 更好。看两人的截图。 web_console 只是标准的 rails 异常页面,下面有一个裸露的黑色终端。如果您想知道本地或实例变量,您必须使用控制台检查它们。 better_errors 有(至少在我看来)一个更漂亮的样式页面,但更重要的是它显示了调用堆栈(带有紧凑或完整的列表),它为您提供了在控制台上方触发它的代码列表和然后在控制台下方列出 request/local/instance 变量,这些变量通常会解释问题所在,而无需在控制台本身执行任何操作。这是一堆额外的、有用的功能,web_console 没有任何遗漏(除非极简主义是你的包)。

我不知道为什么 37Signals/Basecamp 或 Rails 团队决定合并 web_console 而不是 better_errors。也许有 design-philosophy/architectural 个原因,他们希望保持距离,也许他们认为它的功能太全面而无法自动包含在内。有些人似乎认为 37Signals 非常喜欢构建 in-house 或可以使用 in-house 的东西,也许这是唯一的原因。

自 Thiago 发布以来发生的其他变化是,正如 marklar 所说,您现在从 web_console 开始 console 而不是 debug 并且 web_console 不再建议better_errors 作为其 GH 自述文件中的替代方案。