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