開発者目線でCMS選定しています。
ユーザーの要望を楽に満たせて、かつ開発しやすいものを選んでいると思います。
なぜCMSでRailsか?
- wordpressは嫌
- メンテナンスしやすい
- Paasで安く手軽に運用したい
- HTMLを書きたくない Slimがいい
- 処理量が多くないので、Railsでも遅くならないはず
- デザインは自分で頑張りたい
wordpressはPHPの特性のためか、HTMLと処理が同じソース内に存在します。 昨今MVCと口うるさく言われている開発者としては非常に気持ちが悪いです。またwordpress独自の実装方法を覚えないといけないのが最悪です。
wordpressの良い点は非開発者でもサイトが簡単に作れるところ。しかし現実はデザイナーさんだけでは解決できない要望が多いのも事実です。メンテナンスがしにくいwordpressよりもRailsで楽に要望に応えられる方がメリットが多いと判断しました。
どのCMSを使うか?
こちらのサイトを元に選定しました。
9 Best Ruby On Rails Content Management Systems (CMS) - HackHands
すべての候補CMSでdemoがあれば触って、documentやgithubのリポジトリを見ています。
主な選定基準
- 現在も開発が行われているか
- Rails3は嫌(遅い、文法違う)
- 長期的に使うつもり
- wordpressライクなPOSTができるか(demoページで確認)
- Rails4対応
選定プロセス
上記候補群から選定基準をあてはめると、、
- Refinery CMS
- Locomotive CMS
が残りました。
ほとんどgithubのリポジトリを見てはじいています。starがあまりにも少なかったり、masterブランチのコミットが最近活発でなかったりしたものです。
選定結果
表題の通り、Refinery CMSにしました。
Refinery CMSとLocomotive CMSの比較
Locomotive CMSの良い点
- 割とメジャー
- かなり開発が盛ん
- 日本語対応
Locomotive CMSの悪い点
- liquidというファイル形式(最悪)
- hamlみたいなものですが、これ必要??とかなり疑問です
- slimが使えない
- liquidという特殊な文法のため、slimが動かないようです
- yamlでコンテンツを管理する
- Railsから外れている?
- assetsを直接public以下に置くようdocumentationされていました
Refinery CMSの良い点
- Railsから外れない
- CMS独自の文法を覚える必要がない
- slimが使える
- 管理画面がシンプル
- wordpressのように、良くわかっていない管理者に勝手にアップデートされて、サイトを壊される心配がない(他のCMSも同じメリットはあります)
- 日本語対応
Refinery CMSの悪い点
まだ使いこんでいないので、悪い点が見えていません
Rails4でのインストール手順
rbenvなり、rvmを使ってgemの管理をしてください。
以下はrbenvを使っています。
mkdir {name}
cd {name}
vim Gemfile
# refinerycms関連を入れてください。その他は私の好みです。
source 'https://rubygems.org'
ruby '2.2.3'
gem 'rails', '4.2.5'
gem 'mysql2'
gem 'sass-rails'
gem 'uglifier'
gem 'coffee-rails'
gem 'therubyracer', platforms: :ruby
gem 'jquery-rails'
gem 'turbolinks'
# refinerycmsで必須
gem 'execjs'
gem 'refinerycms'
gem 'refinerycms-acts-as-indexed'
gem 'refinerycms-wymeditor'
gem 'refinerycms-authentication-devise'
gem 'slim'
group :development, :test do
gem 'rspec-rails'
gem 'factory_girl'
gem 'pry'
gem 'pry-doc'
end
group :development do
gem 'spring'
gem 'spring-commands-rspec'
gem 'quiet_assets'
gem 'thin'
gem 'better_errors'
gem 'binding_of_caller'
gem 'rubocop', require: false
gem 'bullet'
end
group :test do
# gem 'capybara'
# gem 'launchy'
# gem 'poltergeist'
# gem 'faker'
# gem 'fuubar'
end
:wq
bundle install --path vendor/bundle
bundle exec rails new -B -T -d mysql . # dbは自由に選択してください
vim config/database.yml # 自身の環境に合わせて設定してください
bin/rails g refinery:cms --fresh-installation
bin/rails g rspec:install # rspec書くつもりないのであれば不要です。
bundle exec spring binstub rspec # rspec書くつもりないのであれば不要です。
bin/rails s
open http://localhost:3000/refinery