LoginSignup
1
1

More than 3 years have passed since last update.

direnv(linux)

Posted at

はじめまして

みなさんはじめまして。本日やっと問題解決し、雄叫びをあげましたkyonです。
備忘録として初投稿いたします。
どうぞよろしくお願いいたします。

環境

CentOS Linux release 8.1.1911 (Core)
mysql Ver 8.0.17 for Linux on x86_64 (Source distribution)
Visual Studio Code バージョン: 1.43.1

タイトルにもありますとおりlinuxでdirenvを使いたく、以下URLを参考とさせていただき、
参考URL Linuxでdirenvを使う
.envrcファイルを作成し、Railsプロジェクトの /binディレクトリにパスを通すところまですんなりとできましたが、その後ずっとコイツと戦っておりました。

Access denied for user 'ENV['MYSQL_DATABASE']'@'localhost' (using password: YES)

多分一週間くらい戦ったと思います。
調べれば直接パスワードをdatabase.ymlへ記述すればいいことは知っていましたが、先々のことを考えた結果direnvを使うことにしました。
が、しかしどうしても分からず。。

.envrc
export 'DATABASE_USERNAME'="root"
export 'DATABASE_PASSWORD'="password" ←mysqlのパスワード

。。。。。?

database.yml
default: &default
  adapter: mysql2
  encoding: utf8mb4
  username: ENV['DATABASE_USERNAME']
  password: ENV['DATABASE_PASSW0RD']

。。。。。。。。??

ただ調べていくうちに.envrcファイルは合ってそうだな、と思っていてdatabase.ymlのusernameとpasswordの書き方がずっと不明でした。

今日ふとdatabase.yml の管理方法いろいろ
こちらのURLに辿り着き、問題解決したと言うことです。

問題解決

database.yml には <%= ... %> で Ruby コードを埋め込むことができます。

そしてdatabase.ymlを以下のように記述しました。

database.yml
default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: <%= ENV['DATABASE_USERNAME'] %>
  password: <%= ENV['DATABASE_PASSWORD'] %>

埋め込んでなかったんですね。
お恥ずかしい。

駄文ですが最後まで読んでいただき、ありがとうございました。
これを機に投稿していきたいと思います。
kyonでした。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1