2016-06-20 10 views
0

Я пытаюсь показать своим пользователям простое сообщение, в то время как их пользовательский PDF создается и прикрепляется к модели через Paperclip. Затем выведите предварительный просмотр после завершения.Опрос Работа Sidekiq для завершения через состояние обработки в базе данных

Простейшее решение, которое я могу найти, это ответ Майка Перхама в this question. «Используйте базу данных для хранения состояния каждой фотографии и обновите состояние Sidekiq».

Без сомнения, вы заметите, что я все еще изучаю Javascript, JQuery, Rails &, как писать хорошие ответы на вопросы. Тем не менее, вот что я до сих пор имел в виду Франкенштейн.

Пожалуйста, дайте мне знать, если я работаю в правильном направлении здесь?

# generate_insert.rb 
class GenerateInsert 
    include Sidekiq::Worker 
    def perform(customization_id) 
    customization = Customization.find(customization_id) 
    customization.update_attribute(:processing, true) 
    # code to perform, generate PDF via Prawn and attach via Paperclip 
    customization.update_attribute(:processing, false) 
    customization.save! 
    end 
end 

# customizations/show.html.erb 
<div id='message'>First Message</div> 

# messages.js 
var i = 1; 
var sampleMessages = [ "First Message", "Second Message", "Third Message" ]; 
    setInterval(function() { 
     var newText = sampleMessages[i++ % sampleMessages.length]; 
     $("#message").fadeOut(500, function() { 
      $(this).text(newText).fadeIn(500); 
     }); 
    }, 1 * 3000); 
}); 

# show.js.erb 
$("#message").replaceWith("<%= j render 'customization' %>"); 

# poller.js 
CustomizationPoller = 
poll: -> 
    setTimeout @request, 5000 

request: ->, 
    $.get($('???').data('url')) 

jQuery -> 
if $('#???').length > 0 // customization processing? 
    CustomizationPoller.poll() 

ответ

1

С помощью имеющихся у вас инструментов вы, кажется, находитесь на правильном пути. Сохраняя это просто, пока ваши пользователи не потребуют более надежного решения, это ИМХО - хорошая идея.

Если вы, однако, хотите иметь больше взаимодействий, подобных этому (например, пользователь делает что-то и ждет обновления), вы можете рассмотреть возможность использования веб-сокета или даже использование таких инструментов, как https://rethinkdb.com. Конечно, это зависит от того, сколько взаимодействий вы планируете иметь.

+0

Благодарим за понимание. – rclark

 Смежные вопросы

  • Нет связанных вопросов^_^