spree 2.6 から 3.0へバージョンアップする

rails 4.1.8 + spree 2.6
でECサイトを作っていましたが、spree 3.0が出てました

https://guides.spreecommerce.com/release_notes/spree_3_0_0.html

  • Bootstrap Backend & Frontend
  • Rails 4.2 Support
  • Google Analytics Enhanced Ecommerce

が主な対応みたいで、上げてみました

https://guides.spreecommerce.com/release_notes/spree_3_0_0.html

を参考に上げてみました
rails 4.2 + spree 最新にします

$ vim Gemfiles

source 'https://rubygems.org'

gem 'rails', '~> 4.2.0'
gem 'mysql2'
gem 'uglifier', '>= 1.3.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0',          group: :doc
gem 'spring',        group: :development

group :assets do
  gem 'sprockets-rails'
  gem 'sass-rails',   '~> 4.0.0'
  gem 'coffee-rails', '~> 4.0.0'
end

gem 'spree', github: 'spree/spree'
gem 'spree_auth_devise', github: 'spree/spree_auth_devise'
gem 'spree_gateway', github: 'spree/spree_gateway'

で最終的にはこんな形になりました

インストール
$ bundle update
$ bundle install
$ rake railties:install:migrations
$ rake db:migrate

で、あがったようです
bootstrapで見た目も変わりました

Spreeでundefined method `states’ for nil:NilClassのエラーが発生

Ruby on Rails 4.1.8
Spree 2.6-stable
でECサイトを作っていて、カートに商品をいれて次へ進むとエラーが発生

NoMethodError in Spree::Checkout#edit
Showing /home/vagrant/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/bundler/gems/spree-dcd415d3ea99/frontend/app/views/spree/address/_form.html.erb where line #38 raised:
undefined method `states' for nil:NilClass

spree_error

インストールしたばかりなのになぜ..と思ったら

https://github.com/spree/spree/issues/1142
で議論されてましたので参考に

$ rake db:seed

loading ruby /home/vagrant/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/bundler/gems/spree-984ecbce1d91/core/db/default/spree/countries.rb
loading ruby /home/vagrant/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/bundler/gems/spree-984ecbce1d91/core/db/default/spree/roles.rb
loading ruby /home/vagrant/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/bundler/gems/spree-984ecbce1d91/core/db/default/spree/states.rb
loading ruby /home/vagrant/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/bundler/gems/spree-984ecbce1d91/core/db/default/spree/stores.rb
loading ruby /home/vagrant/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/bundler/gems/spree-984ecbce1d91/core/db/default/spree/zones.rb
loading ruby /home/vagrant/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/bundler/gems/spree_auth_devise-0172d0450bef/db/default/users.rb
Admin user has already been previously created.
・・・

などとできあがる初期値を作ってやったら直りました

https://github.com/spree/spree/commit/9820b66bb8d11fc8826dbeead2c46bc1424b8efb
で直ったのかと思ったらだめみたいです

参考) Ruby on RailsにSpreeを入れてみた | bgbgbg

Gemfileのバージョンの指定の仕方

RubyのGemfilesへのバージョンの書き方を忘れるのでメモ

バージョンを4.1.8に固定する

gem "rails", "4.1.8"

バージョンを4.1.8以上の最新にする
4.2とか入ります

gem "rails", ">=4.1.8"

バージョンを4.1.8以上、4.1.xの最新が入ります
4.2以上にはなりません

gem "rails", "~>4.1.8"