pasar valores de airbrake como variables de entorno

y asegurarse que siempre respondamos con una llave aunque no se guarde
This commit is contained in:
f 2021-01-25 16:05:35 -03:00
parent 996c70f298
commit 61423f03a6
2 changed files with 14 additions and 5 deletions

View file

@ -59,6 +59,8 @@ class DeployLocal < Deploy
'PATH' => paths.join(':'), 'PATH' => paths.join(':'),
'SPREE_API_KEY' => site.tienda_api_key, 'SPREE_API_KEY' => site.tienda_api_key,
'SPREE_URL' => site.tienda_url, 'SPREE_URL' => site.tienda_url,
'AIRBRAKE_PROJECT_ID' => site.id.to_s,
'AIRBRAKE_PROJECT_KEY' => site.airbrake_api_key,
'JEKYLL_ENV' => Rails.env, 'JEKYLL_ENV' => Rails.env,
'LANG' => ENV['LANG'] 'LANG' => ENV['LANG']
} }

View file

@ -4,23 +4,30 @@ class Site
module Api module Api
extend ActiveSupport::Concern extend ActiveSupport::Concern
AIRBRAKE_SECRET = 'an api key for airbrake'
included do included do
encrypts :api_key encrypts :api_key
before_save :add_api_key_if_missing! before_save :add_api_key_if_missing!
# Genera mensajes secretos que podemos usar para la API de cada sitio. # Genera mensajes secretos que podemos usar para la API de cada
# sitio.
#
# XXX: Si no se configura una API key del sitio o genérica, no
# tenemos forma de verificar los mensajes, pero la generación de
# llaves no va a fallar.
def verifier def verifier
@verifier ||= ActiveSupport::MessageVerifier.new api_key @verifier ||= ActiveSupport::MessageVerifier.new(api_key || Rails.application.credentials.api_key || SecureRandom.hex(64))
end end
def airbrake_api_key def airbrake_api_key
@airbrake_api_key ||= verifier.generate(AIRBRAKE_SECRET, purpose: :airbrake) @airbrake_api_key ||= verifier.generate(airbrake_secret, purpose: :airbrake)
end end
private private
def airbrake_secret
Rails.application.credentials.airbrake || SecureRandom.hex(64)
end
# Asegurarse que el sitio tenga una llave para la API # Asegurarse que el sitio tenga una llave para la API
def add_api_key_if_missing! def add_api_key_if_missing!
self.api_key ||= SecureRandom.hex(64) self.api_key ||= SecureRandom.hex(64)