簡體   English   中英

將Rails 2應用程序移植到新服務器

[英]Porting Rails 2 application to new server

在此過程中,我還提出了其他幾個問題,但是對於要執行的操作我有個更好的主意,所以我想問一下。

我繼承了一個Rails 2.2.2應用程序,該應用程序現在以生產形式在我可以訪問的服務器上運行。 我正在嘗試將該應用程序移植到我的服務器,版本控制等上。我首先嘗試復制源代碼,並使其在Rails 3和gems的最新版本下運行,但是事實證明,這比困難得多。我以為會。 似乎最好的解決方案是僅使用當前系統正在使用的相同版本的Rails和其他gem,並按原樣通過應用程序進行移植。

所以我想知道這樣做的最好方法是什么? 我可以將源代碼放入版本控制系統中,並以與現在相同的方式設置Capistrano和Passenger。 問題在於將所有寶石都放在同一版本中。 我聽說過凍結Rails和凍結gems,但是其中的許多教程看起來有些過時了。 將gem凍結在當前正在運行的生產服務器上是否安全,還是我應該只獲取gem及其版本的列表,然后將其全部手動安裝到要移植到的新服務器上?

編輯 :我遵循了tadman的建議,並在生產服務器上安裝了所有gems和最新版本的Gemfile,但是現在我陷入了與這些問題的版本控制,例如:

Bundler could not find compatible versions for gem "ruby2ruby":
  In Gemfile:
    merb-action-args (= 1.0.8.1) depends on
      ruby2ruby (>= 1.1.9)

    ambition (= 0.5.4) depends on
      ruby2ruby (1.1.8)

生產服務器有時會安裝多達4個版本的同一gem,但是Bundler似乎只希望處理每個版本的一個版本。 有沒有一種簡單的方法可以解決這種情況,還是可以追溯到生產中凍結的寶石?

編輯2:我決定從除rails之外的所有gem中刪除版本並進行bundle install 到目前為止,即使所有版本都不完全匹配,它似乎也可以正常工作。

切換到Rails 3可能會讓人頭疼,但是打包寶石的歷史版本會容易得多。 在某種程度上, 捆綁程序使此操作變得更加容易,您可以在Gemfile為應用程序在Gemfile聲明所需的特定版本。 盡管這是Rails 3中使用的事實上的方法,但它與平台無關,可以在任何版本的Rails上用作分發機制。

除非在config/environment.rb另外指定,否則通常可以將與gem list一起使用的gem list的版本確定為最新版本。 將gem列表轉換為Gemfile很容易。

暫無
暫無

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

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