Rubyスクリプトをdaemonで起動する
Ruby逆引きレシピAdvent Calendar 参加企画ということで、4日目を担当します。
「ところでこの本って、いったい何の本なの、マイケル?」
「よく聞いてくれたね、ジェニファー!この本はRubyで何かをしたいときにまず目を通すといい本なんだよ!」
「あら、マイケル、そんなのgoogle先生に聞けばだいたいわかるんじゃないの?」
「おいおい、冗談言ってるんじゃないぜ、ジェニファー!Rubyには便利なライブラリがいっぱい揃ってるし、簡単にコードが書けるよな?」
「ええ、そうね。」
「だからこそ逆に『あれ、これ似たようなライブラリがいっぱいあるけど、どのライブラリ使うのが簡単なんだろう?』っていう時にとっても役に立つのさ!」
「まぁ、素敵!」
「しかも著者によるサンプルコードもついてるから、すぐにコードを試せるんだぜ!」
「あら、私も一冊ほしくなってきたわ。」
「それにこの本は幅広く役に立つことが書いてあるから、読み物としても面白いんだ。」
「初心者から上級者まで、必携の一冊ってことね!?」
「しかも今なら!一冊買うと、もう一冊欲しくなってくるキャンペーンを実施してるんだ。」
「これはもう、最寄の本屋で買うしかないわね!」
Ruby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)
- 作者: 島田浩二,設樂洋爾,村田賢太,前田智樹,谷口文威
- 出版社/メーカー: 翔泳社
- 発売日: 2009/07/25
- メディア: 単行本(ソフトカバー)
- 購入: 16人 クリック: 343回
- この商品を含むブログ (76件) を見る
さて、このテンションに疲れてきたところで、レシピの62「スクリプトをデーモンとして動作させたい」を参考に実際にコードを試しみましょう!
まずはgemのインストール
$ gem install daemons
コードを書きます。
# reminder.rb require "rubygems" require "daemons" require "net/smtp" _, term, = ARGV term = term.to_i smtp_server = "smtp.example.com" smtp_port = 25 from = "from@example.com" to = "to@example.com" Daemons.run_proc(File.basename(__FILE__)) do loop do Net::SMTP.start(smtp_server, smtp_port) do |smtp| smtp.send_mail("Not forget me!!", from, to) end sleep term end end
起動します。
$ ruby reminder.rb run 3600
「ことろでマイケル、このコードは何をするコードなの?」
「よく聞いてくれたね、ジェニファー!これは、女の子から教えてもらったメールアドレスに、1時間ごとにぼくのことを『忘れないでね♪』ってメールを送信するコードなのさ!」
「………。」
「これでもう、女の子と連絡が取れなくなくなることはないね!」
「そうね、マイケル。みんなあなたのことを忘れたんじゃなくて、忘れたかったんだと思うの。あなたは『Ruby逆引きレシピ』をもっと読んで、誰かの役に立つコードを書いたほうがいいわ。」
お求めはAmazon、もしくはお近くの書店で!
Ruby 逆引きレシピ すぐに美味しいサンプル&テクニック 232 (PROGRAMMER’S RECIPE)
- 作者: 島田浩二,設樂洋爾,村田賢太,前田智樹,谷口文威
- 出版社/メーカー: 翔泳社
- 発売日: 2009/07/25
- メディア: 単行本(ソフトカバー)
- 購入: 16人 クリック: 343回
- この商品を含むブログ (76件) を見る