Railsで使えるGem

Rails4.1に対応したRefinery CMS 3.0を試してみた

投稿日:

Refinery CMS

Refinery CMSはRails製のCMS.
特にWebの知識がなくてもサイトを管理できる仕組み.

公式

refinerycms.com/

Github

github.com/refinery/refinerycms

試した環境

Ruby 2.1.2p95
Rails 4.1.4
Refinery CMS 3.0.0

事前にImageMagicをインストールしておく必要がある.

Gemfile

generate

cmsの導入

基本的な管理画面を導入する

application.html.erbの削除

Spreeなどと同じくオーバーライドする方式なので、自分のアプリのlayout/application.html.erbが残っていると、refineryのapplication.html.erbを使わず不都合が起きる.
ので、削除しておく.

config関係のgenerate

基本的な設定ファイルの作成

翻訳関係の設定ファイルの作成

configファイル

core.rb

Company Nameをコメントアウトして設定する

i18n.rb

デフォルト言語を日本語にしておく

起動

rails s でサーバーを起動して、サーバーアドレス:3000/refineryにアクセスすると初期ユーザーを登録できる

screenshot

管理画面

ダッシュボード
screenshot

ユーザー管理
screenshot

画像管理
screenshot

ファイル管理
pdfなども管理可能
screenshot

ページ管理
screenshot

トラブルシューティング

ページが見つからないというエラー

rails g refinery:pages としておくと、初期ページが作成されることがある.
ただ、日本語環境にしているため、表示ができずエラーとなってしまうことがある.
これらは管理画面からも削除できない.
この場合、サンプルはいったんconsoleから削除すればよい.
なお、ルートのページはdestroy!でないと削除できない.

Menuが出てこない

ページの詳細画面でメニューに表示をチェックすればページへのリンクが表示されるはず.
メニュー自体が出てこない場合は、application.html.erbを削除していない可能性がある.

ルートのページを作りたい

ページの詳細画面で、「ほかのウェブサイトやページに転送する」で、/を指定すれば、なぜかルートページになる.
screenshot

サイトの構造

よくあるHTML5サイトの構造

新しいページパーツの追加

デフォルトでは、ページごとにSide Bodyというパーツを追加するかどうかを選べるだけ

rails g refinery:pages で、config/initializers/refinery/pages.rbを追加して、次の設定をする.

これでページ編集の際に、右上にあたらしいパーツを追加するボタンが表示されるようになる

screenshot

新しいEngineの追加

Engineとは

RailsのEngineは、要するにRailsアプリ内Railsアプリみたいな仕組み.
詳しくは次を参照
Getting Started with Engines
#277 Mountable Engines
使いやすくなった Rails 3.1 の Engine

Refineryでは新しくEngineを作って、ブラウザ上でコンテンツの追加・編集・削除などができるようになる.

Engineの作成

試しにBlogという新しいEngineをつくってみる.
要素はRailsのScaffoldとほぼ同じだけど、imageというrefineryのコンテンツを使えたりする.

Engineの追加

最後に出てきた次の指示に従う

Strong Parameters

サイトエディタにBlogsという項目ができている
screenshot

RailsのScaffoldと同じく適切なフォームを自動で設置してくれる
screenshot

Imageの場合はアップロードできるようになる
screenshot

しかし、記事を作成することはできない.
Please override blog_params with your desired parameter security.というStrong Parametersがらみっぽいエラーが出てくる.
screenshot

このあたりの議論を参考にStrong Parametersを設定する.
具体的には、admin以下のコントローラーで、blog_paramsを設定する.
imageの場合は、image_idを許可することに注意.

これで無事に新しいBlogが登録できる.
screenshot

acts_as_indexedでの検索に対応する

AdminページでBlogsを検索しようとすると、undefined method `with_query’ for #

これは、EngineでつくったModelに、acts_as_indexedと書いてないから.
EngineでつくったModelのコメントどおりにacts_as_indexedと書けばエラーが出ず検索できるようになる.
ただし、日本語での検索には対応していない様子.

情報

カテゴリー :refinery Ruby on RailsでWebサイト公開!に挑戦中
“refinerycms” でタグ付けされたコンテンツ | Design Recipe 別館 Blog

-Railsで使えるGem
-

執筆者:

関連記事

Rails3.2でFacebook風インターフェイスでタグづけ〜acts-as-taggable-on+jquery.tokenInput

By: Mauquoy Token Company – CC BY 2.0 railscasts.com/episodes/258-token-fields?language=ja&#03

CarrierWaveで添付したファイルをrroongaで全文検索

By: Alan Levine – CC BY 2.0 目次1 Carrierwave2 rroonga3 Gemfile4 application.rb5 config/initiali …

状況に応じてRailsのフォームの種類を変える

  前提 railsでdocxを生成する動画 docxを生成するアプリは変数を自動で読み込むけど、状況に応じてフォームの種類を変えたい. Railsでは変数に応じてフォームの種類を用意してい …

simple_formからdatepickerを使うには~ui_datepicker-rails3

  github.com/kristianmandrup/ui_datepicker-rails3 目次1 Gemfile2 js3 css4 initializer5  使う6 できた G …

連続的な位置情報の取得とHerokuへのアップ~HTML5 Geolocation API

  目次1 連続的な位置情報の取得2 heroku3 結果 連続的な位置情報の取得 連続的な位置情報の取得はこんなかんじで書いてみた [crayon-59e63538e8b6f6766557 …