Oracleで途中からプライマリーキーを追加する

oracleを使って開発中に途中で、テーブルの世代管理が必要になるという悲劇に遭遇した際は
世代管理用フィールドの追加とPrimaryKeyを張り替えます

ALTER TABLE sample_table ADD (
    rev NUMBER(8)
);

ALTER TABLE sample_table DROP PRIMARY KEY;

UPDATE sample_table SET rev  = 0;

ALTER TABLE sample_table ADD PRIMARY KEY (ID, REV);

IDはもともと用意していたPrimary keyです
Primary keyにするにはnullではだめなので、0をセットしています

Vimでコピペを有効にする

Vimでclipboardを有効にしました

clipboardが有効な7.3.74以上のvimを入手します

vim –version
で +clipboard となっているか、versionは7.3.74以上かを確認します

.vimrcに

set clipboard=unnamedplus

と書いて、vim起動
これでシステムでコピーしたものがvimに p で貼り付けられます

参考)
Accessing the system clipboard – Vim Tips Wiki

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段階認証を設定して、アプリ用のパスワードを設定したほうがいいようです