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

vagrant内のrails serverにアクセスできない

vagrantでubuntuを起動、ruby on railsをインストールして

$ rails s

=> Booting WEBrick
=> Rails 4.2.0 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2015-02-07 05:49:04] INFO  WEBrick 1.3.1
[2015-02-07 05:49:04] INFO  ruby 2.2.0 (2014-12-25) [x86_64-linux]
[2015-02-07 05:49:04] INFO  WEBrick::HTTPServer#start: pid=2359 port=3000

としてサーバー起動

vagrantで固定IP 192.168.33.10 をふって、port 3000でつながるようにしておいたので
http://192.168.33.10:3000/
で、ブラウザにアクセス..がアクセスできない

rails s のコンソールにも反応が無いです
ping 192.168.33.10は通る

rails 2.2からは localhost しかつながらないらしい

$ rails s -b 0.0.0.0
とするとどのアドレスからもつながるようです

これで解決しました