12

我有一個可以部署的Rails 3.2應用程序。我想知道我應該升級到Rails 4嗎?我也不確定在升級時哪些寶石可能會帶來問題。從Rails 3.2升級到Rails 4

下面是我的幾個常見寶石的Gemfile。

Gemfile.rb

source 'https://rubygems.org' 

gem 'rails', '3.2.8' 
gem 'pg', '0.12.2' 

gem 'bcrypt-ruby', '3.0.1' 

gem 'will_paginate', '3.0.3' 
gem 'bootstrap-will_paginate', '0.0.6' 
gem 'simple_form', '2.0' 
gem 'rails3-jquery-autocomplete', '1.0.10' 
gem 'show_for', '0.1' 
gem 'paperclip', '3.3.1' 
gem 'cocoon', '1.1.1' 
gem 'google_visualr', '2.1.0' 
gem 'axlsx', '1.3.4' 
gem 'acts_as_xlsx', '1.0.6' 
gem 'devise' ,'2.1.2' 
gem 'cancan', '1.6.8' 
gem 'bootstrap-datepicker-rails', "0.6.32" 
gem 'country_select', '1.1.3' 
gem 'jquery-rails', '2.1.4' 
gem 'annotate', '2.5.0', group: :development 
gem 'ransack', '0.7.2' 
gem "audited-activerecord", "3.0.0" 
gem 'prawn', '1.0.0.rc2' 
gem 'exception_notification', '3.0.1' 
gem 'daemons', '1.1.9' 
gem 'delayed_job_active_record', '0.4.3' 
gem "delayed_job_web", '1.1.2' 
gem "less-rails" 
gem "therubyracer" 
gem 'twitter-bootstrap-rails', '~>2.1.9' 
gem "spreadsheet", "~> 0.8.8" 

# Gems used only for assets and not required 
# in production environments by default. 
group :assets do 
    gem 'sass-rails', '3.2.5' 
    gem 'coffee-rails', '3.2.2' 

    # See https://github.com/sstephenson/execjs#readme for more supported runtimes 
    # gem 'therubyracer', :platforms => :ruby 

    gem 'uglifier', '1.2.3' 
end 

# To use ActiveModel has_secure_password 
# gem 'bcrypt-ruby', '~> 3.0.0' 

# To use Jbuilder templates for JSON 
# gem 'jbuilder' 

# Use unicorn as the app server 
# gem 'unicorn' 

# Deploy with Capistrano 
# gem 'capistrano' 

# To use debugger 
# gem 'debugger' 

group :development, :test do 
    gem 'rspec-rails', '2.11.0' 
end 

group :test do 
    gem 'capybara', '1.1.2' 
    gem 'factory_girl_rails', '4.1.0' 
    gem 'faker', '1.0.1' 
end 

我在 http://ruby.railstutorial.org/閱讀本偉大的書後,開始對這個應用程序的工作,去年(2012年11月)。我還檢查了Rails 4中的新功能,如強大的參數,嘗試升級都很誘人。

但我擔心這些寶石的兼容性和它可能需要付出的努力。

我需要一些來自社區有經驗的人的建議或者在我繼續前嘗試升級的人。

回答

28

我把你的gemfile上傳到了Ready for Rails 4,看起來你只有幾顆沒有準備好的寶石和一顆未知的寶石。對於沒有筆記的一些寶石,我建議查看他們的GitHub頁面(如果他們有一個),並查看寶石是否最近在rubygems上更新過,以確認寶石是否工作。

4

資產管道已經發生了一些變化,所以您需要升級這些寶石。我必須在active_admin的上下文中使用ransack分支,但是您可能會很好。

我建議你創建一個分支,碰到Rails 4,看看會發生什麼。幾個星期前,我花了一兩天的時間將它從3.2升級到了4,這是一個相當小的(但是生產與客戶)應用程序。 upgrade guide非常穩固。

8

這本簡短的手冊在我們最近的3.2到4次遷移中是值得的。

https://leanpub.com/upgradetorails4

https://github.com/alindeman/upgradingtorails4

它列出了詳細說明了如何有什麼變化,以及如何通過升級來管理當前的Rails應用程序處理的寶石升級,以及個別細節(有明顯的例子)。爲了解決你的寶石特定的問題:幾乎我們所有的40+寶石,除了5號外,都有活動的Rails 4版本(或者Rails 4的Github分支),或者在Rails 4保持完好時工作得很好。

在您的代碼庫中安裝健康的單元/功能測試套件對於您升級成功的信心至關重要。

+0

此鏈接現在轉到鏈接農場! – tronmcp

+0

啊。這本書最近是開源的。在答案中更改鏈接指向新來源和Github回購。 – changingrainbows