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

Ste*_*han 15 ruby ruby-on-rails

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

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

Mik*_*use 7

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

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

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


Jak*_*nes 5

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


Gal*_*Gal 5

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

  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
  • 使用 String#force_encoding
  • 编码:每页顶部的 utf-8

标志该应用程序是使用 jruby 构建的

  • 菲的用法

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

这个问题:

Ruby 1.8 和 Ruby 1.9 有什么区别

以及这篇爱彼迎博客文章:

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

祝你好运!

(1):“在 Ruby 1.9 中使用这个 gem 是无用的,没有任何意义!系统计时器正在尝试解决 Ruby 1.8 (MRI) 中使用的“绿色线程”模型的一些限制。请参阅http://ph7spot .com/musings/system-timer了解更多详细信息。” SystemTimer 的直接替代品是来自 Ruby core 的 timeout.rb。2011 年 10 月 21 日”来源:https://www.google.com/webhp ?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=系统定时器%20gem