本日のタスク
【終わったタスク】10/14(水)
◆勉強
・Ruby on Rails5 II(2.3h)
→投稿一覧ページ、データベース、共通のレイアウト
◆運動
無し。
◆その他
・10/15の予定を決める。
・ダイエットブログ更新。
・転職ブログ更新。
【感想】
10/14
・Ruby on Rails5 II(2.3h)
→投稿一覧ページ、データベース、共通のレイアウト
上記の中でデータベースに投稿するの項目をやっていたところ、rails consoleからPost.newで投稿をしてみたところ、どうやらデータベースに対して反映されていない模様。
しかもpost/indexのページのコンテンツ部分だけ白地になってエラーメッセージも出ない。やばい。
とりあえず、rails g model Post content:textとrails db:migrateは出来て、migrateのファイルも作られていました。
23:20:49
[~/sample_app04] % docker-compose run web rails g model Post content:text
Creating sample_app04_web_run … done
invoke active_record
create db/migrate/20201013142053_create_posts.rb
create app/models/post.rb
invoke test_unit
create test/models/post_test.rb
create test/fixtures/posts.yml
23:22:46
[~/sample_app04] % docker-compose run web rails db:migrate
Creating sample_app04_web_run … done
== 20201013142053 CreatePosts: migrating ======================================
— create_table(:posts)
-> 0.1213s
== 20201013142053 CreatePosts: migrated (0.1222s) =============================
↓
色々とググってみたところ、rails dbconsoleが見れるか試したところ見られず。再びググってみたところ、下記の記事を発見。
docker-composeで、rails dbconsoleが使えなくてハマった話。
→:https://qiita.com/ryosk7/items/077ea98a88ec3df289c8
Dockerfileに”mysql-client”を追加するとあってので、追加してdocker-compose buildを実施。
ところが、”E: Package ‘mysql-client’ has no installation candidate”が出たので、再びググる。
すると下記の記事を発見。
docker-compose buildするときにbundle installやmysql-clientでコケた話
→:https://qiita.com/aseanchild1400/items/d3580366054fee3d2703
記事の通りに”mariadb-client ”に書き換えて再度docker-compose buildを実行し成功。posts/indexのページも元に戻りました。ホッ。
rails dbconosoleも見ることができました。
17:40:01
[~/sample_app04] % docker-compose run web rails dbconsole ✘ 1
Creating sample_app04_web_run … done
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.31 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
MySQL [myapp_development]>
MySQL [myapp_development]> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| myapp_development |
| myapp_test |
| mysql |
| performance_schema |
| sys |
+——————–+
6 rows in set (0.002 sec)
MySQL [myapp_development]>
MySQL [myapp_development]> quit
Bye
↓
改めてPost.newで投稿を試してみますが、やっぱり上手くいきません。
ただ、post/indexのページは大丈夫そうです。ホッ。
[~/sample_app04] % docker-compose run web rails console
Creating sample_app04_web_run … done
Loading development environment (Rails 5.2.4.4)
irb(main):001:0>
irb(main):002:0> post = Post.new(content: “Hellow world3”)
(1.0ms) SET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ‘,STRICT_ALL_TABLES’), ‘,NO_AUTO_VALUE_ON_ZERO’), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483
=> #<Post id: nil, content: “Hellow world3”, created_at: nil, updated_at: nil>
irb(main):003:0>
↓
引き続きググってみたところ、下記の記事を発見。
→:https://rails-ambassador.herokuapp.com/lessons/ManipulateTheModel
記事に従いテーブルを確認してみる。
[~/sample_app04] % docker-compose run web rails dbconsole
Creating sample_app04_web_run … done
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.7.31 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
MySQL [myapp_development]> desc posts;
+————+————+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+————+————+——+—–+———+—————-+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| content | text | YES | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+————+————+——+—–+———+—————-+
4 rows in set (0.003 sec)
MySQL [myapp_development]> quit
Bye
Postsにcontentでtypeがtextとあるので、rails g model Post content:textは出来ている模様。
う〜む。今日はここまで。