5

我用了很多宝石。他们对彼此的依赖关系非常敏感。
现在,宝石的当前组合非常完美。我想保存整个应用程序,并在我进行下一个项目时重新使用它。

如您所知,gem 不会在未来存在,rubygem.org
所以我想保存正在使用的 App 和 gems 的整个包。然后我不需要关心设置宝石,除非我需要新的宝石。我需要关心的只是在下一个项目中编码。

有人告诉我使用此命令并保存整个 App 文件夹

bundle install --path=vendor/bundle

在此之后,我的应用程序搞砸了 :( jQuery 之后不再工作了recompile

所以我确实需要用旧的 App 文件夹替换整个 App 文件夹,它正在引用 gem/usr/local/bin/ruby /usr/local/lib/ruby/gems/1.9.1

现在,jQuery之后工作正常recompile:)

对于这种情况,如何保存用于它的 App 和 gems 的整个包?

我想做的是,我只想设置 Ruby 的正确版本和 MySQL。
然后我想把这个包放进去开始编码,而不是部署关于gems的环境!!

任何人都可以分享这方面的想法吗?

4

1 回答 1

12

回答你的问题

Bundler 的bundle package --all命令会将所有 gem 文件锁定并缓存到./vendor/cache中,您可以运行它,bundle install --local这样它以后就不会检查 ruby​​gems.org。

对您的问题的评论

这个问题让我感到畏缩,因为虽然我理解拥有一个你知道有效的“基本图像”的兴趣,但听起来一些问题会蔓延到其他项目。

  1. 负担过重的应用程序
    • 每个项目真的需要所有相同的依赖项吗?
    • 如果没有,那么您将使用不需要的依赖项使每个安装膨胀。
  2. 脆弱的依赖
    • 您提到您的依赖关系彼此非常敏感,这引发了警报。
    • 我不完全理解你的意思,但听起来你应该考虑找到具有更稳定接口的依赖项。
    • 查看 ruby​​-toolbox.com 并密切关注“发布”日期。
  3. 过时的依赖项
    • 锁定版本意味着您的新应用程序将无法从维护者的更新中受益。
    • (示例)如果您将 Rails 依赖项锁定到 3.2.8 并继续使用它,您(和客户)就会面临几个主要的安全漏洞。
    • (可能的修复)查看悲观的版本约束以允许您的应用程序接收非破坏性修复。

祝你好运。

于 2013-04-26T03:01:47.580 回答