ぐがげ (吐血

test なナニと production なナニで不整合あり。やっぱりヤッチャッタか。
うーん。
異なるプロジェクトで同一の DB を使用するんで migrate が微妙やっさ、と思っていたのですが、system_id 列が production な環境に無いな。状態として

  • typo
    • db/migrate には 001_initial_schema.rb しかない
    • db/schema.rb には settings テーブルに system_id 列が盛り込まれている
    • ruby ./script/console test で見た所、system_id という列がある
    • 本番マシンにて ruby ./script/console production には上記の列は存在しない
    • 本番マシンでの db/schema.rb には system_id な記述なし
  • parabola
    • system_id 列に関する修正は一切ナシ

おそらくは migrate がデキん、とゆー事で直接 SQL をタタいて列を追加したに違いない。schema.rb は rake な何かのタスクで作成されるはずなので、というのが経緯に違いない。しかも本番な環境を作った後に列の追加をしているように見えるんですが、schema.rb が反映されていないあたり、リポジトリがおかしいのかなぁ。

わしも含めて parabola 側で設定変更を誰もしてないので現象が出なかったんだな。てーか明らかに検討が不足してるし試験も足りてない。(駄目

とりあえず、なんとかして不具合及び不具合発生の原因を吸収する方向で検討を。

追記

成程。development やら test やらの DB を最初から統一しとけば良かったんだな。何て浅はかなんでしょうか。ちょっと考えれば分かる話じゃねぇか。

とりあえず、typo にある schema.rb を元にして、再度 001_initial_schema.rb を作り直してからそれぞれの環境に反映、だな。ってか、schema_info がどこにもないぞ。なんか段々とハラが立ってきたな。ま、いいや。とりあえず当たり前の状態に復帰させる手順はこんな感じ??

  1. mysqldump で本番環境、開発環境のナニを保存
  2. DB 作成 (development、test、production 用)
  3. script/migrate InitialSchema 実行
  4. 001_initial_schema.rb 方面に開発環境な schema.rb のナニを流しこむ
  5. rake db:migration ENV=development 実行
  6. dump 取った開発環境なデータをおもむろに注入
  7. 動作確認 OK なら本番環境に反映

なかなか検討が済んでいるナニの盛り込みができんのぅ。
# てーか、system_id なナニの盛り込みも早急に必要なんだな。

上記で当たってるかどうかは別途報告を。