読者です 読者をやめる 読者になる 読者になる

あざらし備忘録。

渋谷ではたらく音ゲー大好きウェッブエンジニアがいろいろ思った事やった事を書いていくブログです

EC on Rails!Spree使ってみた[Rails][Ruby][Spree]

RubyECサイト作るとしたらどんな流れになるんだろうなーと興味本位で調べて行ったらSpreeというECサイト構築用フレームワークが見つかったので試してみました。

Spreeって?

Rails上で動くECサイト構築用フレームワークです。

spree/spree · GitHub

日本ではまだまだあまり事例がないようですが、海外では人気があるとのこと。

日本だとメガネ通販(眼鏡・めがね)のOMG(オーマイグラスィズ)さんが使われているとのことです。

使ってみる

githubのREADMEを見つつ、インストールしてみます。

前もって、環境としてImageMagickが必要との事なので、入れておきます。

まずはRailsプロジェクトを作成。

rails new myway -T -d mysql --skip-bundle

とかで。

Gemfileに以下の2つのgemを追加。

gem 'spree', github: 'spree/spree', branch: '2-3-stable'
gem 'spree_auth_devise', github: 'spree/spree_auth_devise', branch: '2-3-stable'

spree本体のgemと、spreeの認証周りのgemを入れます(spree_auth_deviseは入れなくても本体は動く)

そしてbundle install!

bundle exec --path vendor/bundle

これで一式gemが入ったら、次のコマンドでspreeをrailsプロダクトにインストール。

bundle exec rails g spree:install --migrate=false --sample=false --seed=false

DBマイグレートやseed生成、サンプルデータインサートを回避したければこのコマンドを叩く。

回避した上でやれたければ次のように叩く。

bundle exec rake railties:install:migrations
bundle exec rake db:migrate
bundle exec rake db:seed
bundle exec rake spree_sample:load

また、

At this point, if you are using spree_auth_devise you will need to change this line in config/initializers/spree.rb:

とあるので、config/initializers/spree.rbを以下のように編集する。

Spree.user_class = "Spree::LegacyUser"

から、

Spree.user_class = "Spree::User"

へ。

サーバ起動。

bundle exec rails s

立ち上がったサーバー(自環境だとlocalhost:3000)にアクセスしてみる。

f:id:shiro_goma:20140925000903p:plain

!?

も、もうなんかそれっぽいものができてる...!

更にlocalhost:3000/adminにアクセスすると...?

f:id:shiro_goma:20140925001704p:plain

ログイン画面が出て...?ログインすると...?

f:id:shiro_goma:20140925001725p:plain

ひっ...なんか管理画面っぽいものが...!

もうちょっとデザインとか手を入れたらそのまま稼働できそうな勢い...

いきなり出来過ぎて紹介しきれていないですが、フロント側の画面的にはすでに商品選択->クレジットカード決済もしくは現金払い選択->住所入力->配送手続き完了といった一連の流れがすでに出来るようになっています。

カート機能も実装済み。

恐ろしい...

管理画面側も注文情報管理、商品情報管理、売上レポート管理、サイト情報設定管理、プロモーション管理(クーポン)、ユーザ管理といったECサイトっぽい機能がもうひと通り揃っています。

とりあえずコードに一切触れずにこんな展開になったので何がなんだかといった感じですが、理解できれば非常に強力なことはよくわかりました。

spreeのコードは./vendor/bundle/ruby/version/bundler/gems/下に置いてあるので、じっくり読んでいきたいと思います。

とりあえず今回はここまで。ひとまず感動いたしましたmm