0

当我第一次开始编写 Rails 应用程序时,我使用了 .ruby-version,因为我在 RVM 网站上读到过它。我为我的两个 Rails 应用程序做了这个。很久以前,我不记得我为激活它而输入的命令。我还有七个不使用 .ruby-version 或 .rvmrc 的应用程序。我所做的只是为应用程序分配了一个 gemset(rvm 使用),它们工作得很好。

这是我的情况。在我的开发服务器上,我可以通过 rvm use 1.9.3@gemsetname --default 将 gemset 更改为我想要使用的那个。完成此操作后,我进行了捆绑更新以确保 gemset 中没有丢失任何 gem。之后我仍然能够运行该应用程序。然后我删除了 .ruby 版本中的 gemset。部署应用程序后,我仍然可以毫无问题地使用该网站。但是,在我的生产服务器上有一个不同的故事。我可以在生产服务器上执行相同的步骤,包括删除 .ruby-version 文件,但不知何故,它仍然会查找已删除的 .ruby-version 文件中的 gem 文件。当我将 .ruby-version 文件放回应用程序时,我必须进行捆绑更新以将所有 gem 安装到我尝试删除的 gemset 中。我'

我想更改两个完全不使用 .ruby-version 的应用程序,就像其他应用程序一样。我的目标是为使用最新版本的 Rails 3.2 的所有应用程序创建一个 gemset,并最终为所有 Rails 4.0 应用程序创建第二个 gemset。

我试图在 Stack Overflow 中搜索 .ruby-version 但找不到任何相关的帖子。也许我只是度过了糟糕的一天,因为我确信这些年来有人已经发布了一些关于此的内容。我试图在 RVM 网站上找到讨论 .ruby-version 的页面,但找不到。

任何帮助表示赞赏。

更新 7/22 上午 9:22 CDT 0915 GMT-5

我记得在我的开发服务器上,我执行了以下命令,以准备最终将 Ruby 升级到 Ruby 2.0。

gem update --system 2.0.3
gem update bundler

我没有在我的生产服务器上这样做。我刚刚执行了这两个命令,选择了我要使用的 gemset,然后删除了 .ruby-version 文件。该应用程序没有工作。当我把文件放回去时,我的应用程序工作了。当我执行rvm gemset list时,它说它正在使用我将来要使用的 gemset。不知何故,我能够在我的开发服务器上摆脱对 .ruby-version 的要求,但在我的生产服务器上却没有。

这是问题所在。这是我的 .ruby-version 文件中包含的内容:

1.9.3@gemsetname

RVM 网站上有设置 .ruby-version 的逻辑。我想我没有设置用于应用程序的 gemset,因此系统创建了一个以我的 Rails 应用程序名称命名的 gemset。我应该早点说明这一点。我不希望应用程序使用它创建的 gemsetname。

4

1 回答 1

0

您正在使用.ruby-versiongemsets - 这在 rvm 中是可能的,但不推荐,gemset 有一个单独的文件:.ruby-gemset您应该将此文件用于 gemsets 并.ruby-version仅保留 ruby​​ 版本 - 建议保留在您的代码存储库中 - 对于更多细节检查这个问题:我应该检查`.ruby-gemset`和/或`.ruby-version`吗?连同这个答案:https ://stackoverflow.com/a/16738020/497756

于 2013-07-21T12:19:40.693 回答