heroku の postgres が 9.5 を beta バージョンとして提供開始したというのを思い出して ruby-lang.org で使っている heroku アプリケーション群も後追いとして postgres 9.4 にアップグレードしておいた。
https://devcenter.heroku.com/articles/upgrading-heroku-postgres-databases
具体的には上の手順に書いてある通りで新規に 9.4 なデータベースを作ってから pg:copy
でダンプリストア実行、pg:promote
で切り替えって感じ。
$ heroku addons:create heroku-posgres:standard-0
$ heroku pg:copy DATABASE_URL HEROKU_POSTGRESQL_COLOR
$ heroku pg:promote HEROKU_POSTGRESQL_COLOR
$ heroku addons:destroy HEROKU_POSTGRESQL_OLDCOLOR
bugs.r-l.o は 500MB 弱な普通のデータベースなので、特にメンテナンスは入れないで1分程度のスイッチタイムでしゅっとやってしまった。
主に CLI で機能が追加された、であったり不具合修正したというようなときにヒストリーから go get -u
で一生懸命探しだして実行するよりも今まで実行した go get -u
をまるごと実行してひとまず最新の環境で地雷を踏み続けるという方が楽なので、ヒストリファイルから探しだして実行する雑スクリプトを書いた
#/usr/bin/env ruby
histories = File.readlines(File.expand_path(ENV['HISTFILE']))
gogets = histories.map do |history|
begin
cmd = history.split(';')[1]&.chomp
# only git.example.com, github.com, golang.org, google.golang.org etc.
cmd.downcase if cmd =~ /^go get -u [git|go]/
rescue ArgumentError => e
next
end
end.compact.sort.uniq
gogets.each do |cmd|
if cmd =~ /go get -u (.*)/
puts " Upgrading: #{$1}"
`#{cmd}`
end
end
すでにリポジトリが消えていたり、 go get する対象のディレクトリが変わっていたりすると死ぬのだけど、その辺は雑に無視している。