Я добавил в свой проект возможность импортировать календари (файлы ics). Код выглядит примерно так:Ror: Импорт файла ics
events = ICS::Event.file(File.open(ics_temp_file))
events.each do |event|
if event.summary and event.started_on and event.description
Event.create(:description => event.description == '\n' ? nil : event.description,
:organization_id => @organization.id,
:user_id => current_user.id,
:event_type => Event::OTHER,
:date_time => event.started_on,
:title => event.summary,
:active => true)
else
logger.warn("***Error*** Importing ics (bad event)")
end
end
Как мы видим, я использую драгоценный камень. Я исследовал пару месяцев назад, и это выглядело как лучший вариант для обработки файлов ics, который извлекает события из файла ics. Этот камень может извлечь такие события:
BEGIN:VEVENT
something here
END:VEVENT.
Проблема заключается в следующем; некоторые пользователи пытались импортировать календари (я не знаю, что инструмент, который они использовали для создания календаря), но события, как это:
BEGIN:VFREEBUSY
something here
END:VFREEBUSY.
Так cuestion есть, вы знаете, лучшую альтернативу для разбора файлов Ics ? возможно, что-то, что может извлечь все виды событий, и вы можете сделать что-то вроде events.map (&: vevents) или events.map (&: vfreebusy). Есть ли у вас идеи справиться с этим? Спасибо!
изменения: извините, я забыл упомянуть, что список известных атрибутов для этого драгоценного камня это
TRANSP
DTEND
UID
DTSTAMP
LOCATION
DESCRIPTION
URL
STATUS
SEQUENCE
SUMMARY
DTSTART
CREATED
# For the alarm…
# BEGIN:VALARM (ignored)
X-WR-ALARMUID
TRIGGER
ATTACH
ACTION
# END:VALARM (ignored)
, следовательно, легко понять, почему этот камень не извлекая все виды событий.
Aehm ... Я думаю, что в вашем посте есть опечатка ... или у меня еще нет кофе: «Проблема в том, что этот камень может извлекать такие события:», а затем «Проблема заключается в том, следующие: некоторые пользователи пытались импортировать календари (я не знаю, какой инструмент они использовали для создания календаря), но события такие: – Atastor