모든 것이 로컬에서 잘 작동합니다. 이 Heroku가 작동하지 않습니다 :select! heroku에 항상 nil을 반환합니다.
class Ticket
def self.how_many_today
todays_tickets = Ticket.all.to_a.select!{ |t| t.created_at.to_date == Date.today }
todays_tickets == nil ? 0 : todays_tickets.count
end
# This method is scheduled with cron
def self.reset_todays_nr
@todays_nr = nil
end
def self.set_todays_nr
if @todays_nr.nil?
@todays_nr = how_many_today + 1
else
@todays_nr += 1
end
end
end
즉, heroku run console
에서 재생하면이 불일치 계시 :
select!
에 대한 조건과 같은
irb(main):023:0* set_todays_nr
=> 1
irb(main):024:0> set_todays_nr
=> 2
irb(main):025:0> set_todays_nr
=> 3
irb(main):026:0> Ticket.all.to_a.select!{ |t| t.created_at.to_date == Date.today }
=> nil
irb(main):028:0> Ticket.first.created_at
=> Sat, 20 Dec 2014 16:19:31 UTC +00:00
irb(main):029:0> Ticket.first.created_at.to_date
=> Sat, 20 Dec 2014
irb(main):030:0> Date.today
=> Sat, 20 Dec 2014
irb(main):031:0> Date.today.to_date
=> Sat, 20 Dec 2014
irb(main):032:0> Date.today == Ticket.first.created_at.to_date
=> true
irb(main):033:0> Date.today.to_date == Ticket.first.created_at.to_date
=> true
irb(main):034:0>
irb(main):035:0* Ticket.all.to_a.select!{ |t| t.created_at.to_date == Date.today }
=> nil
irb(main):036:0> Ticket.all.map(&:created_at)
=> [Sat, 20 Dec 2014 16:19:31 UTC +00:00, Sat, 20 Dec 2014 16:21:12 UTC +00:00]
irb(main):037:0> _[0].to_date == Date.today
=> true
가 수동 검사가 일부 요소가 표시 해당 조건에 있지만 select!
은 배열을 반환하지 않습니다. 다시 한번, 이것은 국부적으로 작동합니다.
데이터베이스가 로컬에서와 마찬가지로 마이그레이션되고 조명기가로드되었습니다. self.reset_todays_nr
이 문제를 일으킬 수있는 cron으로 예약되었지만이 경우에는이 방법이 실행되지 않으므로 문제가 아니라 관련성이 높습니다.하지만이 문제는 내가 생각한 것보다 더 고급 인 경우를 대비하여 게시했습니다. 아무도 나를 도와 줄 수 없습니까?