使用 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