|

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Yapra: クラスベースのプラグインの書き方とファイル配置、パスの通し方

Yapra のプラグインには

  • legacy なもの
  • class base なもの

の 2種類あり、新たに自作する場合はクラスベースな方が推奨されているらしい。

参考: とりあえずネタ振り的なものを - yapra | Google グループ

以下、クラスベースのプラグイン自作についてメモ。


Ruby の $LOAD_PATH/foo/bar/ が含まれていると、 その下のディレクトリ階層がクラスの階層に対応する。

たとえば設定ファイルをこのように書きたい場合、

- module: Foo::BarBaz
  config: #...

プラグインを次のように書き、 /foo/bar/yapra/plugin/foo/bar_baz.rb (={ロードパスの通ったディレクトリ}/yapra/plugin/foo/bar_baz.rb) として保存する。


require "yapra/plugin/base"
 
module Yapra::Plugin::Foo
  class BarBaz < Yapra::Plugin::Base
    def run(data)
      puts "plugin Foo::BarBaz"
      p config
      # ...
      return data
    end
  end
end

クラスベースのプラグインを自作して使いたいが Yapra のインストールされているディレクトリや site_ruby には余計なものを入れたくない。 かといってわざわざ gem にするほどでもない。 そういう場合は、Ruby の -I オプションを使って別のディレクトリを指定するのが良いかもしれない。

そこで、次のようなシェルスクリプトを用意した。


#!/bin/bash
 
YAPRA_DIR=~/my-yapra/yapra
MY_PLUGIN_DIR_CLASS_BASE=~/my-yapra/my-dir-class-base
 
ruby -I ${YAPRA_DIR}/lib \
     -I ${MY_PLUGIN_DIR_CLASS_BASE} \
     ${YAPRA_DIR}/bin/yapra \
     "$@"

レガシーなプラグインも使いたい場合は (Ruby ではなく Yapra の) -p オプションで指定する。


#!/bin/bash
 
YAPRA_DIR=~/my-yapra/yapra
MY_PLUGIN_DIR_CLASS_BASE=~/my-yapra/my-dir-class-base
MY_PLUGIN_DIR_LEGACY=~/my-yapra/my-dir-legacy
 
ruby -I ${YAPRA_DIR}/lib \
     -I ${MY_PLUGIN_DIR_CLASS_BASE} \
     ${YAPRA_DIR}/bin/yapra \
     -p ${MY_PLUGIN_DIR_LEGACY} \
     "$@"

Windows XP でも次のようなバッチファイルで同じように動かせました。

- ruby 1.9.2p136 (2010-12-25 revision 30365) [i386-mswin32]
- Yapra 0.1.3

@echo off

set YAPRA_DIR="c:\dev\yapra"
set MY_PLUGIN_DIR_CLASS_BASE="C:\dev\yapra\my-plugin\class-base"
set MY_PLUGIN_DIR_LEGACY="C:/dev/yapra/my-plugin/legacy"

ruby192.bat ^
  -I "%YAPRA_DIR%\lib-plugins" ^
  -I "%MY_PLUGIN_DIR_CLASS_BASE%" ^
  "%YAPRA_DIR%\bin\yapra" ^
  -p "%MY_PLUGIN_DIR_LEGACY%" ^
  %*

関連記事

参考(外部リンク)

スポンサーサイト



** ホームに戻る

|
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。