エイリアスとパイプ「|」を使って、特定のRails処理を起動する。
Rails起動には「rails runner」というものを使用する。
※パイプに渡すコマンドで直接runnerを起動することもできるが、rvm等を使っていると、Rubyの実行環境を事前に整えるコマンドが必要になるので、スクリプトを作ってそれを実行するようにしたほうが便利っぽい。
※参考サイト1、2を参照
エイリアス設定
# 追記
$ sudo vi /etc/aliases
welcome: '| /path/to/app/script/welcome'
# 有効化
$ sudo postalias /etc/aliases
$ sudo newaliases
スクリプト設定
※後でちゃんと書く
$ vi /path/to/app/script/welcome
#! /usr/bin/env bash
# 環境パス設定
...
# 実行
rails runner -e production WelcomeMail STDIN.read # => STDIN.read はメールの内容を読み込む為に必要
実行権限
aliases は postfixユーザとかで実施される模様。
$ chmod 777 /path/to/app/script/welcome
Rails側の処理
# coding: utf-8
class WelcomeMail < ActionMailer::Base
default from: "hoge@fuga.net"
def receive(email)
from = email.from[0]
if email.has_attachments?
# ファイルが添付さている
attachment = email.attachments[0]
end
end
end