使用 rvmrc 或 ruby​​-version 文件使用 RVM 设置项目 gemset?

Posted

技术标签:

【中文标题】使用 rvmrc 或 ruby​​-version 文件使用 RVM 设置项目 gemset?【英文标题】:Use rvmrc or ruby-version file to set a project gemset with RVM? 【发布时间】:2013-03-20 11:44:39 【问题描述】:

我使用 RVM,Ruby Version Manager 为我的每个 Rails 项目指定一个 Ruby 版本和一组 gem。

每当我 cd 进入项目目录时,我有一个 .rvmrc 文件来自动选择 Ruby 版本和 gemset。

安装 RVM 1.19.0 后,我收到一条消息

你正在使用.rvmrc,它需要信任,它更慢而且它是 与其他 ruby​​ 管理器不兼容,可以切换到 .ruby-version 使用 rvm rvmrc to [.]ruby-version 或忽略此 带有rvm rvmrc warning ignore /Users/userName/code/railsapps/rails-prelaunch-signup/.rvmrc 的警告, .rvmrc 将继续作为 RVM 1 和 RVM 中的默认项目文件 2、忽略所有文件运行rvm rvmrc warning ignore all.rvmrcs的警告。

我应该继续使用我的.rvmrc 文件还是应该切换到.ruby-version 文件?哪个是最优的?有什么后果?

【问题讨论】:

【参考方案1】:

如果您的 .rvmrc 文件包含自定义 shell 代码,请继续使用 .rvmrc,因为它允许您包含任何 shell 代码。

如果您的唯一目标是切换 Ruby 版本,请使用 .ruby-version,其他 Ruby 版本切换器(例如 rbenv 或 chruby)支持它。该文件也不需要信任,因为它只是 Ruby 版本的名称,不会以任何方式执行。

如果您使用.ruby-version,您可以在文件中包含@gemset,但这与其他切换器不兼容。为了保持兼容性,请在单独的文件 .ruby-gemset 中使用 gemset 名称,该文件会被其他工具忽略(它只能与 .ruby-version 一起使用)

例如,如果您有一个简单的.rvmrc

rvm use 1.9.3@my-app

可以转化为.ruby-version:

1.9.3

还有.ruby-gemset:

my-app

请务必删除 .rvmrc 文件,因为它优先于任何其他项目配置文件:

rm .rvmrc

【讨论】:

请注意,并非所有应用程序都支持较新的 .ruby-version 和 .ruby-gemset 文件,而仅支持 .rvmrc。 (特别是RubyMine)。这当然会影响您选择是否迁移到新系统。我已经在答案中指出了这一点,因为我花了很多时间来追踪它。但是由于某种原因我的答案被删除了.. 是否有任何“官方”文档的链接?我开始研究它在 RVM 站点中是如何工作的,但只是发现一些模糊的提及它是新的 rvmrc 文件,但没有关于它应该如何工作。 它没有完全记录,但这是我们已经拥有的 rvm.io/workflow/projects/#ruby-versions 简单地将 1.9.3-p194 放入 .ruby-version 对我不起作用。参考上面的文档,rvm --create --ruby-version use 1.9.3-p194做的工作,里面的内容其实是ruby-1.9.3-p194 RubyMine 的当前版本确实支持 .ruby-version 样式。可以用6.3.2确认【参考方案2】:

从 .rvmrc 切换到 .ruby-version + .ruby-gemset 的快捷方式

rvm rvmrc to .ruby-version

【讨论】:

是的,但它会将 [] 放在 .出于某种我还没有弄清楚的原因。 (也许这是我不熟悉的约定。)实际上,我用谷歌搜索了这条消息并找到了这个答案,因为尴尬的措辞和 [] 让我不确定实际运行什么。 @zem [.]ruby-version中的[]表示the dot is optional;方括号是表示可选性的常用约定(通常,不是在 ruby​​ 中。)所以你可以使用一个名为“ruby-version”的文件,不带点,也可以使用。如果您希望在默认情况下隐藏“点文件”的系统上获得更多的文件可见性,这将很有用。不过,我同意这不是那么清楚。 上面写着Could not load .rvmrc【参考方案3】:

如果您想以简短的方式创建.ruby-version.ruby-gemset 文件,您可以使用如下命令:

rvm use 2.1.1@nancy --create

rvm --create --ruby-version 2.1.1@nancy

【讨论】:

【参考方案4】:

两个都可以试试。 转到项目的根目录,创建一个 .rvmrc 文件 (touch .rvmrc),然后编辑 rvm use 2.0.0-p451@your_gemset(您的 ruby​​ 版本和 gemset 名称)。 保存此文件后,您可以输入以下命令:

cd ../your_project(您在 your_project 目录中),.rvmrc 中的脚本将执行。

RVM 推荐使用 ruby​​-version。您可以运行此命令从 .rvmrc 切换到 .ruby-version

rvm rvmrc to .ruby-version

它的作用是创建 2 个文件名 .ruby-version.ruby-gemset 并添加这一行

.ruby 版本中的ruby-2.0.0-p451

.ruby-gemset 中的your_gemset

如果需要,您可以尝试手动操作:)

【讨论】:

【参考方案5】:

安装 rvm 使用:

\curl -sSL https://get.rvm.io | bash -s stable --rails

安装不同的 ruby​​ 版本:

rvm install 1.8.7
rvm install 1.9.2

切换到特定的 ruby​​ 版本。比如1.8.7:

rvm use 1.8.7

创建宝石:

rvm gemset create project_gemset

并使用 gemset:

rvm gemset use project_gemset

【讨论】:

以上是关于使用 rvmrc 或 ruby​​-version 文件使用 RVM 设置项目 gemset?的主要内容,如果未能解决你的问题,请参考以下文章

sh 使用RVM创建.ruby-version和.ruby-gemset文件

为 Ruby on Rails 6 创建弹性 beanstalk 环境时遇到问题(rvm、rbenv、.ruby-version 问题)

带有 Ruby 2.5.1 控制台的 Rails 5.2.0 - `warning:` `already` 已初始化常量 FileUtils::VERSION

ruby 加入puppet_agent ot puppet_master ruby​​ script = version 1.0

how to change the ruby and rails version

RVM(ruby version manage)安装指南