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:
parent
996c70f298
commit
61423f03a6
2 changed files with 14 additions and 5 deletions
|
@ -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']
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue