Gak Perlu Dotenv Pakai Rails Credentials Sebagai Ganti
Sebetulnya kalau pakai Rails kita udah gak perlu lagi pake Dotenv. Karena Rails sendiri menyediakan credentials generator yang jauh lebih keren dibandingkan dotenv.
Apa itu Rails Credentials
Rails credentials adalah tool bawaan rails untuk membuat file config berformat Yaml yang ter-encrypt.
Karena ter-encrypt pasti punya kuncinya. Nah kunci ini terbentuk pada saat kamu generate dengan nama file master.key
terletak di direktori config
.
Isi kuncinya:
cat config/master.key
Jadi yang perlu kamu lakukan terhadap kunci tersebut adalah simpan baik-baik jangan sampai hilang atau kecolong.
Keungulan Rails Credentials dibandingkan dotenv yakni file confignya ter-encrypt sehingga gak sembarang orang bisa liat. Di sisi lain, Rails Credentials udah ada sejak versi 4, jadi kita gak perlu lagi pasang gem
tambahan.
Cara Pakai
Kamu cukup ketik perintah berikut:
bundle exec rails credentials:edit
Lalu taru isi credentials-nya pakai format Yaml. contoh:
google_api: anu-key-nya-google
Kemudian untuk aksesnya cukup pakai method.
Rails.application.credentials.google_api
Perintah di atas sudah cukup buat kamu yang baru buat project Rails dan variabel pada terminal kamu sudah terpenuhi.
Kalau belum? Set dulu terminal variablenya.
Set $EDITOR atau $VISUAL variable
Buat variable $EDITOR
dan $VISUAL
variable di .bashrc
atau .zshrc
mu.
Isi variable tersebut mengikuti editor yang biasa kamu pakai contoh vscode atau vim.
Vim
echo "export EDITOR=vim" >> ~/.bashrc
echo "export VISUAL=$EDITOR" >> ~/.bashrc
source ~/.bashrc
VSCode
echo "export EDITOR='code --wait'" >> ~/.bashrc
echo "export VISUAL=$EDITOR" >> ~/.bashrc
source ~/.bashrc
Nah kalau sudah bisa langsung lakukan edit credentials seperti command sebelumnya.
bundle exec rails credentials:edit
Tambahan
Environment
Perlu diketahui bahwa pembuatan credentials di Rails kamu bisa set berdasarkan tiga environment yakni development
, test
dan production
.
Perintahnya seperti ini:
bundle exec rails credentials:edit --environment development
Cara Akses
Untuk akses variable jika cuma satu level kamu bisa menggunakan method
. Kalau dua atau lebih wajib gunakan kurung dengan symbol.
Contoh satu level
Rails.application.credentials.google_api
Contoh dua level
Rails.application.credentials[:google][:api]
atau bisa pakai dig
Rails.application.credentials.dig(:google, :api)
Akan terjadi Error
Untuk existing project mungkin akan mengalami error, kamu akan diberi peringatan bahwa key
yang kamu gunakan untuk meng-generate credentials salah, meskipun kamu belum pernah sama sekali menggunakan Rails Credentials ini.
Kenapa bisa begitu? Karena master.key
yang kamu gunakan sudah tidak berlaku pada saat pertama kali generate project rails atau pada saat kamu pindah komputer atau pada saat kamu baru meng-cloning repository project.
Cara Mengatasinya
Cara mengatasinya paling gampang kamu hapus master.key
dan semua file confignya.
rm -f config/master.key
rm -f config/credentials*.enc
Tapi cara di atas tidak disarankan karena kamu akan menulis ulang semua config dari project mu. Cara lainya kamu bisa tanya ke senior yang buat project itu.
Jika dia tidak tau baru kamu perlu bikin ulang dengan menghapusnya. Kalau, dia tau kamu perlu mengganti saja isi master.key
dengan keynya.
vim config/master.key
Atau bisa bypass dengan environment RAILS_MASTER_KEY
RAILS_MASTER_KEY=anu-keynya bundle exec rails credentials:edit
Sip sampai di sini dulu ya, moga bermanfaat hehehe 😅