我开始使用 rvm 的 gemset 功能,于是给 project 创建了一个 gemset 叫「imtx-on-rails」,然后尝试用 gemset copy 的功能把@global的复制给@imtx-on-rails:
然而却失败了,log 显示 gem_pristine: command not found
不知道怎么装这个 pristine,好像没有这个 gem。
大家的 gemset 是怎么装的,难道新建一个 gemset 都完全从 0 开始装吗?
PS: rvm 的版本是 1.10.0
@tualatrix,不确定是否一定能可以,试试吧:
vim $rvm_path/scripts/gemsets
搜索unset GEM_PATH
,看是否注释掉了,若没有则把这行注释掉,之后:
rvm gemset copy 1.9.3@global 1.9.3@imtx-on-rails
copy 时加上 ruby 的版本
@tualatrix 我已经一年多没用自已创建的 gemset 了。一律 bundle install --binstubs --path vender 将 project 依赖和可执行文件独立在开发目录下。
@tualatrix 如果真想复制 gemset,其实每个 gemset 都只是~/.rvm/gems/下面的文件夹而已,所以直接复制文件夹或者 ln -s 即可,注意文件夹取名
#5 楼 @tualatrix Capistrano 默认部署是放在网站的 share 目录下的 bundler 目录中的,原理跟开发时一样。同时它会去掉 development 和 test 相关的 gem。部署时不需要 binstubs,因为 app server 会自动用 bundle exec。
另外,总体来说直接复制是安全的。但在 ruby 版本有变动的情况下,有些 gem(如一些需要编成 native 的库)有时会出怪异的问题。
开发时,不时地 bundle clean 一下把不用到了的 gems 清掉(用 --path 参数时 bundler 会自动做这个),既省空间又能避免这些问题:)
可以复制,晚饭前还执行了一下
rvm gemset copy 1.9.3@rails3 1.9.2@rails3
不过敲完回车就后悔了,我应该放在全局里
复制这个是因为我的 ruby1.9.3 版本 & rake 0.9.2 执行 rake test 的时候有问题
装了最新版的 rvm 后,可以直接rvm gemset copy oldset newset
不需要加 ruby 版本,应该是新版本 fix 了那个 bug
我现在是一个框架(版本)建一个 gemset,比如 rails2.3.4 一个 gemset,3.2.1 又是一个 gemset,sinatra 又是一个 gemset。然后那些公用的工具库就往 global 里扔。gemset 要是能够继承就好了,会方便管理一些。还有各 ruby gems 的依赖关系再清楚些的话,结合 rvm,我感觉应该会是个蛮强大的工具。