Ruby on rails 如何每天自动更新ical事件(Rails)

Ruby on rails 如何每天自动更新ical事件(Rails),ruby-on-rails,refresh,icalendar,Ruby On Rails,Refresh,Icalendar,我在一个网站上工作,用户可以通过webcal订阅日历提要。 事件每天都在变化。当事件得到更新/删除/创建时,应相应地在用户本地日历上同步 如果用户选择在日历应用程序上每天自动更新,我知道日历应用程序将定期轮询日历的URL以检查更新 这在技术层面上究竟是如何运作的 代码(Rails): 控制器: respond_to do |format| format.html format.ics do cal = Icalendar::Calendar.new

我在一个网站上工作,用户可以通过webcal订阅日历提要。 事件每天都在变化。当事件得到更新/删除/创建时,应相应地在用户本地日历上同步

如果用户选择在日历应用程序上每天自动更新,我知道日历应用程序将定期轮询日历的URL以检查更新


这在技术层面上究竟是如何运作的

代码(Rails):

控制器:

respond_to do |format|
      format.html
      format.ics do
        cal = Icalendar::Calendar.new
        cal.x_wr_calname = 'My Calendar'
        events.each do |event|
        cal.event do |e|
            e.dtstart     = event.start_time
            e.dtend       = event.end_time
            e.summary     = "Calendar #{Area.where(area_code: events.first.area_code).first.name}"
            e.description = "placeholder"
         end
        end
        cal.publish
        render plain: cal.to_ical
      end
    end
在html中

    <button class="btn-subscribe">
        <%= link_to 'SUBSCRIBE TO ICAL', area_show_url(protocol: :webcal, format: :ics, id: Area.find(@selected_area.id)) %>
      </button>

感谢您的帮助和时间

它是如何工作的:

您的网站提供了一个日历提要(基本上是一个.ics文本/日历文件,可能是根据最新数据实时生成的,无需缓存)。希望该文件包含有效的RFC5545数据,从而显示中指定的任何事件更新(使用UID和序列以及每次VEVENT修改的LAST-MODIFIED)


订阅应用程序将根据自己的算法定义,在合适的时候检查任何更新。他们解析.ics文件,处理RFC5545事件定义,并相应地更新系统

这在技术层面上究竟是如何运作的?