Lokkaのプラグインの機能を修正しました。
komagata's lokka at master - GitHub
修正点
- プラグインのフォルダ名規則を変更(foo -> lokka-foo)
- プラグインフォルダを移動(/plugin -> /public/plugin)
フォルダ名はそもそもlokka/foo.rbだったのでオートロードの命名に従えばlokka-fooのハズ、というのと、プラグインをgemにするときのためです。(sinatra-logger, rack-flashみたいに。)
プラグイン命名規則は要は下記。
Dir["public/plugin/lokka-*/lib/lokka/*.rb"]
フォルダ移動はプラグイン内にcssや画像を置けるようにです。WordPress的に。
これはrbconfigというプラグインを試しに作ってみて、問題が出たところを修正した感じです。rbconfigプラグインは単にrubyインタプリタの情報を表示するrbconfigを出すだけのプラグインです。
# lokka-rbconfig/lib/lokka/rbconfig.rb
require 'rbconfig'
module Lokka
module Rbconfig
def self.registered(app)
app.get '/admin/plugins/rbconfig' do
haml :"plugin/lokka-rbconfig/views/index", :layout => :"admin/layout"
end
end
end
end
# lokka-rbconfig/views/index.haml
- content_for :head_last do
%link{:rel => 'stylesheet', :href => '/plugin/lokka-rbconfig/views/style.css', :type => 'text/css'}
%h2 RbConfig
%dl.rbconfigs
- Config::CONFIG.each do |key, value|
%dt= key
%dd= value
中身はこんな感じです。
問題点
作ってみてプラグイン機能の課題がいくつかできました。
- テンプレートの指定が冗長
- 管理画面や他のテーマのlayoutを利用する場合はテンプレート言語が同じである必要がある。(管理画面の場合はhaml限定になる)
- プラグインがページを持ってない場合もあるのでプラグイン一覧からリンクを貼っていいのか悪いのか、どこに貼ればいいのかわからない。(lokka本体にプラグインのページを知らせる方法が無い)
もしインストールしてみた方で自分用に修正した箇所とかあれば是非、気軽にpatchやpull requestしていただけるとありがたいです!