如何找出现有rails项目所基于的ruby版本?

时间:2011-06-07 07:53:22

标签: ruby-on-rails ruby

我在rails项目上有一个现有的ruby。如何找出最初用于应用程序的ruby版本?

编辑: 总结一下这个帖子:如果没有特定于ruby-version的宝石,那么每个ruby都应该有效。 您的所有帖子都很有帮助 - 谢谢。

6 个答案:

答案 0 :(得分:6)

如果没有使用特定版本的宝石,我不确定是否可以确定开发过程中使用的确切ruby版本。在任何情况下,应用程序可以针对多个版本正常工作,具体取决于它具有的功能。

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

检查与所使用的Rails版本兼容的Ruby的最低版本也有助于缩小该字段。

答案 1 :(得分:5)

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

答案 2 :(得分:4)

上述答案分为两种情况:

  1. 应用程序仍在运行的位置(在生产中或其他位置),您可以在其中连接到生产控制台并检查版本
  2. 可用的唯一“工件”是源代码管理中的应用源代码
  3. 对于#2,上面的答案几乎涵盖了它。你们很幸运。

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

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

    以下是一些可以使用的线索,供大家参考。 (为了将来偶然发现这篇文章的人的利益):

    标志着应用程序是用Ruby 1.8.7构建的

    • Gemfile.lock(1)
    • 中SystemTimer Gem的存在
    • 在GemFile中存在ruby-debug,而不是ruby-debug19 for 1.9。我相信这也意味着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是没用的,没有任何意义!System Timer试图解决Ruby 1.8(MRI)中使用的”绿色线程“模型的某些限制。请参阅{{ 3}}了解更多细节。“ SystemTimer的替代品是来自Ruby core的timeout.rb.Oct 21,2011“source:http://ph7spot.com/musings/system-timer

答案 3 :(得分:3)

对我来说,我登录了托管项目的服务器,以查看其中安装的版本:ruby --version

答案 4 :(得分:1)

检查它是否仅使用ruby1.9 gem文件,如ruby-debug19,或相反,仅使用1.8的gem。 看看是否使用了String#force_encoding - 它可以暗示它是1.9。其他1.9特征是不太常用的AFAIK。

答案 5 :(得分:-1)

写一个:放RUBY_VERSION