teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

database.ymlを全部記載

2021/09/25 14:34

投稿

mj29
mj29

スコア136

answer CHANGED
@@ -17,16 +17,29 @@
17
17
  databese.yml を下記のように修正します。
18
18
 
19
19
  ```yaml
20
- ...
21
20
  default: &default
22
21
  adapter: mysql2
23
22
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
24
23
  timeout: 5000
25
24
  username: root
26
25
  password: password
27
- # host: db # コメントアウトして、下記を追加
28
26
  host: 127.0.0.1
27
+ # host: localhost
28
+
29
+ development:
30
+ <<: *default
31
+ database: development_database
32
+
33
+ # Warning: The database defined as "test" will be erased and
34
+ # re-generated from your development database when you run "rake".
35
+ # Do not set this db to the same as development or production.
29
- ...
36
+ test:
37
+ <<: *default
38
+ database: test_database
39
+
40
+ production:
41
+ <<: *default
42
+ database: production_database
30
43
  ```
31
44
 
32
45
  ローカルで、rspecを実行して動作しますでしょうか?

2

sockエラー対応

2021/09/25 14:34

投稿

mj29
mj29

スコア136

answer CHANGED
@@ -25,7 +25,7 @@
25
25
  username: root
26
26
  password: password
27
27
  # host: db # コメントアウトして、下記を追加
28
- host: localhost
28
+ host: 127.0.0.1
29
29
  ...
30
30
  ```
31
31
 

1

レスをもとに追記

2021/09/25 03:52

投稿

mj29
mj29

スコア136

answer CHANGED
@@ -7,4 +7,57 @@
7
7
  (2) test用のmigrateを実行してから、(1)を実行
8
8
  ```bash
9
9
  docker-compose exec web bundle exec rake db:migrate RAILS_ENV=test
10
- ```
10
+ ```
11
+
12
+ ### 【追記】 9/25
13
+
14
+ ローカルとdockerで2つのrubyが存在するようですね。
15
+ まずはローカルで動作確認してみましょう。
16
+
17
+ databese.yml を下記のように修正します。
18
+
19
+ ```yaml
20
+ ...
21
+ default: &default
22
+ adapter: mysql2
23
+ pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
24
+ timeout: 5000
25
+ username: root
26
+ password: password
27
+ # host: db # コメントアウトして、下記を追加
28
+ host: localhost
29
+ ...
30
+ ```
31
+
32
+ ローカルで、rspecを実行して動作しますでしょうか?
33
+
34
+
35
+ **【ここから先、小咄なのでテキトウに聞いてください】**
36
+ 現実世界(macOS)とどっかの仮想世界(docker内のlinux)の2つの世界のよく似たrubyさんがいらっしゃるようで、
37
+ DaigoIkedaさんは、その2人を同一人物として命令されているようです。
38
+ この2人はよく似てますが別人なので、住む世界(OS)も年齢(version)も持っているスキル(gem list)も違います。
39
+
40
+ 現実世界のrubyさんの年齢とスキルを調べる
41
+ ```sh
42
+ ruby -v
43
+ gem list
44
+ ```
45
+ 仮想世界のrubyさんの年齢とスキルを調べる
46
+ ```sh
47
+ docker-compose exec web ruby -v
48
+ docker-compose exec web gem list
49
+ ```
50
+
51
+ また、mysqlさんは、仮想世界の住人ですが、現実世界でも会話できるよう回線を引いています。
52
+ 仮想世界では、db:3306 で通話できますが、現実世界では、localhost:3306で通話します。
53
+
54
+ ですので、どちらか片方にだけ命令すると決めるといいかもしれません。
55
+
56
+ それと厄介なことに、Dockerfileを確認したところ仮想世界のrubyさんのスキルは、Gemfileを更新してもdocker-compose buildしないと更新されない構成になっています。
57
+
58
+ 個人的には、DBはdockerで起動し、APP(rails)はローカルのRVMを使って開発したほうがいいです。
59
+ macユーザは特になのですが、docker for macで頻繁に変更されるディレクトリをマウントすると死ぬほど遅く、猛烈なストレスで開発どころじゃなくなります。
60
+ docker-syncを使うと速度的には改善されますが、スリープすると同期されなくなることがあったり、どうでもいい気苦労をしなければならなくなります。
61
+
62
+ 参考)
63
+ https://qiita.com/pocari/items/0340049742927f3a94b7