簡體   English   中英

如何找出現有 Rails 項目基於哪個 Ruby 版本?

[英]How to find out which Ruby version an existing Rails project is based on?

我有一個現有的 Ruby on Rails 項目。 如何找出應用程序最初使用的是哪個版本的 Ruby?

編輯:總結這個線程:如果沒有特定於 ruby 版本的 gem,每個 Ruby 都應該工作。 你所有的帖子都很有幫助-謝謝。

如果沒有使用特定版本的 gem,我不確定是否可以確定開發期間使用的確切 ruby 版本。 在任何情況下,該應用程序都可能適用於多個版本,具體取決於它所具有的功能。

如果該應用程序具有全面的測試,您可以回過頭來找到所有測試都通過的最新版本。

檢查與使用的 Rails 版本兼容的 Ruby 的最低版本也有助於縮小范圍。

有些人使用 rvm 來管理他們項目中的 gemsets,在這種情況下.rvmrc 包含此信息,例如:“ruby-1.9.2-p180@projectname”

上面的答案分為兩種情況:

  1. 應用程序仍在運行的位置(生產中或其他),您可以在其中連接到生產控制台並檢查版本
  2. 唯一可用的“工件”是源代碼控制中的應用程序源代碼

對於#2,上面的答案幾乎涵蓋了它。 你們很幸運。

對於#1,它更像是一次考古探險。 我相信 OP 處於這種情況,而我今天也處於類似情況。

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

這里有幾個可以借鑒的線索,供大家參考。 (為了那些將來偶然發現這篇文章的人的利益):

標志該應用程序是在 Ruby 1.8.7 中構建的

  • Gemfile.lock 中 SystemTimer Gem 的存在(一)
  • GemFile 中存在 ruby-debug,而不是 1.9 的 ruby-debug19。 我相信這也可能意味着 1.8.6

標志該應用程序是在 Ruby 1.9 中構建的

  • Gemfile 中存在 ruby-debug19
  • 使用 String#force_encoding
  • 編碼:每頁頂部的utf-8

標志應用程序是用 jruby 構建的

  • ffi的用法

一般來說,如果您通讀列出差異的舊“從 1.8.7 到 1.9 的遷移指南”,您可以使用這些差異來幫助您找到線索。 看:

這個問題:

Ruby 1.8 和 Ruby 1.9 有什么區別

和這個airbnb博客文章:

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

祝你好運!

(1): "Using this gem in Ruby 1.9 is useless and does not make any sense. System Timer is trying to work around some limitation of the "green thread" model used in Ruby 1.8 (MRI). See http://ph7spot .com/musings/system-timer了解更多詳情。” SystemTimer 的替代品是來自 Ruby 核心的 timeout.rb。2011 年 10 月 21 日" 來源: https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q系統計時器%20gem

對我來說,我登錄到托管項目的服務器以查看那里安裝的版本: ruby --version

檢查它是否僅使用 ruby1.9 的 gem 文件,如 ruby-debug19,或者相反,僅用於 1.8 的 gem。 查看是否使用了 String#force_encoding - 它可以暗示它是 1.9。 其他 1.9 功能不太常用 AFAIK。

我有一個現有的 ruby on rails 項目。 如何找出應用程序最初使用的是哪個版本的 ruby?

編輯:總結這個線程:如果沒有特定於 ruby 版本的 gem,每個 ruby 都應該工作。 你所有的帖子都很有幫助-謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM