【问题标题】:How to find out which Ruby version an existing Rails project is based on?如何找出现有 Rails 项目基于哪个 Ruby 版本?
【发布时间】:2011-06-07 07:53:22
【问题描述】:

我有一个现有的 Ruby on Rails 项目。如何找出应用程序最初使用的 Ruby 版本?

编辑: 总结这个线程:如果没有特定于 ruby​​ 版本的 gem,那么每个 Ruby 都应该可以工作。 您的所有帖子都很有帮助 - 谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    如果没有使用特定版本的 gem,我不确定是否可以确定开发期间使用的确切 ruby​​ 版本。在任何情况下,该应用都可以在多个版本上正常工作,具体取决于它所具有的功能。

    如果应用有全面的测试,您可以返回找到所有测试都通过的最新版本。

    检查与所用 Rails 版本兼容的 Ruby 的最低版本也有助于缩小范围。

    【讨论】:

      【解决方案2】:

      有些人在他们的项目中使用 rvm 来管理 gemsets,在这种情况下 .rvmrc 包含这些信息,例如: "ruby-1.9.2-p180@projectname"

      【讨论】:

      • 嗯,这就是为什么在 .gitignore 中包含 .rvmrc 是个坏习惯。
      【解决方案3】:

      上面的答案分为两种情况:

      1. 应用仍在运行的位置(生产中或其他),您可以在其中连接到生产控制台并检查版本
      2. 唯一可用的“工件”是源代码管理中的应用源代码

      对于#2,上面的答案几乎涵盖了它。你们很幸运。

      对于 #1,它更像是一次考古探险。我相信 OP 处于这种情况,我今天也处于类似情况。

      查看 gem 版本可能是最好的方法。

      这里有几点可以借鉴的线索,供大家参考。 (为了那些将来偶然发现这篇文章的人的利益):

      表明应用是在 Ruby 1.8.7 中构建的

      • Gemfile.lock 中存在 SystemTimer Gem (1)
      • GemFile 中存在 ruby​​-debug,与 1.9 中的 ruby​​-debug19 不同。我相信这也可能意味着 1.8.6

      表明应用是在 Ruby 1.9 中构建的

      • Gemfile 中存在 ruby​​-debug19
      • 使用了字符串#force_encoding
      • 编码:utf-8在每页顶部

      表明应用是使用 jruby 构建的

      • ffi的用法

      一般来说,如果您通读列出差异的旧“从 1.8.7 到 1.9 的迁移指南”,您可以使用这些差异来帮助您找到线索。见:

      这个问题:

      What is the difference between Ruby 1.8 and Ruby 1.9

      还有这篇Airbnb博客文章:

      http://nerds.airbnb.com/upgrading-from-ree-187-to-ruby-193/

      祝你好运!

      (1):“在 Ruby 1.9 中使用这个 gem 是没有用的,没有任何意义!系统计时器正在尝试解决 Ruby 1.8 (MRI) 中使用的“绿色线程”模型的一些限制。见 @987654323 @ 更多细节。” SystemTimer 的替代品是来自 Ruby 核心的 timeout.rb。2011 年 10 月 21 日" 来源:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=systemtimer%20gem

      【讨论】:

        【解决方案4】:

        对于我来说,我登录到托管项目的服务器以查看那里安装的版本:ruby --version

        【讨论】:

          【解决方案5】:

          检查它是否仅使用 ruby​​1.9 的 gem 文件,例如 ruby​​-debug19,或者相反,仅用于 1.8 的 gem。 查看是否使用了 String#force_encoding - 它可以暗示它是 1.9。其他 1.9 功能不太常用 AFAIK。

          【讨论】:

          • 我知道,它不是 ruby​​ 1.9 ...我不确定它是 ruby​​ 1.8.7 还是 jruby 1.5.4 ...
          • 然后检查 ffi 的使用情况。它可以暗示 jruby。
          猜你喜欢
          • 2020-08-04
          • 2020-01-28
          • 2021-06-25
          • 2012-02-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多