v-crn Code Log

主に備忘録

SolidusでECサイトをつくる

Solidusを利用してECサイトをつくる手順をまとめました。

Solidusとは

SolidusはRuby on Rails製の電子商取引(E-Commerce, EC)システムです。商品管理やカート機能、会計システムといったECサイトに必要な基本機能を提供してくれます。

SolidusはSpreeというECシステムの後継であるため、Solidusについて調べるときは「Spree」をキーワードに検索するのも一案です。

導入方法

SolidusのREADME.mdの説明に沿って導入していきます。

github.com

前提

  • Rails 5以降
  • Imagemagickインストール済み(画像添付用Gem「Paperclip」が依存)  

Railsプロジェクトの作成

$ rails new solidus-ec-site --skip-bundle --skip-test

RailsはデフォルトでMinitestを生成しますが、SolidusではテストフレームワークとしてRSpecを使用するため、--skip-testによってMinitestを生成しないようにしておきます。

Gemのインストール

# Gemfile
gem 'solidus'
gem 'solidus_auth_devise'

Gemをbundleインストール。

$ bundle install --path vendor/bundle

  このように--path vendor/bundleをつけてbundle installすると/vendor/bundleディレクトリ以下にgemがインストールされます。

管理者アカウントと商品サンプルデータの作成

$ bundle exec rails g spree:install

途中で管理者アカウント情報の入力を求められます。何も入力せずにEnterキーを押すとデフォルトのメールアドレス(admin@example.com)、パスワード(test123)で登録されます。

Create the admin user (press enter for defaults).
Email [admin@example.com]: 
Password [test123]:

最後に

Solidus has been installed successfully. You're all ready to go! Enjoy!

と表示されたらOK!

ユーザー認証機能

$ bundle exec rails g solidus:auth:install

deviseの設定ファイルが作成されます。

create  config/initializers/devise.rb
      run  bundle exec rake railties:install:migrations FROM=solidus_auth_devise from "."
      run  bundle exec rake db:migrate from "."

エンジンの設定

$ bundle exec rake railties:install:migrations

エンジンについて詳しくは Rails エンジン入門 - Rails ガイド

DBのマイグレーション

$ bundle exec rake db:migrate

サーバー起動

$ bundle exec rails s

正常に起動できていればブラウザで以下のURLにアクセスできます。

ストアページ:http://localhost:3000/

SolidusTop
ストアページ

管理画面:http://localhost:3000/admin/

SolidusAdmin
管理画面

動作軽量化

development環境ではCSSJavaScriptを別々に読み込むため本番環境よりアプリの動作が遅いとのこと。

config/environments/development.rbにおいてconfig.assets.debugをtrueからfalseに変更するとdevelopment環境でのパフォーマンス向上が見込めます。

# config/environments/development.rb
config.assets.debug = false

テストについて

SolidusはテストフレームワークとしてRSpecを使用しています。 テストを書くときは事前にrspec-railsをインストールしておきましょう。

# Gemfile
group :development, :test do
  gem 'rspec-rails'
end
$ bundle update

エクステンション

Solidusはエクステンション(拡張機能)をインストールすることでブログや多言語対応など様々な追加機能を実装することができます。

https://extensions.solidus.io/

自分でエクステンションを書きたい場合はsolidus_cmdを利用できます。

Herokuへデプロイ

次のコマンドを順に実行します。

$ heroku login
$ heroku create アプリ名(任意。未入力の場合はランダムな単語を組み合わせてURLが生成される)
$ heroku pg:reset DATABASE
$ bundle exec rake assets:precompile
$ git push heroku master
$ heroku addons:create heroku-postgresql
$ heroku run rails db:migrate
$ heroku run rails g spree:install
$ heroku run rails g solidus:auth:install
$ heroku run rake railties:install:migrations
$ heroku restart