RVM并自动切换gemsets

joe*_*lis 26 ruby rvm

是否有可能让rvm知道在某个目录下导航时应该使用哪个gemset,就像你可以通过在该目录下导航git当前分支的信息一样?

我理解git是如何工作的,因为每个目录在根目录中都有自己的.git目录,但不知道是否可能,因为.rvm更像是用户范围的配置.或者答案是在每个目录中创建一个.rvm文件?

Yul*_*ule 30

对于访问它的其他人来说,有一种新方法可以做到这一点,而不必允许在.rvmrc文件中执行任意shell脚本.

创建一个名为.ruby-gemset仅包含gemset名称的文件.

gemset
Run Code Online (Sandbox Code Playgroud)

需要一个最新版本的rvm才能使用.

您还可以通过创建名为.ruby-version仅包含ruby版本的文件来指定ruby版本:

1.9.3
Run Code Online (Sandbox Code Playgroud)

这种格式还具有与rbenv和兼容的优点rbfu.

如果您使用已弃用的现有项目.rvmrc,则可以使用以下命令将它们转换为新格式:

rvm rvmrc to .ruby-version
Run Code Online (Sandbox Code Playgroud)

  • 当我进入目录时,我没有任何反应,我完全按照指示行事.我错过了什么吗? (3认同)
  • 如上所述,.ruby-gemset应该只包含gemset名称,而.ruby-version应该只包含ruby版本 (2认同)

Dyl*_*kow 29

.rvmrc在每个项目/分支中创建一个文件,其内容类似于:

rvm gemset use xxxx
Run Code Online (Sandbox Code Playgroud)

保存.下次cd进入该文件夹时,您可能会从RVM获得安全提示,以确保您想要使用它.rvmrc.接受后,每次导航到该文件夹​​时,您都会看到"正在使用gemset'xxxx'".

  • 这是做事的旧方法.新的方法是使用`.ruby-version`和`.ruby-gemset`文件.两者都必须存在.请参阅下面的@ Yule的回答. (10认同)

pur*_*nic 25

我发现实现此目的的最简单方法是导航到项目文件夹,然后使用以下命令:

rvm --rvmrc --create <ruby>@<desired-gemset-name>
Run Code Online (Sandbox Code Playgroud)

例如 rvm --rvmrc --create 1.9.2-p290@testing_gemset

一下子,RVM将创建.rvmrc文件,填充它,安装正确的ruby版本 - 如果需要 - 并且(通常)切换到正确的ruby版本和gemset.我经常说,因为我发现cd .在执行该命令之后我有时必须让RVM接收更改.