∞典型的 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
- 在目前目錄中找不到專案檔案時,優先使用預設 Rubyrvm_autoinstall_bundler_flag=1
- 如果有Gemfile
,安裝bundler
寶石並執行bundle install
。