2017-06-14 30 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