从Rails 3.2升级到Rails 4

Bot*_*Bot 13 ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-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
Run Code Online (Sandbox Code Playgroud)

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

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

我需要社区中有经验的人或者在我继续前进之前尝试过升级的人的建议.

jvp*_*rin 28

我将你的gemfile上传到Ready for Rails 4,看起来你只有一些未准备好的宝石和一个未知的宝石.对于一些没有记录,我建议检查出自己的GitHub页面(如果他们有一个),看看创业板已经上了RubyGems最近更新上市的宝石,只是为了确认宝石是否有效.


cha*_*ows 9

在我们最近的3.2到4次迁移中,这本简短的手册值得每一分钱.

https://leanpub.com/upgradetorails4

https://github.com/alindeman/upgradingtorails4

它详细列出了如何处理gem升级,以及通过升级更改内容和如何管理当前Rails应用程序的个别详细信息(以及明确的示例).

为了解决您特定于宝石的问题:几乎所有我们的40多个宝石,除了5个之外,都有Rails 4版本(或者Rails 4的Github分支),或者在保留完好时与Rails 4一起工作.

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


Kyl*_*yle 6

资产管道已经发生了一些变化,因此您需要升级这些宝石.我必须在active_admin的上下文中使用hansack的分支,但你可能没事.

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