經典RVM項目工作流

原文地址:http://rvm.io/workflow/projects

RVM支持多種配置文件,並允許爲一個項目配置全自動的Ruby環境切換。不論在什麼情況下,都不要忘記把那些配置文件一起放入版本控制系統,因爲它們也是整個項目配置文件的一部分

支持的配置文件

下面的文件按照處理優先級順序排列:

  • .rvmrc:一個支持完全定製項目環境的Shell腳本。
  • .versions.confkey=value配置文件。
  • .ruby-versionruby-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

推薦資源

  • A Common .ruby-version File For Ruby Projects by Fletcher Nichol
發佈了96 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章