回答編集履歴

3

database.ymlを全部記載

2021/09/25 14:34

投稿

mj29
mj29

スコア136

test CHANGED
@@ -36,8 +36,6 @@
36
36
 
37
37
  ```yaml
38
38
 
39
- ...
40
-
41
39
  default: &default
42
40
 
43
41
  adapter: mysql2
@@ -50,11 +48,39 @@
50
48
 
51
49
  password: password
52
50
 
53
- # host: db # コメントアウトして、下記を追加
54
-
55
51
  host: 127.0.0.1
56
52
 
53
+ # host: localhost
54
+
55
+
56
+
57
+ development:
58
+
59
+ <<: *default
60
+
61
+ database: development_database
62
+
63
+
64
+
65
+ # Warning: The database defined as "test" will be erased and
66
+
67
+ # re-generated from your development database when you run "rake".
68
+
69
+ # Do not set this db to the same as development or production.
70
+
57
- ...
71
+ test:
72
+
73
+ <<: *default
74
+
75
+ database: test_database
76
+
77
+
78
+
79
+ production:
80
+
81
+ <<: *default
82
+
83
+ database: production_database
58
84
 
59
85
  ```
60
86
 

2

sockエラー対応

2021/09/25 14:34

投稿

mj29
mj29

スコア136

test CHANGED
@@ -52,7 +52,7 @@
52
52
 
53
53
  # host: db # コメントアウトして、下記を追加
54
54
 
55
- host: localhost
55
+ host: 127.0.0.1
56
56
 
57
57
  ...
58
58
 

1

レスをもとに追記

2021/09/25 03:52

投稿

mj29
mj29

スコア136

test CHANGED
@@ -17,3 +17,109 @@
17
17
  docker-compose exec web bundle exec rake db:migrate RAILS_ENV=test
18
18
 
19
19
  ```
20
+
21
+
22
+
23
+ ### 【追記】 9/25
24
+
25
+
26
+
27
+ ローカルとdockerで2つのrubyが存在するようですね。
28
+
29
+ まずはローカルで動作確認してみましょう。
30
+
31
+
32
+
33
+ databese.yml を下記のように修正します。
34
+
35
+
36
+
37
+ ```yaml
38
+
39
+ ...
40
+
41
+ default: &default
42
+
43
+ adapter: mysql2
44
+
45
+ pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
46
+
47
+ timeout: 5000
48
+
49
+ username: root
50
+
51
+ password: password
52
+
53
+ # host: db # コメントアウトして、下記を追加
54
+
55
+ host: localhost
56
+
57
+ ...
58
+
59
+ ```
60
+
61
+
62
+
63
+ ローカルで、rspecを実行して動作しますでしょうか?
64
+
65
+
66
+
67
+
68
+
69
+ **【ここから先、小咄なのでテキトウに聞いてください】**
70
+
71
+ 現実世界(macOS)とどっかの仮想世界(docker内のlinux)の2つの世界のよく似たrubyさんがいらっしゃるようで、
72
+
73
+ DaigoIkedaさんは、その2人を同一人物として命令されているようです。
74
+
75
+ この2人はよく似てますが別人なので、住む世界(OS)も年齢(version)も持っているスキル(gem list)も違います。
76
+
77
+
78
+
79
+ 現実世界のrubyさんの年齢とスキルを調べる
80
+
81
+ ```sh
82
+
83
+ ruby -v
84
+
85
+ gem list
86
+
87
+ ```
88
+
89
+ 仮想世界のrubyさんの年齢とスキルを調べる
90
+
91
+ ```sh
92
+
93
+ docker-compose exec web ruby -v
94
+
95
+ docker-compose exec web gem list
96
+
97
+ ```
98
+
99
+
100
+
101
+ また、mysqlさんは、仮想世界の住人ですが、現実世界でも会話できるよう回線を引いています。
102
+
103
+ 仮想世界では、db:3306 で通話できますが、現実世界では、localhost:3306で通話します。
104
+
105
+
106
+
107
+ ですので、どちらか片方にだけ命令すると決めるといいかもしれません。
108
+
109
+
110
+
111
+ それと厄介なことに、Dockerfileを確認したところ仮想世界のrubyさんのスキルは、Gemfileを更新してもdocker-compose buildしないと更新されない構成になっています。
112
+
113
+
114
+
115
+ 個人的には、DBはdockerで起動し、APP(rails)はローカルのRVMを使って開発したほうがいいです。
116
+
117
+ macユーザは特になのですが、docker for macで頻繁に変更されるディレクトリをマウントすると死ぬほど遅く、猛烈なストレスで開発どころじゃなくなります。
118
+
119
+ docker-syncを使うと速度的には改善されますが、スリープすると同期されなくなることがあったり、どうでもいい気苦労をしなければならなくなります。
120
+
121
+
122
+
123
+ 参考)
124
+
125
+ https://qiita.com/pocari/items/0340049742927f3a94b7