URLによるプラグインへのアクセス

プラグインの機能として,外部から呼び出すこと(Nucleusで言えばActionのところ)が必要なわけですが,一応RESTfulを意識して実装しておきました。以前から気になっていたresource_hacksプラグインを使うことでmap.resourcesに対して名前付きのアクセスができるようにしています。将来はほかの部分もこれを使って書きなおすかもしれません。

というわけでルート定義は次のような簡単なもの
map.resources :plugins, :member_path => '/plugin/:permalink'

plugins_controllerもいたってシンプル
class PluginsController < ApplicationController
  before_filter :find_plugin
  delegate :index, :show, :new, :edit, :create, :update, :destroy, :to=>"@plugin.main"

  private
  def find_plugin
    if !(@plugin = Plugins.find_by_plugin_name(params[:permalink]))
      return false
    else
      @plugin.main.params = params
    end
  end
end

delegateで委譲してしまっているので,ほとんどやることがありません。唯一パラメータを受け渡せるようにしておかないといけないので,FoodynPlugin::Mainクラスにparamsインスタンス変数を加えています。
attr_accessor :params

ちょっと注意しないといけないのはプラグインのメインの中ではidex, show, new, edit, create, update, destroyメソッドは外部から簡単に呼ばれてしまうことです。セキュリティホールになる恐れがあります。

プラグイン関係は,実装はまだまだやることがありますが,基本的な仕組みは全部できたので,マルチカテゴリーとタグのサポートを次に実装しようかと思います。


03 May, 2008 | Foodyn ( プラグイン ) | | Andy
« Prev item - Next Item »
---------------------------------------------

Comments


No comments yet. You can be the first!


Leave comment

© 2007 yoursite.com | Designed by DesignsByDarren
Ported to Nucleus CMS: Suvoroff