如何保存整个Rails应用程序包,包括使用的gem?

时间:2013-04-26 02:15:12

标签: ruby-on-rails ruby-on-rails-3 gem

我正在使用很多宝石。他们对依赖关系非常敏感 现在,宝石的当前组合是完美的。我想保存整个App,并在下一个项目时重新使用它。

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

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

bundle install --path=vendor/bundle

在此之后,我的应用程序被搞砸了:( jQuery在recompile

之后不再工作了

所以我确实需要用旧版本替换整个App文件夹,这是/usr/local/bin/ruby /usr/local/lib/ruby/gems/1.9.1

中的宝石

现在,jQueryrecompile之后正常工作:)

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

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

有人可以分享这个想法吗?

1 个答案:

答案 0 :(得分:10)

回答你的问题

Bundler的bundle package --all命令将锁定并将所有gem文件缓存到./vendor/cache,然后您可以运行bundle install --local,以便将来不会检查rubygems.org。

对您的问题的评论

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

  1. 负担过重的应用程序
    • 每个项目是否真的需要所有相同的依赖项?
    • 如果没有,那么每个安装都会出现不必要的依赖关系。
  2. 脆弱的依赖
    • 你提到你的依赖关系对彼此非常敏感,这会引发警报。
    • 我不完全明白你的意思,但听起来你应该考虑用更稳定的接口来寻找依赖。
    • 查看ruby-toolbox.com并密切注意“已发布”日期。
  3. 过时的依赖项
    • 锁定版本意味着您的新应用程序将无法受益于维护者的更新。
    • (示例)如果您将rails依赖关系锁定到3.2.8并继续使用它,那么您可以打开自己(以及客户)的几个主要安全漏洞。
    • (可能的解决方法)查看pessimistic version constraints以允许您的应用程序接收不间断的修复程序。
  4. 祝你好运。