据我所知,rails:freeze:gems和rake gems:unpack都把宝石放到了/vendor上。rails:freeze:gems把它们放到/vendor/rails,gems:unpack把它们放到/vendor/gems。然而,对我来说,这一点似乎是相同的。在这两种情况下,目标都是在开发过程中修复gem及其版本。还有其他区别吗?在我看来,它现在是一个复制品..
发布于 2010-01-28 06:03:28
据我所知,gem:unpack会将你的应用所需的任何第三方gem解包到供应商/gem中。
冻结: gems只会冻结那些与rails本身有关的gem,因此它会将你的应用程序冻结到特定版本的rails。这样就出现了不同的/供应商/rails目录。
更多的评论:
在config/environment.rb ment.rb中有这一行
# Specifies gem version of Rails to use when vendor/rails is not present RAILS_GEM_VERSION = '2.3.2' unless defined? RAILS_GEM_VERSION
因此,默认情况下,rails将检查供应商/rails目录是否存在,如果存在,则使用这些gem的版本。如果没有,您必须设置它将使用哪个版本的rails,rails将尝试从您的本地系统中获取gem。
因此,我看到的这两个命令之间的唯一区别是,rails:freeze:gems只将rails文件转储到供应商/ rails中,这正是rails希望它们位于的位置。
你想使用gem:unpack的原因是丢弃你的应用程序所依赖的第三方gem,这样无论你的应用程序在哪里运行,这些gem都不需要在本地安装。
您可以将rails:freeze:gems看作一种快捷方式,它只将rails gem的供应商放入rails期望的目录(/ gem:unpack /rails),这样您就不必手动执行此操作。但在幕后,我预计rails:freeze:gems可能会使用gem:unpack
https://stackoverflow.com/questions/2150451
复制相似问题