13

我在 Rails 3.2 中有一个可以部署的应用程序。我想知道我是否应该将它升级到 Rails 4。我也不确定哪些宝石在升级时可能会出现问题。

下面是我的 Gemfile 和几个常见的 gem。

宝石文件.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

去年(2012 年 11 月)在 http://ruby.railstutorial.org/阅读了这本很棒的书后,我开始研究这个应用程序。我还检查了 Rails 4 中的新功能,例如强大的参数,尝试升级非常诱人。

但我担心这些宝石的兼容性以及可能需要付出的努力。

在我继续之前,我需要社区中经验丰富的人或尝试过升级的人的一些建议。

4

3 回答 3

29

我将您的 gemfile 上传到Ready for Rails 4,看来您只有几个尚未准备好的 gem 和一个未知的 gem。对于列出的一些没有注释的 gem,我建议查看他们的 GitHub 页面(如果有的话),看看 gem 最近是否在 ruby​​gems 上更新,只是为了确认 gem 是否有效。

于 2013-08-19T07:18:45.707 回答
9

在我们最近的 3.2 到 4 次迁移中,这本简短的手册物有所值。

https://leanpub.com/upgradetorails4

https://github.com/alindeman/upgradingtorails4

它详细列出了如何处理 gem 升级,以及更改的各个细节(带有清晰的示例)以及如何通过升级管理当前的 Rails 应用程序。

解决您特定于 gem 的问题:几乎我们所有的 40 多个 gem,除了可能 5 个之外,都有活动的 Rails 4 版本(或 Rails 4 的 Github 分支),或者在完好无损的情况下与 Rails 4 一起工作。

在您的代码库中拥有一个健康的单元/功能测试套件对于您对升级成功的信心至关重要。

于 2013-08-19T01:34:45.250 回答
6

资产管道发生了一些变化,因此您需要升级这些宝石。我不得不在 active_admin 的上下文中使用一个 fork of ransack,但你可能没问题。

我建议您创建一个分支,使用 Rails 4,看看会发生什么。几周前,我花了一两天时间在一个相当小(但与客户一起生产)的应用程序上从 3.2 升级到 4。升级指南非常可靠。

于 2013-08-18T22:50:33.227 回答