HerokuでSendgridを使ってRailsでメール送信をする

メールを送るサービス Sendgrid を使ってHerokuでメール送信してみました
アカウントはheroku Addonを入れると勝手に作られ、Sendgridにログインすると利用状況など見れます

無料のstarterプランだと1日400通まで送れます

HerokunにAddonを入れて使います
https://elements.heroku.com/addons/sendgrid

herokuのaddonを入れるためにはクレジットカードの登録が必要になります

https://devcenter.heroku.com/articles/sendgrid#ruby-rails
を参考に設定をします

$ heroku addons:add sendgrid:starter

$ vim config/environments/production.rb

Rails.application.configure do
  # 省略
    config.action_mailer.delivery_method = :smtp
    config.action_mailer.smtp_settings = {
      :address        => 'smtp.sendgrid.net',
      :port           => '587',
      :authentication => :plain,
      :user_name      => ENV['SENDGRID_USERNAME'],
      :password       => ENV['SENDGRID_PASSWORD'],
      :domain         => 'heroku.com',
      :enable_starttls_auto => true
    }
end

USERNAMEとPASSWORDの確認は次のコマンドでできます
$ heroku config:get SENDGRID_USERNAME
$ heroku config:get SENDGRID_PASSWORD

動作確認するには
$ heroku run rails console
irb> ActionMailer::Base.mail(from: “sample@sample.com”, to: “sampleto@sample.com”, subject: “題名”, body: “本文”).deliver

で確認できます

herokuにrailsアプリをデプロイする

herokuにrailsアプリ手順をおさらい
heroku toolbeltはインストール済みです

railsアプリのディレクトリへ移動します
git管理してなければ

$ git init
$ git add -A
$ git commit -m ‘initial’

とかでGit管理しておきます

$ heroku login

でherokuに一度ログインしていおきます

$ heroku create

でherokuアプリを生成
herokuにアプリをプッシュします

$ git push heroku master

これでデプロイできました
postgresqlを使っていたため

$ heroku addons:add heroku-postgresql

データベース用意

$ heroku run rake db:migrate

アクセスしてみます

$ heroku open

でherokuのアドレスをブラウザで開いたり

$ heroku info

=== xxxxxxx-yyyyy-1111
Dynos:         0
Git URL:       https://git.heroku.com/xxxxxxx-yyyyy-1111.git
Owner Email:   sample@sample.com
Region:        us
Stack:         cedar-14
Web URL:       https://xxxxxxx-yyyyy-1111.herokuapp.com/
Workers:       0

とURLが見れたりします

bundler+rbenvを使っていてrubyのバージョンをあげてみた

rbenvでrubyのバージョン管理をしていてrubyのバージョンを上げてみました

いまのrubyのバージョンを確認

$ ruby -v
2.2.0

$ rbenv versions
system
2.1.2
* 2.2.0 (set by /vagrant/.ruby-version)

でも入ってるrubyのバージョンが見れます

2.2.2を入れたいのでrbenvであるか確認

$ rbenv install –list

でなければ、rbenvを最新に

$ cd ~/.rbenv
$ git pull origin master
$ cd ~/.rbenv/plugins/ruby-build
$ git pull origin master

確認

$ rbenv install –list

で、2.2.2が出てきたのでインストール

$ rbenv install 2.2.2

しばし待ちます

これだとまだ有効になってないので有効に

$ rbenv local 2.2.2

確認

$ rbenv versions
system
2.1.2
2.2.0
* 2.2.2 (set by /vagrant/wazukatea/.ruby-version)

$ ruby -v
ruby 2.2.2p95

できました
bundle installするとエラーがでました

The `bundle' command exists in these Ruby versions:
  2.1.2
  2.2.0

再度bundler入れてみて
$ gem install bundler

直りました

herokuコマンドが見つからない

ubuntuで久しぶりにherokuを使おうと

$ heroku login
とかしたら

command not found

とかでました

Heroku Toolbelt
のとおりコマンドを実行

$ wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh

としたら既に最新版が入ってるとか言われました

$ which heroku
としても無反応..

入れなおしました
wgetしているシェルスクリプト見ると普通にapt-get installしてたので

$ apt-get –purge remove heroku heroku-toolbelt

で消して再度コマンド実行
$ wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh

で見事はいりました