RailsのECオープンソース「Solidus」に「solidus-blogging」を使ってブログ機能を搭載する

solidus logo

ECサイトのコンテンツ充実を目指して

RailsのECオープンソースSolidus(Spreeの後継)は、純粋な商品管理のみを提供してくれます。それでも十分満足のいくものですが、サイトへの流入を少しでも増やすためにと、記事を投稿してサイト内のコンテンツの充実を図ろうと考えました。

「solidus blog」でググった結果、「SolidusBlogging」というGemがヒットしました。とりあえずこいつを組み込んでみようと思います。

Gemfile
gem 'solidus_blogging', github: 'digitalreflow/solidus-blogging'

環境

ちなみに、後述の説明は以下の環境で行いました。ご参考まで。

  • Ruby2.3
  • Rails 5.0
  • Solidus 2.0

Solidus Bloggingを組み込むまで

acts-as-taggable-onのインストール

solidus_bloggingのGemをbundle installすると依存関係で「acts-as-taggable-on」というGemも一緒にインストールされます。

インストール後のメッセージでも表示されますが、acts-as-taggable-onの初回インストール時、もしくはアップデート時はマイグレーションファイルを生成する必要があります。マニュアルにしたがい作成してみます

github: acts-as-taggable-on

$ bundle exec rake acts_as_taggable_on_engine:install:migrations

しかしエラーが起こりました。

rakeタスクがないって怒られた!
Don’t know how to build task ‘acts_as_taggable_on_engine:install:migrations’

そんなrakeタスク知らねえ!と、言われ、マイグレーションファイルが作成できません(汗)

どうやらデフォルトのRailsエンジンを使用していないとこのエラーが出るようです(未確認ですが)。Solidusでは、Solidusエンジンをマウントしているため、これをどう解決するか。ここが正直悩みどころでした。

engine.rbに追記

調べてみると、Stack Overflowに下記のQ&Aがありましたので、早速試してみることに。

エンジンファイルに直接acts-as-taggable-onをrequireすればよいとのこと。(このやり方はどうなの?という疑問はさておき)

Stack Overflow: Running acts-as-taggable-on in engine

// Gem保存ディレクトリ/solidus_core-2.0/lib/spree/core/engine.rb
module Spree
 module Core
  class Engine < ::Rails::Engine
   require 'acts-as-taggable-on'
   ~ 省略 ~
  end
 end
end

これでもう一度、rakeコマンドを実行すると無事マイグレーションファイルが作成されました。データベースがMySQLの場合は、さらにもうひとコマンドあるみたいです。ご注意を。

ようやくsolidus_bloggingをデータベースに

あとはsolidus_blogging用のマイグレーションファイルを作成して、db:migrateで実行するのみです。

$ bundle exec rake railties:install:migrations
$ bundle exec rake db:migrate

いかがでしょうか。問題なく実行されたと思います。

Adminページにブログメニューが!

blog menu on solidus sidebar
テストサーバーを起動して、Solidusのadminページにログインしてみましょう。ページ左のメニューバーに「Blog」と表示されているはずです。

これでインストールは無事終了です。ブログ表示部分をカスタマイズしたい場合、Solidusと同じようにDefaceやclass_evalなどを使用して自身のサイトに合うようにしてください。

Solidus Bloggingの使い方

そんなに難しいことはないです。特に複雑なコードでもないので、githubでソースを見れば一通り理解できると思いますが、また後日に書きたいと思います。今回のところはここまで。

後日に書きました。→【solidus-blogging】Solidusでブログを投稿する

以上、Solidusにブログ投稿機能を搭載するまでの流れでした!

【追記】Solidus Bloggingのバグ

画像付き記事を投稿しようとするとエラーが発生しました。画像がない場合は問題なく投稿できました。

ログなどを見て、バグに対応しました。→ 【solidus-blogging】画像アップロードする時にエラーが起こる

ご精読ありがとうございました!

(Visited 175 times, 1 visits today)