【发布时间】:2011-06-07 07:53:22
【问题描述】:
我有一个现有的 Ruby on Rails 项目。如何找出应用程序最初使用的 Ruby 版本?
编辑: 总结这个线程:如果没有特定于 ruby 版本的 gem,那么每个 Ruby 都应该可以工作。 您的所有帖子都很有帮助 - 谢谢。
【问题讨论】:
标签: ruby-on-rails ruby
我有一个现有的 Ruby on Rails 项目。如何找出应用程序最初使用的 Ruby 版本?
编辑: 总结这个线程:如果没有特定于 ruby 版本的 gem,那么每个 Ruby 都应该可以工作。 您的所有帖子都很有帮助 - 谢谢。
【问题讨论】:
标签: ruby-on-rails ruby
如果没有使用特定版本的 gem,我不确定是否可以确定开发期间使用的确切 ruby 版本。在任何情况下,该应用都可以在多个版本上正常工作,具体取决于它所具有的功能。
如果应用有全面的测试,您可以返回找到所有测试都通过的最新版本。
检查与所用 Rails 版本兼容的 Ruby 的最低版本也有助于缩小范围。
【讨论】:
有些人在他们的项目中使用 rvm 来管理 gemsets,在这种情况下 .rvmrc 包含这些信息,例如: "ruby-1.9.2-p180@projectname"
【讨论】:
上面的答案分为两种情况:
对于#2,上面的答案几乎涵盖了它。你们很幸运。
对于 #1,它更像是一次考古探险。我相信 OP 处于这种情况,我今天也处于类似情况。
查看 gem 版本可能是最好的方法。
这里有几点可以借鉴的线索,供大家参考。 (为了那些将来偶然发现这篇文章的人的利益):
一般来说,如果您通读列出差异的旧“从 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
【讨论】:
对于我来说,我登录到托管项目的服务器以查看那里安装的版本:ruby --version
【讨论】:
检查它是否仅使用 ruby1.9 的 gem 文件,例如 ruby-debug19,或者相反,仅用于 1.8 的 gem。 查看是否使用了 String#force_encoding - 它可以暗示它是 1.9。其他 1.9 功能不太常用 AFAIK。
【讨论】: