∞典型 RVM 项目工作流程
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
中引入的, - 环境切换自 RVM
1.22.0
开始支持。
∞项目文件 .rvmrc
这是第一个支持的格式,它优先于任何其他文件。.rvmrc
有一个主要缺陷 - 它需要信任以防止执行未经授权的代码,这使得它难以使用并使部署到生产环境变得复杂。在不需要脚本的情况下,鼓励使用其他项目文件。
生成一个简单的 .rvmrc
echo 'rvm --create use ree@tedxperth' > .rvmrc
更复杂的版本
rvm --create use ree@tedxperth --rvmrc
可以编辑该文件以提供额外的自定义。
要信任该文件
rvm rvmrc trust /path/to/project
∞项目文件 .ruby-version
该文件也受 chruby 和 rbenv 支持。.ruby-version
只是一个 ruby 名称,因此它不需要信任,并且比 .rvmrc
更简单。
生成 .ruby-version
echo 1.9.3 > .ruby-version # OR: rvm --ruby-version use 1.9.3
在 RVM 中,.ruby-version
也支持以 ruby@gemset
的形式指定 gemset,但这与其他 Ruby 版本管理器不兼容。可以使用另一个文件来指定 gemset,而不会破坏兼容性 - .ruby-gemset
。
生成 .ruby-gemset
echo my_app > .ruby-gemset # OR: rvm --ruby-version use 1.9.3@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 版本更多的内容。
生成 .versions.conf
rvm --create --versions-conf use 1.9.3@my_app
.versions.conf
示例
ruby=jruby-1.6.8 ruby-gemset=my_app env-JRUBY_OPTS=--1.9
∞项目文件 Gemfile
Gemfile
的 ruby
指令受支持,并将被 RVM 读取。
Gemfile
示例
ruby "1.9.3" gem "haml"
如果无法使用 ruby
指令,或者需要更细粒度的版本,则以下注释将优先于指令。
#ruby=jruby-1.6.8 #ruby-gemset=my_app #ruby-env-JRUBY_OPTS=--1.9
另一个示例,使用特定补丁级别的 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
- 如果Gemfile
可用,则安装bundler
gem 并运行bundle install
。