RVM需要cd到目录以更改符合.ruby-version和.ruby-gemset的gemset

asi*_*niy 1 ruby bash ubuntu rvm

我发现了一个奇怪的行为,RVM不知道如何处理它.

看来RVM不能自动更改它的gemset根据in .ruby-version&.ruby-gemsetif我是否正好在项目的根目录中打开终端.请回顾一下我的意思

# open a terminal directly in terminal_ui directory, which contains .ruby-version & .ruby-gemset

ls -a # ... .ruby-version .ruby-gemset
rvm gemset list
gemsets for ruby-2.2.1 (found in /home/epic/.rvm/gems/ruby-2.2.1)
=> (default)
   fasteria
   global
   terminal
   terminal_ui

# but if I cd to the top and then back again, my gemset will be 

cd ../
cd terminal_ui
rvm gemset list
gemsets for ruby-2.2.1 (found in /home/epic/.rvm/gems/ruby-2.2.1)
   (default)
   fasteria
   global
   terminal
=> terminal_ui
Run Code Online (Sandbox Code Playgroud)

有用的信息:

 cat .ruby-version # => 2.2.1
 cat .ruby-gemset # => terminal_ui
 rvm -v # => rvm 1.26.11
Run Code Online (Sandbox Code Playgroud)

我试过了rvm get stable,但没有成功

hed*_*sky 7

RVM使用多个钩子来更改用户操作上的ruby版本和gemsets:

  • after_use
  • before_install
  • after_install
  • after_do(在任何'do'动作后触发)
  • after_cd(每当用户使用cd命令时触发)

当你在项目文件夹中打开终端时,你不使用命令,所以不调用hook.但你可以在你添加以下行.bashrc.bash_profile文件(RVM相关行之后):

cd .
Run Code Online (Sandbox Code Playgroud)

它将导致RVM使用其钩子并设置正确的gemset.更多关于钩子:docs.