「Tep3-onk-2」の版間の差分
提供: wikipokpok
(→旧テーブルをセレクトして新テーブルにインサートする) |
(→データベース移行) |
||
30行目: | 30行目: | ||
== データベース移行 == | == データベース移行 == | ||
Herokuからdumpしてローカルにheroku_dumpデータベースを新設しリストアする | Herokuからdumpしてローカルにheroku_dumpデータベースを新設しリストアする | ||
+ | |||
+ | $ heroku pg:backups:capture | ||
+ | $ heroku pg:backups:download | ||
+ | $ createdb mydb | ||
+ | $ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump | ||
+ | |||
+ | <nowiki>=# select count(*) from clients; | ||
+ | count | ||
+ | ------- | ||
+ | 4209 | ||
+ | (1 row) | ||
+ | </nowiki> | ||
作り直すアプリはデータベース構造を変えるのでテーブルごとにダンプ・リストアする | 作り直すアプリはデータベース構造を変えるのでテーブルごとにダンプ・リストアする |
2022年9月17日 (土) 16:11時点における版
目次
準備
プロジェクトディレクトリ作成 移動 バージョン確認
new
% rails new . -d postgresql --css tailwind % bundle install % rails db:create または % rails db:reset % rails db:migrate % rails server
daisyui
tailwind css UIコンポーネント インストール
% yarn add daisyui
config/tailwind.config.js
plugins: [ require('@tailwindcss/forms'), require('@tailwindcss/aspect-ratio'), require('@tailwindcss/typography'), require('daisyui'), // ← 追記する ],
app/views/layouts/application.html.erb
<html data-theme="light"> // テーマを選ぶ
データベース移行
Herokuからdumpしてローカルにheroku_dumpデータベースを新設しリストアする
$ heroku pg:backups:capture $ heroku pg:backups:download $ createdb mydb $ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
=# select count(*) from clients; count ------- 4209 (1 row)
作り直すアプリはデータベース構造を変えるのでテーブルごとにダンプ・リストアする
データ数確認
=# select count(*) from clients ; count ------- 5067 (1 row)
heroku_dumpデータベースでテーブ名を変える
=# ALTER TABLE users RENAME TO users_old; =# ALTER TABLE clients RENAME TO clients_old;
旧テーブルダンプ
% pg_dump --username=jq --table users_old heroku_dump > users_old.sql
旧テーブルを新アプリのデータベースにリストア
% psql --username=jq tep5_development < ../old_users.sql SET SET SET SET SET set_config ------------ (1 row) SET SET SET SET SET SET CREATE TABLE ALTER TABLE CREATE SEQUENCE ALTER TABLE ALTER SEQUENCE ALTER TABLE COPY 17 setval -------- 51 (1 row) ERROR: relation "users_pkey" already exists ERROR: relation "index_users_on_email" already exists CREATE INDEX
旧テーブルをセレクトして新テーブルにインサートする
=# insert into users ( id, name, email, created_at, updated_at, password_digest, remember_digest, activation_digest, activated, activated_at, reset_digest, reset_sent_at ) select id, name, email, created_at, updated_at, password_digest, remember_digest, activation_digest, activated, activated_at, reset_digest, reset_sent_at from users_old; INSERT 0 17
旧テーブルのclientsをclientsとotherに分ける
UUIDを有効にする
% rails generate migration enable_extension_for_uuid
migrate編集
class EnableExtensionForUuid < ActiveRecord::Migration[7.0] def change enable_extension 'pgcrypto' unless extension_enabled?('pgcrypto') end end
% rails db:migrate
デフォルトのキーをuuidにする
config/initializers/generators.rb 作成 Rails.application.config.generators do |g| g.orm :active_record, primary_key_type: :uuid end
generate
$ rails generate scaffold User name:string email:string password_digest:string remember_digest:string role:integer activation_digest:string activated:boolean activated_at:datetime reset_digest:string reset_sent_at:datetime
migrationファイルを確認 indexを書く 以下同じ
% rails generate scaffold Note user:references content:string kind:integer meeting_time:integer role:integer note_line:integer
% rails generate scaffold List user:references note:references content:string list_line:integer
% rails generate scaffold Client user:references note:references list:references content:string client_line:integer memo:text
% rails generate scaffold Other user:references note:references client:references name:string kana:string client_name:boolean other_line:integer memo:text generation:string
やり直し % rails destroy scaffold User .................
$ rails generate scaffold Post content:text user:references picture:string
$ rails generate model Relationship follower_id:integer followed_id:integer
$ rails db:migrate RAILS_ENV=production
$ bin/dev
$ rails generate controller StaticPages home help about contact
エラー
ActionView::Template::Error (The asset "tailwind.css" is not present in the asset pipeline.
config/envitonments/production.rb
config.assets.compile = true