NOTO

簡単な占いをしてくれるスクリプトを書いた。

 Date:2013-12-24 15:31:09 +0900
 Categories: TECHNOLOGY

Rubyレシピブックで配列からランダムに抽出する 配列オブジェクト.sample というものがあったので、
簡単な占いっぽい今日の運勢をメールで送ってくれるスクリプトを書いた。

環境

CentOS 6.5
Ruby 2.0.0

※余談ですが、iPad miniのkindleで読んでいたので
 そのままiPad miniからPromptというアプリでCentOSに入ってviでファイル作成しました。
 30分位?

パーツ

mailとdateを読んでます。
・require

require 'date'
require 'mail'

・定義部分(準備部分)
今日の日付と占いに使う3つの要素を配列として準備しています。
fortune部分の変数は朝から憂鬱になりたくないので、嬉しい目の結果が出るようにしています。

today = Date.today
sending_address = "送るメールアドレス"
fortune = "So Lucky!, So Lucky!, Lucky!, Lucky!, Lucky!, Normal, Not Normal!, So Hard!".split(", ")
color = "red, blue, black, white, green, yellow, pink, purple, orange, grey".split(", ")
item = "iPhone, book, iPad, macbook, pen, hhkb, coffee, fuchiko-san".split(", ")

・メール本文になるもの
ヒアドキュメントを”“で囲って変数展開出来る形で記載しています。
ポイントは.sampleで適当に抽出してランダム感を出してます。

mail_body =

・メール送信部分
requireで読んだmailでfrom to subject bodyを設定しておけば
よしなにdeliverで送ってくれます。

mail = Mail.new
mail.from = sending_address # fromを別アドレスにしたい際は変更してください。
mail.to = sending_address
mail.subject = "#{today.strftime("%Y/%m/%d")}'s fortune"
mail.body = mail_body

mail.deliver

これらをくっつけて最後にexit 0でほぼ動くと思います。

あとは、crontabに朝7時にスクリプトをセットすればOKです。
毎朝7時にメールが届くので、ちょっとした目覚まし代わりでもあります(そのあと2度寝)

追記
その後に日本語表示ができるようにスクリプトを改変したところ「Non US-ASCII detected and no charset defined.
Defaulting to UTF-8, set your own if this is incorrect.」というエラーがでました。

調べたところ、mailのcharset周りをutf-8に合わせてあげればいいみたいでした。
mail.charset = ‘utf-8′
こんな感じのをメール送信部分に混ぜてあげれば良いかもです。
Tweet