定数、変数、メソッド
プラグイン内で変数やメソッドを利用する方法です。
メソッド
Plugin.create :method_sample do
on_update do |s, ms|
uwa(ms) # リスナ内部なら定義より前で呼べる
end
# 不思議な力で存在を消す
def uwa(obj)
puts "(((#{obj}))) うわああああああ"
end
uwa(true) # プラグインDSL上から呼ぶには定義の後に書く
end
# uwa(true) # ここでは呼ぶことができない。メソッドはプラグインの内部でのみ呼べる
上記例では`uwa()`というメソッドを定義しています。メソッドの定義には、通常のRubyのそれと同じで`def`を使います。プラグインDSL内部で定義すれば、プラグイン固有のメソッドになるので、他のプラグインと名前が衝突してしまう心配はありません。
メソッドを定義できる範囲と呼べる範囲はどちらも Plugin.create do
から end
までの間です。
変数
ローカル変数
Plugin.create :local_variable_sample do
lex = nil # 変数の定義
on_update do |s, ms|
lex = ms # 上で定義した変数に代入される
local = ms # これは、onupdate do ... end の間でしか使えない
end
# 不思議な力で存在を消す
def uwa(obj)
puts "#{local}☛ (((#{obj}))) うわああああああ" # on_updateの中のlocalはアクセスできない
puts "#{lex}☛ (((#{obj}))) うわああああああ" # メソッド内ではプラグインの中で定義したローカル変数もアクセスできない
end
end
# lex # プラグインの外なのでアクセスできない
ローカル変数には大きく分けて二種類あります。
-
プラグインDSL上で定義した変数 例では`lex`です。プラグイン内のブロックからアクセスできます。メソッドからはアクセスできません。
-
イベントリスナ等のブロック上で定義した変数 例では`local`です。そのブロックの外からアクセスすることができません。
実用例
次のコードは、毎日0時になったら自動的に「よるほー」とツイートする例です。24行目で`Service.primary.post`を使用しています。
参考
-
Service
-
Service.primary
-
MikuTwitter::APIShortcuts#update