読者です 読者をやめる 読者になる 読者になる

パラボラアンテナと星の日記

あることないこと

rubotyで与えられた文字列をrubyとして実行する邪悪なプラグイン作った

邪悪なので邪悪な名前にしといた

hoshinotsuyoshi/ruboty-ruby_eval · GitHub

【注意】

何もチェックせずevalしているだけなので、仕事とかでは使わないほうがいいです。

デバッグ用途にはべんりなときもあるかもしれません。

使用例

ハンドラの内容

例によって一瞬で出来ました。

module Ruboty
  module Handlers
    class RubyEval < Base
      on /ruby(_|\-)eval (?<body>.+)/, name: 'ruby_eval', description: 'eval given code'

      def ruby_eval(message)
        value = instance_eval(message[:body])
      rescue => e
        value = [e.class.name, e.message, e.backtrace].join("\n")
      ensure
        message.reply value
      end
    end
  end
end

ポイント(ってほどでもないですが)

  • 例外出るとrubotyが終わってしまうので、全部キャッチしています
  • 何もチェックしていないのでいろいろと出来てしまいます
  • やりたい放題すぎるので、子プロセスをつくってその中で実行、とかのほうがよかったかもしれません

デバッグに使える(?)

herokuはrun consoleとかbashとかがあった気がするので、要らない気がしますが。

botくんからのネットワーク周りについて知る

(文字列は編集済)

botくんのことを知る

botくんのenvを見てしまう

(文字列は編集済)

遊びとしては良いと思う