no compilar varias veces desde el compilador
esto evita que se espamee el botón de publicar
This commit is contained in:
parent
10580d2b4f
commit
39eb584a97
3 changed files with 20 additions and 2 deletions
|
@ -10,7 +10,7 @@ class DeployJob < ApplicationJob
|
||||||
@site = Site.find(site)
|
@site = Site.find(site)
|
||||||
|
|
||||||
# Si ya hay una tarea corriendo, aplazar esta
|
# Si ya hay una tarea corriendo, aplazar esta
|
||||||
if @site.status == 'building'
|
if @site.building?
|
||||||
DeployJob.perform_in(60, site, notify)
|
DeployJob.perform_in(60, site, notify)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
|
@ -315,14 +315,25 @@ class Site < ApplicationRecord
|
||||||
|
|
||||||
# Poner en la cola de compilación
|
# Poner en la cola de compilación
|
||||||
def enqueue!
|
def enqueue!
|
||||||
!enqueued? && update_attribute(:status, 'enqueued')
|
waiting? && update(status: 'enqueued')
|
||||||
end
|
end
|
||||||
|
|
||||||
# Está en la cola de compilación?
|
# Está en la cola de compilación?
|
||||||
|
#
|
||||||
|
# TODO: definir todos estos métodos dinámicamente, aunque todavía no
|
||||||
|
# tenemos una máquina de estados propiamente dicha.
|
||||||
def enqueued?
|
def enqueued?
|
||||||
status == 'enqueued'
|
status == 'enqueued'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def waiting?
|
||||||
|
status == 'waiting'
|
||||||
|
end
|
||||||
|
|
||||||
|
def building?
|
||||||
|
status == 'building'
|
||||||
|
end
|
||||||
|
|
||||||
# Cargar el sitio Jekyll
|
# Cargar el sitio Jekyll
|
||||||
#
|
#
|
||||||
# TODO: En lugar de leer todo junto de una vez, extraer la carga de
|
# TODO: En lugar de leer todo junto de una vez, extraer la carga de
|
||||||
|
|
|
@ -102,6 +102,13 @@ class SitesControllerTest < ActionDispatch::IntegrationTest
|
||||||
'index.html'))
|
'index.html'))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test 'no se pueden encolar varias veces seguidas' do
|
||||||
|
assert_enqueued_jobs 2 do
|
||||||
|
post site_enqueue_url(@site), headers: @authorization
|
||||||
|
post site_enqueue_url(@site), headers: @authorization
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
test 'se pueden actualizar' do
|
test 'se pueden actualizar' do
|
||||||
name = SecureRandom.hex
|
name = SecureRandom.hex
|
||||||
design = Design.all.where.not(id: @site.design_id).sample
|
design = Design.all.where.not(id: @site.design_id).sample
|
||||||
|
|
Loading…
Reference in a new issue