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
-

執筆者:

関連記事

no image

TwitterBootstrapRailsでエラーが出る件

    undefined method `less’・・・的なエラーが出た. とりあえず下のgemを足したら動いた.そのうち修正されるとおもう. [crayon-59 …

Rubyでdocxをいろいろ分析してみた

  目次1 解凍~minizip2 ファイルを開く~File.open3 全ファイルを解凍せずにzip内の必要なファイルだけを開く~zipruby4 置換~gsub5 xmlの操作~noko …

Rails3.2でリアルタイムメッセージング~Private_pub、Faye

  Railsで簡単に非同期通信ができるPrivate_pubというgemを試した もともとrubyにはFayeという非同期通信ができるgemがあったが、簡単に安全な接続ができる実装を加えた …

Rails3でajaxでD&Dでまとめてファイルアップロード2~jQueryFileUpload for Rails

  前提 Rails3でajaxでD&Dでまとめてファイルアップロード~jQueryFileUpload for Rails Ruby on Rails 3.2でファイルアップロード …

Backbone.jsで関連するモデルのREADとCREATE

By: woodleywonderworks – CC BY 2.0   ThoughtBotの本を読み進めてるけど私には買ってよかったと感じている ゾンビviewのワナを回避す …