block_given?

ジャングル ブロック ナイ アルノハ jump ダケ。CC-BY-SA 3.0

ruboty-opening_sentenceを公開した

rubotyのプラグインを毎日作ろう3日目、ruboty-opening_sentenceを公開した。

@rubotyすると青空文庫の小説の中から適当に選んだ小説の書き出しをチャットに書き出してくれる。

f:id:block_given:20141009041737p:plain

書き出しは青空APIサーバーから取ってきている。 APIサーバーについては別の記事で紹介する。

はまったところ

Ruboty::Handlers::BaseRuboty::Actions::Baseを継承するのを忘れてしまい、うまく動かなかった。

くふうしたところ

青空文庫から本の情報(タイトル、書き出し、url)をランダムに1つ取る部分をAPIサーバーとして分離した。 そのおかげでruboty-opening_sentenceはapiを叩いて文字列を整形するだけのシンプルな作りになった。

後置rescuereturnを組み合わせると雑に例外処理が出来ていい。

def call
  json = open(url).raed rescue return
  book = JSON.parse(json) rescue return
end

例外を握りつぶすActiveSupporttryが欲しい。

まとめ

我が輩、毎日rubotyプラグイン書いてるので、本を読む時間はまだない。

ruboty-slotを公開した

スロットが出来るようになった。得点の計算や、所持金の計算はやっていない。

f:id:block_given:20141008001308p:plain

くふうしたところ

リールはパチスロ業界初まとめ ~パチスロはじめて物語を参考にした。

はまったところ

  • bundle gem スロットだとRubyの定数の名前としてふさわしくない(定数は必ず大文字の英字からはじまる)のでうまく動かなかった
  • 苦し紛れにbundle gem theスロットをしたけど、Bundlerが読み込む際にパスに日本語が入っているせいかexpand_pathする部分でincompatible encodingのエラーが出て読み込めなかった
  • GitHubではリポジトリの名前に日本語が使えず-で置換される
  • cycleしたあとlazyせずにdroptakeをすると止まらない。cycle.lazyあわせて使うようにしたい。
  • 一度lazyになったものはto_aなどを呼ばないと配列にならない

所感

まだRubotyにものごとを記憶させることをやらせていないので明日はそのやり方をしらべる。 お金を掛けることが出来るようになるともっと楽しそう。 Rubotyでカジノするための何かが欲しい。

今日はrubygemsへの公開が遅れてしまった感じがする。 動かない状態でもrubygemsにpushしてしまいたい。

ruboty-hiを公開した

@ruboty hi

するとお返事hiしてくれる。 botが二人いたら無限にhiしてそう。

f:id:block_given:20141007003522p:plain

ruboty-hi | RubyGems.org | your community gem host

モチベーション

@bouzuyaさんの1日1Hubotスクリプトが楽しそうなので真似をしたくてはじめた。今日が1日目。