RVM必须cd到目录才能根据.ruby-version& amp;更改gemset。 .ruby-宝石

时间:2015-06-02 08:42:45

标签: ruby bash ubuntu rvm

我发现了RVM的奇怪行为,并且不知道如何处理它。

似乎RVM不能自动更改每个.ruby-version&的宝石集。 .ruby-gemset如果我在项目的根目录中打开一个终端。请查看我的意思

# 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

有用的信息:

 cat .ruby-version # => 2.2.1
 cat .ruby-gemset # => terminal_ui
 rvm -v # => rvm 1.26.11

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

2 个答案:

答案 0 :(得分:6)

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

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

当您在项目文件夹中打开终端时,您不会使用命令,因此不会调用钩子。但您可以在.bashrc.bash_profile文件中添加以下行(在与RVM相关的行之后):

cd .

它将导致RVM使用其钩子并设置正确的gemset。有关钩子的更多信息:docs

答案 1 :(得分:0)

您可以使用.rvmrc自动进行更改。

cd terminal_ui
touch .rvmrc
echo rvm use 2.1.1@terminal_ui >> .rvmrc
cd .