ruby on rails 爱好者,你们好。
当你使用gem开发了某些产品时,你的机器必须首先安装这些gem,然后当你发布产品的时候,也需要给生产机安装这些gem,如果你忘了,客户会被吓到...
因此,大量的使用gem会导致应用的环境依赖过于强烈。
如果你的应用依赖于具体的rails版本,则你需要在你的项目根目录
~/code/demo>rake rails:freeze:edge TAG=rel_2-0-1
来锁定你要使用的rails版本
除此之外,如果用了其它的gem咋办?
这里,你需要安装个微型的gem, 这个gem可以使你方便的把各种gem freeze或者link进入你的rails工程.
~/code/demo>sudo gem install gemsonrails --no-ri --no-RDoc
然后;
~/code/demo>gemsonrails 这句会在该项目内安装gemsonrails plugin
然后这个gemsonrails plugin有3种用法
rake gems:freeze GEM=gem_to_freeze
rake gems:link GEM=gem_to_link
rake gems:unfreeze GEM = gem_to_unfreeze_or_unlink
执行后,gems会被放在vendor/gems并且可以自动加载这个路径到LOAD_PATH
如果目标gem没有init.rb,需要自己建立init.rb。
这一切都搞定之后,你可以放心的删除自己机器的gems了.
以后在用这些gem,到已有(曾经rake gems:freeze)的项目中去copy,就可以了
当你使用gem开发了某些产品时,你的机器必须首先安装这些gem,然后当你发布产品的时候,也需要给生产机安装这些gem,如果你忘了,客户会被吓到...
因此,大量的使用gem会导致应用的环境依赖过于强烈。
如果你的应用依赖于具体的rails版本,则你需要在你的项目根目录
~/code/demo>rake rails:freeze:edge TAG=rel_2-0-1
来锁定你要使用的rails版本
除此之外,如果用了其它的gem咋办?
这里,你需要安装个微型的gem, 这个gem可以使你方便的把各种gem freeze或者link进入你的rails工程.
~/code/demo>sudo gem install gemsonrails --no-ri --no-RDoc
然后;
~/code/demo>gemsonrails 这句会在该项目内安装gemsonrails plugin
然后这个gemsonrails plugin有3种用法
rake gems:freeze GEM=gem_to_freeze
rake gems:link GEM=gem_to_link
rake gems:unfreeze GEM = gem_to_unfreeze_or_unlink
执行后,gems会被放在vendor/gems并且可以自动加载这个路径到LOAD_PATH
如果目标gem没有init.rb,需要自己建立init.rb。
这一切都搞定之后,你可以放心的删除自己机器的gems了.
以后在用这些gem,到已有(曾经rake gems:freeze)的项目中去copy,就可以了
本文介绍了一种在Ruby on Rails项目中管理和冻结特定版本Gem的方法,通过使用gemsonrails插件,开发者可以轻松地将所需的Gem及其版本固化在项目中,减少部署时因Gem版本不一致带来的问题。
6578

被折叠的 条评论
为什么被折叠?



