トップ «前の日記(2012-04-30) 最新 次の日記(2012-05-02)» 編集

2012-05-01 [長年日記]

_ RailsAdmin試して簡単にTypusと比較してみた

調べた当時見つけることができなかったので普段は Typus を使っているんだけど、Rails 3.2 で動かないっぽいのと、Mongoid と組み合わせて使ってみようと思ったら

Typus はユーザーDBが ActiveRecord を利用する前提になってる

のにガックリきて RailsAdmin を試してみた。

というわけで以下は簡単な比較。

Typus

http://www.typuscmf.com/

  • Model に対応する admin 用の Controller を作る必要がある
  • 加えて Model に対する編集権限や読み書きできる field を YAML で定義する必要がある

YAML を作るということさえ分かればカスタマイズは楽にできるし、生の Controller ができるのでこれをいじれば動きを変えられるということが簡単に想像できる。

手間は多いけどどうすればカスタマイズできるかが分かりやすいのがメリット。

画像などのファイルについては

  • PaperClip や Dragonfly を使った画像の preview からさらに lightbox 系の機能まで組み込み済み
デメリット
  • Rails 3.2 はたぶん未対応
  • 認証用のユーザー DB が ActiveRecord 前提なのでフル Mongoid にできない
  • Typus 用に Model に手を加える必要がある場合がある。これがパフォーマンスに影響しそうでちょっとイヤな感じ。

RailsAdmin

https://github.com/sferik/rails_admin

  • Rails 3.1+ 以降対応 ( sass などが前提 )
  • デザインがイマドキ
  • 設定用 YAML や admin 用 Controller を作らなくてもいきなり管理できる
  • Mongoid フル対応
  • 認証は基本 devise 依存だが最初のセットアップが親切なので Mongoid や devise が分かってなくても準備できる
  • カスタマイズは initilizers/rails_admin.rb の中で config.model ModelName do end のような形で記述する。

例えば画像の preview サイズの設定は

config.model ModelName do
  field :FIELD do
    thumb_method '200x200'
  end
end

みたいに書く。

最初の準備は RailsAdmin の方が楽かも。少なくともたくさんファイル作らなきゃいけない*1という面倒くささはない。

  • 管理画面から触れてほしくない Model なんかも config.excluded_models で設定できる。ユーザー別にどうするかまでは調べてない。
  • カスタムコントローラとかたぶん作れるけどよく分かってない

カスタマイズのノウハウ次第のところはあるけど、

  • Rails 3.2 対応
  • 見た目のかっこよさ
  • Controller や YAML を用意しまくらなくてもとりあえず動く

これはとても良いと思う。

  • image の popup preview ( Lightbox 的なアレ ) はないみたい

だけど、管理画面だし、オリジナルの画像を確認できるだけで十分ちゃ十分かも。

残念なところ
  • JS の効果の仕上げが粗い。popup が残りっぱなしになったりする
  • バージョン 0.0.1 は不安になる。安定して使えるならそれなりのバージョンにしてほしい。

認証の外し方

Typus の場合は initializer で

Typus.setup do |config|
  # Define authentication: +:none+, +:http_basic+, +:session+
  config.authentication = :none
end

すればいいというのが設定ファイルを見ればコメントですぐ分かるんだけど、RailsAdmin の場合はよく分からなかったので設定ファイルの中を読んでいたら Proc.new {} という記述をそこかしこで見かけたので試しに

RailsAdmin.config do |config|
  # ignore authentication
  config.authenticate_with do; end
end

こんな感じに authenticate_with の中身を空にしたら認証がスルーされた。というわけでこれを

config/environments/development.rb

に書けば開発環境でだけ認証が外れる。

Tags: Rails Ruby

*1 実際には generator が作っているとしても、正しく配置しておかなきゃいけないことには違いがない