RVM并自动切换gemsets

时间:2011-02-28 15:25:14

标签: ruby rvm

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

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

6 个答案:

答案 0 :(得分:30)

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

创建名为.ruby-gemset的文件,其中仅包含gemset名称。

gemset

需要最新版本的rvm才能实现此功能。

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

1.9.3

此格式还具有与rbenvrbfu兼容的优势。

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

rvm rvmrc to .ruby-version

答案 1 :(得分:29)

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

rvm gemset use xxxx

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

答案 2 :(得分:25)

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

rvm --rvmrc --create <ruby>@<desired-gemset-name>

e.g。 rvm --rvmrc --create 1.9.2-p290@testing_gemset

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

答案 3 :(得分:0)

如果你无法使.ruby-version / .ruby-gemset工作,请考虑你的终端是否使用shell登录并尝试在http://rvm.io/support/faq的shell部分运行命令:

$ rvm get [head|stable] --auto

答案 4 :(得分:0)

在项目文件夹中创建内容为[ruby版本] @ [gemset]的.ruby版本文件。

示例:

$ rvm gemset list

    gemsets for ruby-2.6.3 (found in /home/ec2-user/.rvm/gems/ruby-2.6.3)
       (default)
       hello
    => sample
       toy

$ echo "2.6.3@sample" > .ruby-version

答案 5 :(得分:-1)

有可能:http://rvm.io/workflow/rvmrc/

rvm use ruby@gemset