RVM支持多种配置文件,并允许为一个项目配置全自动的Ruby环境切换。不论在什么情况下,都不要忘记把那些配置文件一起放入版本控制系统,因为它们也是整个项目配置文件的一部分
支持的配置文件
下面的文件按照处理优先级顺序排列:
-
.rvmrc
:一个支持完全定制项目环境的Shell脚本。 -
.versions.conf
:key=value
配置文件。 -
.ruby-version
:ruby-version
配置文件,仅允许存在这一行。 -
Gemfile
:项目包依赖文件——注释# ruby=1.9.3
,有效配置ruby "1.9.3"
。
注意:
* 只有.rvmrc
被任意版本的RVM支持,其他文件是RVM1.11.0
中引入的。
* 项目的Ruby环境切换仅在RVM1.22.0
及后续版本支持。
.rvmrc
文件
这是第一个被RVM支持的配置文件,也是处理优先级最高的配置文件。.rvmrc
有个缺点,需要信任此文件,以防止未经验证的代码运行,这给日常使用造成了一些不便,也使得程序部署变得复杂。在没有必要使用这个配置文件的时候,应当更多地使用项目中其他的配置文件。
生成示例.rvmrc
:
echo 'rvm --create use ree@tedxperth' > .rvmrc
还可以生成一个更复杂的版本:
rvm --create use ree@tedxperth --rvmrc
可以编辑这个文件以实现更多的定制化功能。
信任.rvmrc
文件:
rvm rvmrc trust /path/to/project
.ruby-version
文件
这个文件也被chruby和rbenv支持。.ruby-version
只是一个ruby版本,并不需要被信任,所以要比.rvmrc
更简单方便。
生成.ruby-version
:
echo 2.0.0 > .ruby-version
# OR
rvm --ruby-version use 2.0.0
仅在RVM中,.ruby-version
也以ruby@gemset
的形式支持gemsets,其他的Ruby版本管理器不支持这一功能。也可以用其他的文件来具体说明gemset而同时保持兼容性:.ruby-gemset
。
生成.ruby-gemset
:
echo my_app > .ruby-gemset
# OR
ruby --ruby-version use 2.0.0@my_app
第二种形式会同时创建.ruby-version
和.ruby-gemset
文件。
有些项目需要在环境中进行额外的配置,可以使用.ruby-env
文件来做到这一点:
echo "JRUBY_OPTS=--1.9" >> .ruby-env
这个变量会在进入项目目录时候被自动设置,在退出项目目录时会恢复成之前的值。
需要注意的是,下面这些文件:
.rbenv-version
.rbenv-vars
.rbfu-version
也会被支持,但它们的处理优先级比.ruby-version
更低。
.versions.conf
文件
对于一些更高级的项目,就需要.versions.conf
来处理,这个比.ruby-version
更强大。
生成.versions.conf
文件:
rvm --create --versions-conf use 2.0.0@my_app
这里有一个该文件的示例:
ruby=jruby-1.6.8
ruby-gemset=my_app
env-JRUBY_OPTS=--1.9
Gemfile
文件
Gemfile
中的命令是RVM支持并可以被读取的。
示例:
ruby "2.0.0"
gem "haml"
在一些情况下,无法使用ruby
语句或需要更多相关的细节,下面的注释将会按照优先级作为相应的语句:
#ruby=jruby-1.6.8
#ruby-gemset=my_app
#ruby-env-JRUBY_OPTS=--1.9
另一个例子,在某个特别的Patch的场景下使用MRI Ruby:
#ruby=ruby-1.9.3-p194
#ruby-gemset=my_app
这些注释在旧版本的bundler
不支持相关语句的情况下会被启动。
RVM配置
一些变量可以在~/.rvmrc
和/etc/rvmrc
中设置:
-
rvm_project_rvmrc_default=1
:当项目的相关配置文件没有找到时,自动选择默认的Ruby环境。 -
rvm_autoinstall_bundler_flag=1
:自动安装bundler
,并且当Gemfile
可用时自动运行budnle install
。