質問編集履歴

9

試したこと5を追加しました。

2022/02/14 06:38

投稿

euicnvhf202105
euicnvhf202105

スコア132

test CHANGED
File without changes
test CHANGED
@@ -241,6 +241,19 @@
241
241
 
242
242
  ```
243
243
 
244
+ ### 試したこと5
245
+ 試したこと1の状態にしてrailsを立ち上げ
246
+ ENV['DATABASE_URL']を確認してみました。
247
+
248
+ ```databaseurl.sh
249
+
250
+ $ docker exec -it xxxxxxx bash
251
+ xxxxxxxx# rarils console
252
+ irb(main):001:0> puts ENV['DATABASE_URL']
253
+ => nil
254
+
255
+ ```
256
+
244
257
  ### 環境
245
258
  mac 10.15.7
246
259
  ruby 2.6.8

8

質問の書き方を変えてみました。

2022/02/14 00:22

投稿

euicnvhf202105
euicnvhf202105

スコア132

test CHANGED
@@ -1 +1 @@
1
- railsのdatabase.ymlでなぜかproductionが読み込まれてしまう(docker compose)
1
+ railsのdatabase.ymlでなぜかproductionが読み込まれてしまう理由が知りたい(docker compose)
test CHANGED
@@ -6,9 +6,12 @@
6
6
  ローカルでdocker compose up -dしてもproductionを読み込みにいってしまいます。
7
7
  後述する試したこと1のようにrailsのソースではなくテキスト直書きにすると普通にrailsが起動します。
8
8
 
9
- ### 実現したいこと|知りたいこと
9
+ ### 実現したいこと
10
10
  ローカルで立ち上げた時はdevelopment、本番ではproductionを読み込みにいくよう設定したいです。
11
+
12
+ ### 知りたいこと
13
+ 以下のソースでなぜproductionが読み込まれエラーになるかが知りたいです。
11
- 設定が間違っている箇所、確認すべき場所などご教授いただけましたら幸いです。
14
+ また設定が間違っている箇所、確認すべき場所など合わせてご教授いただけましたら幸いです。
12
15
 
13
16
  ### 発生している問題・エラーメッセージ
14
17
  ブラウザに初回アクセスした際は以下のメッセージが白背景の黒文字で表示されます。

7

タイポを修正しました。

2022/02/13 10:41

投稿

euicnvhf202105
euicnvhf202105

スコア132

test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,5 @@
1
1
  ### 前提
2
- ローカルで作成したraiilsをdocker-composeにバインドマウントして動かしています。
2
+ ローカルで作成したrailsをdocker-composeにバインドマウントして動かしています。
3
3
  その際、dababase.ymlのproduction設定が意図せず読み込まれてしまいます。
4
4
  自分なりに確認していたところproduction設定が読み込まれるきっかけっぽいところを発見しました。
5
5
  database.ymlのproductionでRails.application.credentialsとして読み込もうとすると

6

文章を簡潔にしました。

2022/02/13 10:40

投稿

euicnvhf202105
euicnvhf202105

スコア132

test CHANGED
File without changes
test CHANGED
@@ -245,6 +245,5 @@
245
245
  Docker version 20.10.8, build 3967b7d
246
246
 
247
247
  ### 備考
248
- 不足情報などがありましたら可能な限り対応したいと考えています。
249
- またわかりづらい部分がありましたらお手数ですがご指摘ください。
248
+ 不足情報、わかりづらい部分がありましたらお手数ですがご指摘ください。
250
249
  よろしくお願いいたします。

5

誤変換を修正しました。

2022/02/13 10:39

投稿

euicnvhf202105
euicnvhf202105

スコア132

test CHANGED
File without changes
test CHANGED
@@ -175,7 +175,7 @@
175
175
 
176
176
  ### 試したこと2
177
177
  以下のようにproductionをコメントアウトしても
178
- # username: <%= Rails.application.credentials.db[:user] %>
178
+ username: <%= Rails.application.credentials.db[:user] %>
179
179
  ↑の行で同じエラーが出ます。
180
180
 
181
181
  ```database.yml

4

前提、実現したいことなど追記しました。わかりにくいところを整理しました。

2022/02/13 10:36

投稿

euicnvhf202105
euicnvhf202105

スコア132

test CHANGED
File without changes
test CHANGED
@@ -1,11 +1,13 @@
1
- ### 質問
1
+ ### 前提
2
+ ローカルで作成したraiilsをdocker-composeにバインドマウントして動かしています。
2
- dababase.ymlのコメントアウトしているproduction設定が意図せず読み込まれてしまいます。
3
+ その際、dababase.ymlのproduction設定が意図せず読み込まれてしまいます。
3
- ~~確認すべきファイルや設定場所などの見当がつかない状態です。
4
- どこから確認すべきかをご教授いただけましたら幸いです。~~
5
4
  自分なりに確認していたところproduction設定が読み込まれるきっかけっぽいところを発見しました。
6
- database.ymlに本番環境でRails.application.credentialsとして読み込もうとすると
5
+ database.ymlのproductionでRails.application.credentialsとして読み込もうとすると
7
6
  ローカルでdocker compose up -dしてもproductionを読み込みにいってしまいます。
7
+ 後述する試したこと1のようにrailsのソースではなくテキスト直書きにすると普通にrailsが起動します。
8
+
9
+ ### 実現したいこと|知りたいこと
8
- ローカルで立ち上げた時はdevelopment、本番ではproductionを設定したいです
10
+ ローカルで立ち上げた時はdevelopment、本番ではproductionを読み込みにいくよう設定したいです
9
11
  設定が間違っている箇所、確認すべき場所などご教授いただけましたら幸いです。
10
12
 
11
13
  ### 発生している問題・エラーメッセージ
@@ -40,24 +42,27 @@
40
42
  pool: 5
41
43
  timeout: 3306
42
44
  host: db
45
+
43
46
  development:
44
47
  <<: *default
45
48
  username: root
46
49
  host: db
47
50
  database: rails_sample_db
48
51
  socket: /tmp/mysql.sock
52
+
49
- # test:
53
+ test:
50
- # <<: *default
54
+ <<: *default
51
- # username: root
55
+ username: root
52
- # host: <%= ENV['DB_HOST'] %>
56
+ host: <%= ENV['DB_HOST'] %>
53
- # database: rails_sample_db
57
+ database: rails_sample_db
54
- # socket: /tmp/mysql.sock
58
+ socket: /tmp/mysql.sock
59
+
55
- # production:
60
+ production:
56
- # <<: *default
61
+ <<: *default
62
+ database: <%= Rails.application.credentials.db[:name] %>
57
- # username: <%= Rails.application.credentials.db[:user] %>
63
+ username: <%= Rails.application.credentials.db[:user] %>
58
- # host: <%= Rails.application.credentials.db[:host] %>
59
- # password: <%= Rails.application.credentials.db[:password] %>
64
+ password: <%= Rails.application.credentials.db[:password] %>
60
- # database: <%= Rails.application.credentials.db[:name] %>
65
+ host: <%= Rails.application.credentials.db[:host] %>
61
66
  ```
62
67
  ```docker-env
63
68
  #.docker-env
@@ -135,7 +140,7 @@
135
140
 
136
141
  ```
137
142
 
138
- ### 試したこと
143
+ ### 試したこと
139
144
  database.ymlを以下のようにしてdocker compose up -dすると
140
145
  普通に立ち上がりデータベースにデータも保存できます。
141
146
  ```database.yml
@@ -168,7 +173,42 @@
168
173
  host: test
169
174
  ```
170
175
 
171
- ### 試したこと2
176
+ ### 試したこと
177
+ 以下のようにproductionをコメントアウトしても
178
+ # username: <%= Rails.application.credentials.db[:user] %>
179
+ ↑の行で同じエラーが出ます。
180
+
181
+ ```database.yml
182
+ default: &default
183
+ adapter: mysql2
184
+ encoding: utf8mb4
185
+ pool: 5
186
+ timeout: 3306
187
+ host: db
188
+
189
+ development:
190
+ <<: *default
191
+ username: root
192
+ host: db
193
+ database: rails_sample_development
194
+ socket: /tmp/mysql.sock
195
+
196
+ # test:
197
+ # <<: *default
198
+ # username: root
199
+ # host: <%= ENV['DB_HOST'] %>
200
+ # database: rails_sample_db
201
+ # socket: /tmp/mysql.sock
202
+
203
+ # production:
204
+ # <<: *default
205
+ # username: <%= Rails.application.credentials.db[:user] %>
206
+ # host: <%= Rails.application.credentials.db[:host] %>
207
+ # password: <%= Rails.application.credentials.db[:password] %>
208
+ # database: <%= Rails.application.credentials.db[:name] %>
209
+ ```
210
+
211
+ ### 試したこと3
172
212
  以下のページを参考にproductionのcredentialsを設定してみました。
173
213
  https://zenn.dev/banrih/articles/f22f0a70bbead2a02110
174
214
 
@@ -185,7 +225,7 @@
185
225
 
186
226
  こちらは同じエラーメッセージが出るだけでした。
187
227
 
188
- ### 試したこと
228
+ ### 試したこと
189
229
  以下のURLの「Railsはcredentialファイルを暗号化するためのマスターキーにconfig/master.keyか環境変数ENV["RAILS_MASTER_KEY"]を使用します。」を見て
190
230
  https://railsguides.jp/security.html#%E7%8B%AC%E8%87%AA%E3%81%AEcredential
191
231
 

3

ソースコードのdocker-envに追記しました。

2022/02/13 10:12

投稿

euicnvhf202105
euicnvhf202105

スコア132

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
  dababase.ymlのコメントアウトしているproduction設定が意図せず読み込まれてしまいます。
3
3
  ~~確認すべきファイルや設定場所などの見当がつかない状態です。
4
4
  どこから確認すべきかをご教授いただけましたら幸いです。~~
5
- テストしていたところproduction設定が読み込まれるきっかけっぽいところを発見しました。
5
+ 自分なりに確認していたところproduction設定が読み込まれるきっかけっぽいところを発見しました。
6
6
  database.ymlに本番環境でRails.application.credentialsとして読み込もうとすると
7
7
  ローカルでdocker compose up -dしてもproductionを読み込みにいってしまいます。
8
8
  ローカルで立ち上げた時はdevelopment、本番ではproductionを設定したいのですが
@@ -59,7 +59,9 @@
59
59
  # password: <%= Rails.application.credentials.db[:password] %>
60
60
  # database: <%= Rails.application.credentials.db[:name] %>
61
61
  ```
62
- ```.docker-env
62
+ ```docker-env
63
+ #.docker-env
64
+ RAILS_MASTER_EKY=ここにはconfig/master.keyの英数字をコピペしています。
63
65
  RAILS_ENV=development
64
66
  RACK_ENV=development
65
67
  ```
@@ -183,7 +185,20 @@
183
185
 
184
186
  こちらは同じエラーメッセージが出るだけでした。
185
187
 
188
+ ### 試したこと3
189
+ 以下のURLの「Railsはcredentialファイルを暗号化するためのマスターキーにconfig/master.keyか環境変数ENV["RAILS_MASTER_KEY"]を使用します。」を見て
190
+ https://railsguides.jp/security.html#%E7%8B%AC%E8%87%AA%E3%81%AEcredential
191
+
192
+ macのターミナルで以下のコマンドを打ってみましたがRAILS_MASTER_KEYは出てきませんでした。
193
+
194
+
195
+ ```export.sh
196
+
197
+ $ export -p
198
+
199
+ ```
200
+
186
- ###環境
201
+ ### 環境
187
202
  mac 10.15.7
188
203
  ruby 2.6.8
189
204
  raiils 6.1.4.1

2

試したことを追加しました。

2022/02/13 07:36

投稿

euicnvhf202105
euicnvhf202105

スコア132

test CHANGED
File without changes
test CHANGED
@@ -166,6 +166,23 @@
166
166
  host: test
167
167
  ```
168
168
 
169
+ ### 試したこと2
170
+ 以下のページを参考にproductionのcredentialsを設定してみました。
171
+ https://zenn.dev/banrih/articles/f22f0a70bbead2a02110
172
+
173
+ ```credentials
174
+
175
+ $ EDITOR="vim" bin/rails credentials:edit -e production
176
+ db:
177
+ name: production
178
+ user: rdsuser
179
+ password: rdspassword
180
+ host: rdshost.amazon.com
181
+
182
+ ```
183
+
184
+ こちらは同じエラーメッセージが出るだけでした。
185
+
169
186
  ###環境
170
187
  mac 10.15.7
171
188
  ruby 2.6.8

1

質問、ソースコード、やってみたことを追記&修正しました。

2022/02/13 06:56

投稿

euicnvhf202105
euicnvhf202105

スコア132

test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,12 @@
1
1
  ### 質問
2
2
  dababase.ymlのコメントアウトしているproduction設定が意図せず読み込まれてしまいます。
3
- 確認すべきファイルや設定場所などの見当がつかない状態です。
3
+ ~~確認すべきファイルや設定場所などの見当がつかない状態です。
4
- どこから確認すべきかをご教授いただけましたら幸いです。
4
+ どこから確認すべきかをご教授いただけましたら幸いです。~~
5
+ 少しテストしていたところproduction設定が読み込まれるきっかけっぽいところを発見しました。
6
+ database.ymlに本番環境でRails.application.credentialsとして読み込もうとすると
7
+ ローカルでdocker compose up -dしてもproductionを読み込みにいってしまいます。
8
+ ローカルで立ち上げた時はdevelopment、本番ではproductionを設定したいのですが
9
+ 設定が間違っている箇所、確認すべき場所などご教授いただけましたら幸いです。
5
10
 
6
11
  ### 発生している問題・エラーメッセージ
7
12
  ブラウザに初回アクセスした際は以下のメッセージが白背景の黒文字で表示されます。
@@ -114,6 +119,20 @@
114
119
  volumes:
115
120
  db-volume:
116
121
  ```
122
+
123
+ なおdatabase.ymlのproductionで読みに行く値は以下のようにホストPCで設定しています。(docker execでアプリコンテナ内で実行できなかったため)
124
+
125
+ ```credentials.sh
126
+
127
+ $ EDITOR=vim rails credentials:edit
128
+ db:
129
+ name: production
130
+ user: rdsuser
131
+ password: rdspassword
132
+ host: rdshost.amazon.com
133
+
134
+ ```
135
+
117
136
  ### 試したこと
118
137
  database.ymlを以下のようにしてdocker compose up -dすると
119
138
  普通に立ち上がりデータベースにデータも保存できます。
@@ -124,12 +143,27 @@
124
143
  pool: 5
125
144
  timeout: 3306
126
145
  host: db
146
+
127
147
  development:
128
148
  <<: *default
129
149
  username: root
130
150
  host: db
151
+ database: rails_sample_development
152
+ socket: /tmp/mysql.sock
153
+
154
+ test:
155
+ <<: *default
156
+ username: root
157
+ host: <%= ENV['DB_HOST'] %>
131
158
  database: rails_sample_db
132
159
  socket: /tmp/mysql.sock
160
+
161
+ production:
162
+ <<: *default
163
+ database: test
164
+ username: test
165
+ password: test
166
+ host: test
133
167
  ```
134
168
 
135
169
  ###環境