2017-06-14 52 views
1

升級我的Ruby版本後,我(按預期)遇到了一些麻煩,使我的服務器在較早的項目中運行並運行。我很好奇如何在本地爲特定項目切換Ruby版本。 Rbenv的github頁面使用$ rbenv local 1.9.3-p327作爲如何執行此操作的示例命令。我想知道的是-p327所指的是什麼,對我來說應該是什麼,甚至是必要的。例如,我可以運行$ rbenv local 2.3.1嗎?瞭解RBENV:在本地切換Ruby版本

(在我的情況,我目前使用Ruby 2.4.0 -v想回去到一個較早的版本,以避免設計錯誤的寶石,我似乎無法讓過去。)

回答

1

爲了回答您的其他問題,

Rbenv的GitHub的頁面使用$ rbenv local 1.9.3-p327爲如何做到這一點的示例命令。我想知道的是-p327指的是...

Ruby的舊版本策略是MAJORMINORTEENY - PATCH

p327僅僅指的是PATCHLEVEL,這基本上是被遞增一MINOR數的增加量後的各接受補丁的數。 Prior to Ruby 2.1,安全修復程序未增加TEENY版本,因此某些版本指定了修補程序級別。

+0

啊......那就解釋一下吧!所以在切換版本時不一定需要。切換版本時,是否跟蹤並使用最新的補丁級別是一種好的做法?感謝Adam。 – Belder

+0

@BrandonElder通常您想要定位一個「MINOR」版本,例如'2.3',然後通常有一些擺動的房間與'TEENY'版本。一些生產環境更嚴格,所以YMMV。如果有疑問,請選擇生產中運行的任何版本。由於2.1鏈接的策略更改,因此在發行版中不會看到單獨的patchlevel編號。 –

+0

真棒信息....一切似乎現在工作。再次感謝。 – Belder

2

$ rbenv local 2.3.1會完全按照你的猜測。項目特定版本的Ruby通過項目目錄中的.ruby-version文件進行設置。此設置優先於任何使用rbenv global的設置,這些設置將設置其他未指定的Ruby版本。

+0

你的回答比我早13秒;) – gates

+0

好...很好,謝謝你的迴應。我想我現在唯一的困惑是,我的項目目錄中似乎沒有名爲'.ruby_version'的文件。我在哪裏可以找到它,並且可能會被命名爲其他東西? – Belder

+0

這就是'.ruby-version'不是'.ruby_version' –

1

Rbenv使用文件.ruby-version來檢測ruby版本項目正在使用。那麼你有這個文件嗎?

根據您的項目使用的ruby版本,只需在您的文件中編寫一個數字即可。

例如:2.3.0

+0

啊,沒有注意到你的回覆......謝謝。正如我對@MarsAtomic所說的,我似乎沒有一個名爲'.ruby_version'的文件。我想知道爲什麼我的項目中不會有這樣的情況? – Belder

+1

那麼,如果你沒有找到它,只需要在.git中創建一個與之相同的層次結構:)並且文件的內容應該是項目使用的ruby的版本@BrandonElder – gates

+0

ok ... cool .. .. 非常感謝。 – Belder