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

cat*_*cat 5 gem ruby-on-rails ruby-on-rails-3

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

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

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

bundle install --path=vendor/bundle
Run Code Online (Sandbox Code Playgroud)

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

所以我确实需要用旧版本替换整个App文件夹,这对于创建了宝石 /usr/local/bin/ruby /usr/local/lib/ruby/gems/1.9.1

现在,jQuery工作正常recompile:)

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

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

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

jst*_*tim 11

回答你的问题

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

评论你的问题

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

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

祝你好运.