10

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

4

2 回答 2

5

它们不是一回事。网络控制台甚至在它的自述文件中推荐了 better_errors :

查看 better_errors 作为任何 Rack 应用程序的绝佳替代品!

web-console的优点是您可以在文件或视图中的任何位置启动控制台会话debug,就像binding.pry(来自pry gem)一直做的那样。

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

IMO,您可以使用两种宝石.. 无需选择一种或另一种。

于 2015-02-26T02:18:55.360 回答
4

TL;DR:better_errors 更好。

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

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

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

因此,鉴于没有功能差异,首先,运行两个 gem 没有意义。事实上,我预计会发生冲突,尽管也许它只是归结为首先捕获异常的人。

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

我不知道为什么 37Signals/Basecamp 或 Rails 团队决定合并 web_console 而不是 better_errors。也许有设计哲学/架构方面的原因,他们想要保持一定的距离,也许他们认为它功能太全而无法自动包含在内。有些人似乎认为 37Signals 更喜欢内部制造或可以内部使用的东西,也许这就是唯一的原因。

自 Thiago 发布以来发生的其他变化是,正如 Marklar 所说,您现在开始 web_console 时使用consolenotdebug并且 web_console 不再在其 GH README 中建议使用 better_errors 作为替代方案。

于 2019-06-20T22:12:26.610 回答