質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

Q&A

解決済

1回答

3280閲覧

RubyのENV.fetchの後の{ }の中の記述について

hello_space

総合スコア24

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

0グッド

0クリップ

投稿2020/05/17 05:34

前提

Railsでアプリを作成しています。
MySQLのpassword等の環境変数設定についての疑問なのですが、自分の中ではpassword等のデータをgithubにpushしないように環境変数に設定すると理解しています。
調べていると

ENV[]
ENV.fetch()

の2種類の設定方法があることがわかりました。
そこで以下のdatabase.ymlについて質問があります。

databaseyml

1default: &default 2 adapter: mysql2 3 encoding: utf8 4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 5 host: <%= ENV.fetch("DATABASE_HOST") { "localhost" } %> 6 username: <%= ENV.fetch("DATABASE_USER") { "root" } %> 7 password: <%= ENV.fetch("DATABASE_PASSWORD") { "password" } %> 8 database: <%= ENV.fetch("DATABASE_NAME") { "database" } %>

ENV.fetch()の動き方については調べ、環境変数が存在していれば環境変数を読み込み、なければ{ }の中を読み込むものであると理解しています。

fetchを使った方が良いという記事をよく見かけるのですが、これだと{ }の中にパスワードとかをベタ書きしてしまっているので環境変数を設定している意味が無いのではと思ってしまいました。
それとも全く関係のないものを{ }の中には書き込むのでしょうか?例えばチーム開発等でこのdatabase.ymlを共有する場合、{ }の中にはhogeとかを入れておいて git cloneしてもらった後に各自の環境のパスワードに変更してもらうみたいな感じでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

これだと{ }の中にパスワードとかをベタ書きしてしまっているので環境変数を設定している意味が無いのではと思ってしまいました。

ローカル環境のパスワードであれば、ベタ書きしても特に問題ありません(どうしても気になるなら、中括弧ごと外しておけばfetchが例外を投げてくれます)。

投稿2020/05/17 06:29

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hello_space

2020/05/17 06:47

そういうことだったんですね。本番環境のデータベースとごっちゃになっていました。 確かにproductionの方は秘匿していますね。 お早い回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問