簡體   English   中英

關於rvm的說明以及滑軌之間的切換

[英]clarification on rvm and switching between rails

http://railsapps.github.io/installrubyonrails-mac.html之后 ,我遇到以下命令

rvm use ruby-2.1.3@rails4.1 --create
gem install rails  # installs the latest rails version
rails -v # returns 4.1.6

但是,我也可以執行以下操作,將Rails版本添加到4.0.8

rvm use ruby-2.1.3@rails4.0 --create
gem install rails --version=4.0.8 # installs the latest rails version
rails -v # returns 4.0.8

這有什么意義呢? 在本文中的某個地方,有人說這種方法是為了防止全局gem-set,而是根據項目特定的gemset安裝rails? 那有什么意思?

這是有關如何創建新的Rails項目的說明

$ mkdir myapp
$ cd myapp
$ rvm use ruby-2.1.3@myapp --ruby-version --create
$ gem install rails
$ rails new .

為什么不只將Rails稱為myapp? 文字說這是“創建特定於項目的gemset”,但我不知道這是什么意思。 這不是只安裝Rails 4.1.6(最新版本)嗎? 為什么不首先在全球范圍內安裝Rails 4.1.6?

想象一下,您是一家在過去四年中一直在開發Rails應用程序的公司中的Rails開發人員。 您在Rails 2,Rails 3,Rails 4上都有應用程序-隨着新版本的發布,您升級了工具集,因為為什么不呢? 每個新版本都更好。

但是,它們不向下兼容。 Rails 2應用程序不適用於Rails 4.1。 如果在駭入Rails 4 one時被要求緊急調試Rails 2應用怎么辦? 卸載全局Rails,安裝Rails 2,進行破解,然后卸載Rails 2並再次重新安裝新的Rails,只是為了您可以運行測試以解決一站式錯誤?

這就是使用gemset的地方。每個應用程序都有環境,因此每個應用程序都可以自足運行,而不會發生版本沖突。

如果您不希望在計算機上出現這種版本沖突的情況(即,如果您只能想象在一個項目上工作),那么gemset是完全不相關的。

經過一番迷惑之后仍在編輯中:)讓我們一步一步走,看看到底發生了什么。

$ mkdir myapp
$ cd myapp

您現在位於空目錄中。

$ rvm use ruby-2.1.3@myapp --ruby-version --create

rvm創建一個新的寶石集,名為ruby-2.1.3@myapp ,它將與Ruby 2.1.3一起運行。 因此,您將在~/.rvm/gems/ruby-2.1.3@myapp一個新目錄,該目錄將位於您的gemset。 在先前為空的myapp目錄中,您還有兩個新文件: .ruby-version (包含一行,表示ruby-2.1.3 )和.ruby-version (包含行myapp )。 每次您進入myapp目錄時, rvm都會讀取這兩行:它為您設置了當前的Ruby和gemset。

$ gem install rails

認識到當前的gemset現在是ruby-2.1.3@myappgem install命令將下載最新的rails gem及其所有依賴項,並將它們放在您的gemset目錄中( ~/.rvm/gems/ruby-2.1.3@myapp/ )。

$ get install rails --version=4.0.8

如果您嘗試這種方法,它將忠實地安裝Rails 4.0.8,但是由於您的gemset中有較新的版本,並且您的應用程序沒有特別的要求,因此以新版本為准。 這通常不是您想要的; 而且無論如何,很少有理由開發一個項目以符合兩個不同版本的庫(除非您要開發一個庫或一個插件;這是另外一回事)。

$ rails new .

rails實際上正在執行~/.rvm/gems/ruby-2.1.3@myapp/bin/rails 如果您不在myapp目錄中(鏈接到gemset),則該命令將失敗(如果未在全局環境中安裝Rails),或者將執行已全局安裝的Rails(如果已安裝)。

因此,實際上並不是在同一項目中同時具有兩個版本的Rails。 但是,當您使用另一個gemset創建另一個項目(例如ruby-2.1.3@myotherapp )時,在那里可能會使用其他版本的Rails。 該版本自動的改變只是根據你的目錄上cd到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM