xxxcaqui.log

ツッコミお待ちしています

Spree2.0をいじってみた。

今年の3月にSpreeの2.0がリリースされたので、いじってみました。

Spreeとは

Rails上でECサイトを簡単に作るためのgemです。
オープンソースで、Githubにて開発されています。

Spreeの特徴を公式サイトから引っ張ってくるとこんな感じ。

  • 全員のニーズを満たすのは無理(90%は用意してやるから10%は書け)
  • スーツではなくギークのために(EC-CUBEとは違うのだよEC-CUBEとは!)
  • 開発者には完全なコントロールを(いつだってビジネスドメインは強敵だ)
  • CMSではない(CMSが欲しけりゃRadiantでも使ってくれ)

環境

何はともあれSpreeを入れてみる

Getting startedに沿って設定していきます。

$ sudo apt-get install imagemagick
$ gem install rails bundler spree_cmd
$ rails new mystore
$ cd mystore
$ spree install
$ rails s

これで、ECサイトのサンプルが立ち上がります。*1

ショップ画面

f:id:xxxcaqui:20130523011933p:plain

管理画面

f:id:xxxcaqui:20130523012444p:plain

エクステンション

Spreeには、アプリケーションを拡張するためのエクステンションが存在します。
Spree Extension Registryには、現在320個ほど登録されています。

エクステンションを入れてみる

ここでは、spree_fancyというエクステンションを入れてみます。

#Gemfile
gem 'spree_fancy', git: 'git://github.com/spree/spree_fancy.git'
$ bundle install
$ bundle exec rails g spree_fancy:install
  append  app/assets/javascripts/store/all.js
  append  app/assets/javascripts/admin/all.js
  insert  app/assets/stylesheets/store/all.css
  insert  app/assets/stylesheets/admin/all.css
     run  bundle exec rake railties:install:migrations FROM=spree_fancy from "."
     run  bundle exec rake db:migrate from "."
==  AddSliderTaxonsAndApplyThem: migrating =================
==  AddSliderTaxonsAndApplyThem: migrated (1.0647s) ========
spree_fancy適用後のショップ画面

f:id:xxxcaqui:20130523015721p:plain

spree_fancyの削除

さくっと調べた感じだと、spree_fancyを一発でアンインストールできるコマンドはありません。

インストール時に表示された

  • app/assets/javascripts/store/all.js
  • app/assets/javascripts/admin/all.js
  • app/assets/stylesheets/store/all.css
  • app/assets/stylesheets/admin/all.css

あたりのspree_fancyに関する記述を削除すれば、とりあえずはspree_fancy適用前の状態に戻せます。

《2013-05-25 追記》
上で「とりあえず戻せる」と書きましたが、この方法で戻すと、後々日本語化をしたときにRoutingErrorが発生しました。
*2

エクステンションの作成

上記のspree_fancyのような便利なエクステンションですが、もちろん自分でも作ることができます。

作り方はこちらにあります。

このあたりは気が向いたら別エントリで書きます。気が向いたら。

*1:spree install実行時にバージョン関係のエラーが出ることがあります。その場合はGemfileで「gem 'spree_auth_devise', :git => 'https://github.com/spree/spree_auth_devise.git', branch: '2-0-stable'」などのようにbranchを指定してください。

*2:spree_fancyが使用しているテンプレートに含まれているnested_taxons_pathという名前付きルートにidを渡さなければならないところを、idなしで呼び出しているためにRoutingErrorが発生している模様。