Railsでrake db:seedをやり直す

Ruby on Railsでdb:seedをすると初期値がデータベースに保存されて便利ですが
初期値を変えてやり直したい..ので調べました

rake db:seed
を再度するとデータが重複してしまうようで
データベースを作りなおしてやることにしました
※初期値以外のデータが飛びます、それでもよければ

db/seed.rb
を書き換えて初期値を変えてやった後、

データベース作り直し
$ rake db:migrate:reset

これだと一旦データベースをDROPしてからmigrationもしてくれるようです
つまりは、初期値がないけど構造は最新になります

初期値をいれましょう
$ rake db:seed

これでできあがり

seed-fuをいれてやるともっとよくできそうです(試せてないです)
railsで初期データを入れる(seed-fuの使い方) – Qiita

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

で解決しました