I'm looking into updating this enormous web site. Its huge. It uses Ruby 1.9.3-p448, Rails 3.2.17, and Spree 2.0.0. I'd love to push it to Ruby 2.1.1, Rails 4.1-stable, and Spree 2.1.0.
First things first:
I went to the gemfile and on line 2 wrote ruby '2.1.1'
. This is to do number 1: upgrade the language itself. In the terminal I did the usual bundle
and got an error. Discovered the debugger gem doesn't work in 2.x territory. Highlighted it. Pushed delete. Chuckled. Ran bundle
. Smiled of delight as it was so nice to see everything work with such a complex system.
Then I ran bundle exec rake db:test:prepare
...
First error:
rake aborted!
cannot load such file -- iconv
/Users/benamorgan/.rvm/gems/ruby-2.1.1/gems/polyglot-0.3.4/lib/polyglot.rb:65:in `require'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/gems/polyglot-0.3.4/lib/polyglot.rb:65:in `require'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activesupport/lib/active_support/dependencies.rb:251:in `block in require'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activesupport/lib/active_support/dependencies.rb:236:in `load_dependency'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activesupport/lib/active_support/dependencies.rb:251:in `require'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/gems/csv_builder-2.1.0/lib/csv_builder.rb:14:in `<top (required)>'
/Users/benamorgan/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.5.3/lib/bundler/runtime.rb:76:in `require'
/Users/benamorgan/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.5.3/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
/Users/benamorgan/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.5.3/lib/bundler/runtime.rb:72:in `each'
/Users/benamorgan/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.5.3/lib/bundler/runtime.rb:72:in `block in require'
/Users/benamorgan/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.5.3/lib/bundler/runtime.rb:61:in `each'
/Users/benamorgan/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.5.3/lib/bundler/runtime.rb:61:in `require'
/Users/benamorgan/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.5.3/lib/bundler.rb:131:in `require'
/Users/benamorgan/Sites/not_getting_name_of_site/config/application.rb:7:in `<top (required)>'
/Users/benamorgan/Sites/not_getting_name_of_site/Rakefile:5:in `require'
/Users/benamorgan/Sites/not_getting_name_of_site/Rakefile:5:in `<top (required)>'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in `eval'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in `<main>'
(See full trace by running task with --trace)
OK... In the gemfile...
gem 'iconv'
run bundle exec rake db:test:prepare
again after a bundle
:
Digest::Digest is deprecated; use Digest
rake aborted!
no implicit conversion of nil into String
/Users/benamorgan/.rvm/gems/ruby-2.1.1/gems/mysql2-0.3.13/lib/mysql2/client.rb:58:in `connect'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/gems/mysql2-0.3.13/lib/mysql2/client.rb:58:in `initialize'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `new'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb:16:in `mysql2_connection'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:315:in `new_connection'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:325:in `checkout_new_connection'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:247:in `block (2 levels) in checkout'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:242:in `loop'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:242:in `block in checkout'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:239:in `checkout'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:102:in `block in connection'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:101:in `connection'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:410:in `retrieve_connection'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb:171:in `retrieve_connection'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb:145:in `connection'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activerecord/lib/active_record/model_schema.rb:224:in `table_exists?'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activerecord/lib/active_record/attribute_methods.rb:122:in `attribute_method?'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/spree-9c3a61024d8c/core/lib/spree/core/delegate_belongs_to.rb:40:in `block in delegate_belongs_to'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/spree-9c3a61024d8c/core/lib/spree/core/delegate_belongs_to.rb:39:in `each'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/spree-9c3a61024d8c/core/lib/spree/core/delegate_belongs_to.rb:39:in `delegate_belongs_to'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/spree-9c3a61024d8c/core/app/models/spree/gateway.rb:3:in `<class:Gateway>'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/spree-9c3a61024d8c/core/app/models/spree/gateway.rb:2:in `<module:Spree>'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/spree-9c3a61024d8c/core/app/models/spree/gateway.rb:1:in `<top (required)>'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/gems/zeus-0.13.3/lib/zeus/load_tracking.rb:50:in `load'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/gems/zeus-0.13.3/lib/zeus/load_tracking.rb:50:in `load'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activesupport/lib/active_support/dependencies.rb:469:in `block in load_file'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activesupport/lib/active_support/dependencies.rb:639:in `new_constants_in'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activesupport/lib/active_support/dependencies.rb:468:in `load_file'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activesupport/lib/active_support/dependencies.rb:353:in `require_or_load'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activesupport/lib/active_support/dependencies.rb:502:in `load_missing_constant'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activesupport/lib/active_support/dependencies.rb:192:in `block in const_missing'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activesupport/lib/active_support/dependencies.rb:190:in `each'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activesupport/lib/active_support/dependencies.rb:190:in `const_missing'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/spree-9c3a61024d8c/core/lib/spree/core/engine.rb:59:in `block in <class:Engine>'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/railties/lib/rails/initializable.rb:30:in `instance_exec'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/railties/lib/rails/initializable.rb:30:in `run'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/railties/lib/rails/initializable.rb:55:in `block in run_initializers'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/railties/lib/rails/initializable.rb:54:in `each'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/railties/lib/rails/initializable.rb:54:in `run_initializers'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/railties/lib/rails/application.rb:136:in `initialize!'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/railties/lib/rails/railtie/configurable.rb:30:in `method_missing'
/Users/benamorgan/Sites/not_getting_name_of_site/config/environment.rb:5:in `<top (required)>'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/gems/polyglot-0.3.4/lib/polyglot.rb:65:in `require'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/gems/polyglot-0.3.4/lib/polyglot.rb:65:in `require'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activesupport/lib/active_support/dependencies.rb:251:in `block in require'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activesupport/lib/active_support/dependencies.rb:236:in `load_dependency'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/activesupport/lib/active_support/dependencies.rb:251:in `require'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/railties/lib/rails/application.rb:103:in `require_environment!'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bundler/gems/rails-a3bda3846737/railties/lib/rails/application.rb:305:in `block (2 levels) in initialize_tasks'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in `eval'
/Users/benamorgan/.rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in `<main>'
Tasks: TOP => db:test:prepare => db:abort_if_pending_migrations => environment
(See full trace by running task with --trace)
My question here really isn't how do I fix this or why is it all breaking, but do you have any pointers? How do I find out where Digest::Digest
is coming from? We aren't using it in the site, therefore its a gem problem. I'm probably going to have to deal with more of those "deprecation" warnings, so before I blow hours and hours on it, I just need to know if anyone else has had to go through anything of what I'm attempting right now.
Horror stories much appreciated.