【发布时间】:2012-09-06 19:41:18
【问题描述】:
在 RVM gemset 中寻找 gem list 之类的东西,但让它忽略 global 和 default gemsets 中的 gems,这样我就可以很容易地看到什么 gems位于活动 gemset 中(仅在活动 gemset 中)。
【问题讨论】:
在 RVM gemset 中寻找 gem list 之类的东西,但让它忽略 global 和 default gemsets 中的 gems,这样我就可以很容易地看到什么 gems位于活动 gemset 中(仅在活动 gemset 中)。
【问题讨论】:
对于全局:
rvm @global do gem list
对于其他宝石:
GEM_PATH=$GEM_HOME gem list
@global 是所有其他 gemset 为给定 ruby 继承的 gemset,它不会为 m 本身继承,因此选择它并在其上下文中运行 gem list 是安全的。
对于所有其他gemset,您可以使用gem list 显示来自GEM_HOME 和GEM_PATH 中所有可用路径的gem,将GEM_PATH 重置为等于GEM_HOME 将只提供一个可用路径 - 那个来自GEM_HOME 所以gem list 将只显示选定gemset 中的gem,忽略所有其他gemset(此时@global,但RVM 2.0 将支持多个gemset 继承)。
【讨论】:
GEM_PATH,那么你以后不需要重新设置它吗?!?
env 以确保:env GEM_PATH=$GEM_HOME gem list
最简单的方法是使用 bash 命令显示当前 gemset 目录中的目录列表
$ ls `rvm gemdir`/gems
【讨论】:
`。
ls 仅列出将当前 gemset 目录作为参数的目录内容。 Gemset 目录取自 rvm gemdir 命令并附加了 /gems(这是所有 gem 文件夹所在的位置)。 8)
ls等,但没有见过使用`来包围变量?或表达式?之前...
首先,无论何时选择任何其他 gemset,默认(无名)gemset 的内容都会变得不可见。
如您所知,@global gemset 在当前选定的 Ruby 的所有其他 gemset 中实际上是 included。
但是,要查看除@global gemset 之外的gemset 的内容,首先执行rvm use 2.0.0@some-gemset --ignore-gemsets(或similar 用于其他Rubies)然后gem list。
类似看@global gemset 的内容,先做rvm use 2.0.0@global 然后gem list。
同样,要查看默认 gemset 的内容,请执行 rvm use 2.0.0 --ignore-gemsets 然后 gem list。
顺便说一句,您可以选择一个 gemset 作为(所谓的)default 用于新的(非登录)shell(我总是在 .bash_profile 等中为每个 Ruby 解释器分别这样做)但是那是另一种默认 gemset,而不是上面的(未命名的)默认 gemset。
【讨论】:
gem update/bundle update 有关。我希望它在运行时仅更新它们当前所在的 gem 集中的 gem。我在global 中有一些宝石,在some-gemset 中有一些宝石。当我从some-gemset 运行gem update 时,它会将所有宝石(包括global)更新为some-gemset。我现在所做的,每次更新时,首先切换到global,然后切换到gem update 然后切换到some-gemset。可行,但是当您将 Gemfiles 和 Bundler 添加到组合中时,它会变得松散......
(rvm use 2.0.0@some-gemset --ignore-gemsets; gem update)。对于 Bundler,它是 (rvm use 2.0.0@some-gemset --ignore-gemsets; bundle update)。但是如果你想让 Bundler 将一些(不是全部)新的 gem 安装到 @global 中,那就很难了。