メールを送る

以下のサイトを参考に。

基本は

1. ActionMailerを継承してクラスを作る

require 'action_mailer'

class MyPluginMailer < ActionMailer::Base
end

2. 適当なメソッドを作る

require 'action_mailer'

class MyPluginMailer < ActionMailer::Base
  def remainder( user )
  end
end

3. メールを作る
from,recipients,subjectなどはそのまま設定
本文はテンプレートを使って作るので、そちらに引き渡したい情報を body に設定

require 'action_mailer'

class MyPluginMailer < ActionMailer::Base
  # リマインダメールを送る
  def remainder( user )
    subject     "リマインダのテスト"
    from        "couger@example.com"
    recipients  user.mail
    body        :user=>user
  end
end

4. 本文に利用するテンプレートを作る
上記の MyPluginMailer の場合 views/my_plugin_mailer/remainder.rhtml になる。
ここではまった…。

5. コントローラーから呼び出して、メールを送る
MyPluginMailer に作ったメソッド remainder の前に deliver_ を付けること。

class MyPluginController < ApplicationController
  # リマインダメールを送る
  def deliver_remainder()
    MyPluginMailer.deliver_remainder( user )
  end
end

以上。分かっていればとても簡単。メールサーバや認証の設定がこれに加わる。
家で使っているプロバイダは

  • POPbeforeSMTP を使っている
  • メール送るときにも認証が必要

だったので、

  • MyPluginMailer にSMTPの設定を追加
  • ActionMailerはPOPbeforeSMTPに対応していないっぽいので、remainder メソッドで無理やり?認証。
require 'action_mailer'
require 'net/pop'

ActionMailer::Base.delivery_method = :smtp # デフォルトSMTPらしいのでいらないかも。
ActionMailer::Base.smtp_settings = {
  :address => 'mail.example.com',
  :port => 587,
  :domain => 'localhost', # いるのだろうか?
  :authentication => 'login',
  :user_name => 'couger@example.com',
  :password => 'password'
}

class MyPluginMailer < ActionMailer::Base
  # リマインダメールを送る
  def remainder( user )
    # POPbeforeSMTPへの対応
    Net::POP3.auth_only('mail.example.com', 110, 'couger@example.com', 'password')

    subject     "リマインダのテスト"
    from        "couger@example.com"
    recipients  user.mail
    body        :user=>user
  end
end

以上。
POPbeforeSMTPだけ入れて、SMTPの認証を忘れてたせいでかなりはまってしまった…。
文字コードに関する問題があるみたいだけど、そっちは次の機会に。

Redmine 覚書

  • link_to_if_authorized は権限があればリンクを作成してくれる便利なヘルパー。
  • redmine.rb でチケットやその他の操作に関する権限を指定してる
  • redmine で用意されている権限には以下のようなものがある。
    • 一般に公開
    • 登録されているユーザに公開
    • プロジェクトメンバーに公開

これ面白そう。2年も前だ。
RubyKaigi2006

データベースのマイグレーション

ちょっとしつこくやってみるのだ。

http://wiki.rubyonrails.org/rails/pages/UnderstandingMigrations
http://wiki.rubyonrails.com/rails/pages/UsingMigrations

そういえば、plugin_schema_info のことを教えてもらったんだっけ。
中をのぞいていみる

う。plugin のバージョンが 2 になってるんじゃん。
1にしたら問題なく マイグレーションできた。とほほほほ。

アンケートプラグインを作ろう

うう。さっき書いたの消してしまった…orz

Redmine のインストール

我らがコミュニティで作成した EasyRedmine のおかげですることなし。

NetBeans IDEのインストール

これも困ることはない。

プロジェクトの作成

  1. リポジトリの作成(まだ)
  2. NetBeansIDEの設定
    • Redmineのインストールディレクトリを指定すれば、Railsアプリケーションとして認識してくれる。
  3. アンケートプラグインの導入
    1. list アクションでコケル…。TABLEがないらしい。
    2. でも db:migrate しても、何も変わらない。(ちなみに rake コマンドは Redmine のディレクトリより下で行わないといけないみたい)
    3. db:migrate_plugins やらないとダメだった…。しかもREADMEに書いてくれてるし…。