Rubyでscanで使ったりする\p{Word}ってなにか

Rubyで正規表現を使ってscanを使ってるコードで

"I my me mine 1 2 3 4".scan(/w+/) 
# ["I", "my", "me", "mine", "1", "2", "3", "4"]

と文字列を配列に分割できますが

"I my me mine 1 2 3 4".scan(/p{Word}+/) 
# ["I", "my", "me", "mine", "1", "2", "3", "4"]

でもできます
\p{Word}ってなんだと思って調べました

ドキュメントによるとUnicode プロパティによる文字クラス指定らしいです
正規表現

これ
Onigmo/UnicodeProps.txt at master · k-takata/Onigmo
に書いてあるものは使えるそうです

str = "I my me mine 1 2 3 4"
p str.scan(/p{Word}+/)
# ["I", "my", "me", "mine", "1", "2", "3", "4"]
p str.scan(/p{Digit}+/)
# ["1", "2", "3", "4"]
p str.scan(/p{Upper}+/)
# ["I"]

と他にも使えそうなのがあります

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

で確認できます

RailsからActionMailerでGmailを利用してメールを送る

$ config/environments/develop.rb

Rails.application.configure do
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = { 
    address:               'smtp.gmail.com',
    port:                    587,
    domain:                'localhost:3000',
    user_name:             'ユーザー名',
    password:              'パスワード',
    authentication:        'plain',
    enable_starttls_auto:  true
  }
end

$ rails c

irb> ActionMailer::Base.mail(from: “sample@sample.com”, to: “sampleto@sample.com”, subject: “題名”, body: “本文”).deliver

でメール送信テストができます

Gmailだとエラーが
Net::SMTPAuthenticationError
が出るかと思います

この辺をみて
https://support.google.com/accounts/answer/6010255

この設定をOFFにすると
https://www.google.com/settings/security/lesssecureapps

できるようになります(セキュリティ的によくないけど)

2段階認証を設定して、アプリ用のパスワードを設定したほうがいいようです

rails db時にCouldn’t find database client: sqlite3.エラー

railsで遊んでいてデータベースを見ようとコマンド叩くとエラーがでました

$ rails db
Couldn’t find database client: sqlite3. Check your $PATH and try again.

あれ?と思ったけど、ふつうにsqlite3をインストールしてませんでした..
Ubuntuだったので

$ sudo apt-get intall sqlite3

で解決しました