ページ目次
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の初回インストール時、もしくはアップデート時はマイグレーションファイルを生成する必要があります。マニュアルにしたがい作成してみます
$ 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ページにブログメニューが!
テストサーバーを起動して、Solidusのadminページにログインしてみましょう。ページ左のメニューバーに「Blog」と表示されているはずです。
これでインストールは無事終了です。ブログ表示部分をカスタマイズしたい場合、Solidusと同じようにDefaceやclass_evalなどを使用して自身のサイトに合うようにしてください。
Solidus Bloggingの使い方
そんなに難しいことはないです。特に複雑なコードでもないので、githubでソースを見れば一通り理解できると思いますが、また後日に書きたいと思います。今回のところはここまで。
後日に書きました。→【solidus-blogging】Solidusでブログを投稿する
以上、Solidusにブログ投稿機能を搭載するまでの流れでした!
【追記】Solidus Bloggingのバグ
画像付き記事を投稿しようとするとエラーが発生しました。画像がない場合は問題なく投稿できました。
ログなどを見て、バグに対応しました。→ 【solidus-blogging】画像アップロードする時にエラーが起こる
ご精読ありがとうございました!
“RailsのECオープンソース「Solidus」に「solidus-blogging」を使ってブログ機能を搭載する” への4件の返信
コメントは受け付けていません。