With .env files, it was easy to inject variables in webpacker js packs. Since 5.2, you can use the encrypted secrets, but is there a way to read (decrypt) them in inject some of them on webpacker build time?
The master key When you create a new rails app a file called credentials. yml. enc is added to the config directory. This file will be decrypted in a production environment using a key stored either on a RAILS_MASTER_KEY environment variable or a master.
Rails stores secrets in config/credentials. yml. enc, which is encrypted and cannot be edited directly.
Your text editor will open an unencrypted version of your credentials. If you don't have EDITOR set, you can run EDITOR=vi bin/rails credentials:edit or use your favorite text editor. After saving the file, the encrypted version will be saved to config/credentials. yml.
You can read from credentials and pass that value to Webpacker.
Create a config/initializers/webpacker.rb
file.
Pass it to the Webpacker::Compiler
through file above.
Webpacker::Compiler.env['VALUE'] = Rails.application.credentials.dig(:value)
Read it as console.log(process.env.VALUE)
.
If you want to try it on development
, you need to add these to the bin/webpack-dev-server
:
require_relative '../config/application'
Rails.application.initialize!
Sources:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With