2017-02-09 47 views
1

在描述使用rbenv和Bundler配置環境的每個設置中,說明始終使用gem install bundler將捆綁安裝爲系統寶石。通常,他們也會推薦rbenv-bundler rbenv plugin,但是the maintainers of rbenv discourage thisRails是否需要安裝爲系統寶石?

沒有說明的是如何安裝Rails。初始化一個新的Rails項目會爲bundler創建一個基本的Gemfile。但是,爲了初始化Rails項目,需要安裝Rails。製作目錄似乎很奇怪甚至是錯誤,編寫一個包含Rails的基本Gemfile,運行bundle install,然後將Rails初始化爲當前目錄。事實上,我懷疑它甚至可以工作,如果它工作的話。

那麼,Rails是否需要作爲系統寶石安裝?gem install rails?如果是這樣,那麼如何管理Rails的多個版本,尤其是使用rbenv?

回答

2

完全有意義不是將rails安裝爲系統寶石。

沒有搞亂rbenv或使用其他的Ruby版本管理器,下面是簡單的步驟來創建(初始化)從一個Gemfile中一個目錄一個新的Rails應用程序:

mkdir rails_app 
cd rails_app 
vi Gemfile # Edit it to include a rails version you need 
bundle --path vendor # Wait for bundler to finish 
bundle exec rails new ./ 

最後一步會問:Overwrite /path/to/rails_app/Gemfile? (enter "h" for help) [Ynaqdh] 。輸入y以獲得默認的Rails Gemfile內容。

注意:上述步驟指定本地vendor目錄(在rails應用程序文件夾內)以避免將gems安裝到系統全局範圍。

+0

這是有道理的。這是一些重複的工作 - 製作目錄,製作一個Gemfile,然後將該Gemfile移開。這是幾個命令。但它確實讓除Bundler之外的所有東西都存在於供應商(或任何你想稱之爲)的目錄中。 –

+0

將它作爲系統Gem安裝實際上是一個非常糟糕的主意,也許除非使用定製的docker實例。將系統和用戶地圖庫分開是一個好主意。從操作系統角度來看,Rails應用程序基本上是用戶登陸的。所以部署用戶的rbenv更好。 – Tilo

+0

這就是爲什麼我在示例中將寶石安裝到應用程序內的供應商文件夾中的原因。我個人也使用Foreman/Heroku Local管理其他服務(數據庫,Redis等)以將它們隔離到應用程序。 –

2

答案是否定的,你不安裝軌道作爲系統寶石。創建一個項目文件夾,添加.ruby-version文件並在這個文件中添加你想要的紅寶石版本,即2.3.0。 rbenv使用此文件中指定的版本,它不會是系統的紅寶石。

現在你可以從這個目錄做gem install bundler並創建Gemfile並添加你的rails版本。現在運行bundle install並在軌道上滾動.....

相關問題