-1
This is my scheduler.rb in my initializer file 

    unless defined?(Rails::Console) || File.split($0).last == 'rake' 
s = Rufus::Scheduler.singleton 
s.every '1m', :tag => 'main_process' do 
    Rails.logger.info "hello, it's #{Time.now}" 
    Rails.logger.flush 
    Bid.all.each do |bid| 
    id = bid.event_id 
     puts "*" * 50 
     puts bid.id 
     puts bid.event_id 
     puts "*" * 50 
     # @price = BuyNowBid.find_by(bid_id: params[:bid_id]) 
     @events = Unirest.get("https://api.seatgeek.com/2/events/#{id}?&client_id=NjQwNTEzMXwxNDgxNDkxODI1").body 
     if @events["stats"] 
     @low = @events["stats"]["lowest_price"] || 0 
     @avg = @events["stats"]["average_price"] || 0 
     BuyNowBid.create(bid_id: bid.id, lowest_price: @low , average_price: @avg) 

     if @low <= bid.bid 
      send_message("+13125501444", "Lowest price matched! Buy your ticket now!") 
      bid.bid = 0 
      bid.save 
     end 

     else 
     puts 'problem with @events?' 
     p @events 
     end 


    end 
end 

конецРуфус драгоценный камень, как сохранить одну работу работает при остановке другого

Защиту send_message (phone_number, alert_message) account_sid = "" auth_token = ""

@client = Twilio::REST::Client.new account_sid, auth_token 
    @twilio_number = "" 
    message = @client.messages.create(
     :from => @twilio_number, 
     :to => phone_number, 
     :body => alert_message 
    ) 
    puts message.to 
    end 

так что я m запускает задание, чтобы вытащить самую низкую цену каждую минуту из api, и когда самая низкая цена соответствует ставке, которую кто-то помещает, они получают текстовое уведомление, которое работает, хотя проблема, с которой я столкнулась, - это то, что я хочу, чтобы работа продолжала работать где-нибудь минута Я тяну вниз t от api, но я не хочу, чтобы пользователь получал одно и то же текстовое уведомление каждую минуту.

Прямо сейчас у меня оно есть, так что этого не происходит, но после того, как ставка согласована, она по существу удаляется из базы данных. так что в основном я спрашиваю, как я могу продолжать очищать api каждую минуту за самую низкую цену, но отправлять только один текст пользователю, уведомляющему их о совпадении ставок, и не нужно удалять эту ставку из базы данных.

+0

Очень нечеткий, ваш вопрос название носит технический характер, в то время как ваш вопрос (нижний, большой, параграф) кажется более высоким. У меня создалось впечатление, что вы могли бы поддерживать индексирование индексов в памяти в своем последнем полученном уведомлении и каждый раз проверять его, чтобы определить, стоит ли отправлять новое уведомление. – jmettraux

ответ

1

Я был действительно более думать, что это я только что создал новый столбец под названием сохраненную предложение на моем столе торгов и установить, что равное bid.bid, прежде чем он стал нулевым

 @events = Unirest.get("https://api.seatgeek.com/2/events/#{id}?&client_id=NjQwNTEzMXwxNDgxNDkxODI1").body 

     if @events["stats"] 
     @low = @events["stats"]["lowest_price"] || 0 
     @avg = @events["stats"]["average_price"] || 0 
     BuyNowBid.create(bid_id: bid.id, lowest_price: @low , average_price: @avg) 

     if @low <= bid.bid 
      send_message("+13125501444", "Lowest price matched for #{@events["title"]} ! Buy your ticket now for #{bid.saved_bid}!") 
      **bid.saved_bid = bid.bid** 
      bid.bid = 0 
      bid.save 
Смежные вопросы