是否有可能让rvm知道在某个目录下导航时应该使用哪个gemset,就像你只需通过在该目录下导航就可以获得当前分支的信息一样?
我理解git是如何工作的,因为每个目录在根目录中都有自己的.git目录,但不知道是否可能,因为.rvm更像是用户范围的配置。或者答案是在每个目录中创建一个.rvm文件?
答案 0 :(得分:30)
对于其他人来说,有一种新方法可以做到这一点,而不必允许在.rvmrc文件中执行任意shell脚本。
创建名为.ruby-gemset
的文件,其中仅包含gemset名称。
gemset
需要最新版本的rvm才能实现此功能。
您还可以通过创建仅包含ruby版本的名为.ruby-version
的文件来指定ruby版本:
1.9.3
此格式还具有与rbenv
和rbfu
兼容的优势。
如果现有项目使用已弃用的.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