- Suikoden series' "Vault, Storage or Warehouse."
- db:migrate
- OnSheet の Importer
- データの Importer
config/spreadsheet/worksheets_on_id.yml
db/csv_on_sheet
配下に CSVファイル が保存されていく
$ bundle exec rails db:download_csv
- 実際の中身は
app/service
配下のクラスである - インポートされるファイルは明示的に記述する必要がある
config/initializers/constant_value.rb
- インポートが正常に完了すると
db
配下に ER図 が生成される OnSheet::
名前空間のテーブルが作られるOnSheet::Star
OnSheet::Title
OnSheet::Platform
- 冪等なので何回実行しても同じであるし、更新があれば更新される
- CSV が更新されたら以下の手順を踏む必要がある
- CSV ダウンロード -> (db:migrate) -> CSV インポート -> DB メイクアップ
- CSV が更新されたら以下の手順を踏む必要がある
# 必要に応じて DB をまっさらにする
# $ bundle exec rails db:migrate:reset
$ bundle exec rails db:import_csv
$ bundle exec rails db:make_up_db
以下のコマンドを実行する。
$ bundle exec rails runner "o = FetchDataTableService::FromSpreadsheet.new(spreadsheet_id: SPREADSHEET_ID, worksheet_name: WORKSHEET_NAME); o.headers; o.rows; o.header_to_rows"
あるいはコンソールで以下のようにする。
irb> o = FetchDataTableService::FromSpreadsheet.new(spreadsheet_id: SPREADSHEET_ID, worksheet_name: WORKSHEET_NAME) # ログは hoge; nil; では出てしまう
irb> o.headers
irb> o.rows
irb> o.header_to_rows
一番良いのはもちろん テストを書くこと 。
- シートのID と ワークシートの名前 を取得する
- スプレッドシートの条件は以下の2つ
- ワークシートの名前およびカラムの名前が英数字であること
- 一番左に id列 をもつこと
- スプレッドシートの条件は以下の2つ
- ワークシートの共有アドレスに creds のアドレスを追加する
- 全世界公開だと不要だが、原則入れる癖をつける
- シートのID と ワークシートの名前 を 環境変数 と YAML に書く
- モデルを作成する
- マイグレーションを行う
- 制約は緩くていい
- インポータを書く
- 実際は Base の継承だけでいいので中身は書く必要はない
- ファイル名とクラス名を規約に沿わす
- Rake タスクにインポータを追記する
- 一括実行スクリプトでインポートする
- できればテストを書く