【问题标题】:What is the best way to keep javascript libraries up-to-date in rails?使 javascript 库在 rails 中保持最新的最佳方法是什么?
【发布时间】:2012-02-17 19:01:56
【问题描述】:

我目前正在开发一个 Rails 应用程序,它大量使用了一些 javascript 库,包括 jquery、backbone.js 和 d3.js。对于 jquery,有 jquery-rails gem,对于主干,我们有 backbone-rails。但是对于 d3.js,没有这样的东西。

我将 javascript 从 d3.js 复制到我的存储库,但这对我来说有点不干净,因为当 d3 更新时,我必须再次复制它(我必须注意,d3 已更新!)。我考虑过 git 子模块,但每次查看存储库时都必须手动拉取它们。是否有办法让捆绑程序检查 d3 存储库的特定版本?

您如何处理在 Rails 中更新第三方 javascript 库?有首选方式吗?

【问题讨论】:

  • 将它们放在 GIT 之外并手动完成。

标签: javascript ruby-on-rails git bundler


【解决方案1】:

不知道为什么你因此而被否决...

但我将不得不同意手动操作的评论。我不会将它从您的存储库中删除 - 不需要这样做;您想保留当前版本 - 但我不建议让它自动更新。

这是为了稳定。如果您像您说的那样“大量使用”JS,那么最新版本的库中的一个怪癖 - 甚至是您解决的错误的错误修复 - 可能会对您的代码造成严重破坏。当 jQuery 调整它在两个版本之间处理 attr()prop() 的方式时,我们遇到了类似的情况。

所以如果你总是手动更新你的库:

  • 您始终知道它们何时发生更改,并且您必须在公开更改之前进行一些彻底的测试。
  • 如果您愿意,您可以继续使用旧版本的库 - 以提高性能,或者让您有时间解决最新的怪癖或其他问题。

希望有帮助!

【讨论】:

  • 同意@Xavier Holt。虽然它没有回答您的问题,但我认为您收到了合理的建议。 有一次我们没有测试就更新了jQuery,发现坏事发生了。
  • +1 用于更新依赖项后的一整轮 UI 测试。升级 ExtJS 破坏了我们的 UI。
【解决方案2】:

如果没有,为什么不创建一个 d3-rails gem?现在的约定似乎是将这些 javascript 库放在它们自己的 gem 中,其中 jquery-rails 现在包含在 Rails 3.1 中。现在有更多的工作,但它可能会为你带来回报。您将为社区提供帮助,这将使您的应用内的更新变得容易。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 2013-12-02
  • 2012-07-18
  • 2015-04-28
相关资源
最近更新 更多