2009-12-30 10 views
2

J'utilise Ruby Rical pour générer essentiellement un icalendar en réponse à un original icalendar spécifiant que j'assiste (accepte) l'invitation.Ruby Rical Timezone problème

Je peux générer la réponse correctement, mais j'ai un problème avec les fuseaux horaires, essentiellement si je laisse inférer RiCal le bon fuseau horaire, cela fonctionne correctement en fonction de la chaîne TimeZone spécifiée dans le fichier d'origine.

Permettez-moi de mettre cela en exemples:

je peux répondre à cette invitation de Google Calendar sans problèmes:

BEGIN:VCALENDAR 
PRODID:-//Google Inc//Google Calendar 70.9054//EN 
VERSION:2.0 
CALSCALE:GREGORIAN 
METHOD:REQUEST 
BEGIN:VEVENT 
DTSTART:20091226T210000Z 
DTEND:20091226T220000Z 
DTSTAMP:20091223T191926Z 
ORGANIZER;CN=xxx xxx:mailto:[email protected] 
UID:[email protected] 
ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;RSVP=TRUE;CN=xxxx xxxx;X-NUM-GUESTS=0:mailto:[email protected] 
CREATED:20091223T191925Z 
DESCRIPTION:View your event at 4NmIxMmM1ZmJiODM4OTEx&ctz=America%2FLos_Angeles&hl=en. 
LAST-MODIFIED:20091223T191925Z 
LOCATION:800-292-2393 pin 1234 
SEQUENCE:0 
STATUS:CONFIRMED 
SUMMARY:test google calendar attendance response 
TRANSP:OPAQUE 
END:VEVENT 
END:VCALENDAR 

Mais je reçois une erreur (pas de fichier à charger - tzinfo/définitions/États-Unis/Pacifique) quand je produis la réponse à un Ical (Mac Ical.app) invitation:

BEGIN:VCALENDAR 
CALSCALE:GREGORIAN 
VERSION:2.0 
METHOD:REQUEST 
PRODID:-//Apple Inc.//iCal 4.0.1//EN 
BEGIN:VTIMEZONE 
TZID:US/Pacific 
BEGIN:DAYLIGHT 
TZOFFSETFROM:-0800 
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU 
DTSTART:20070311T020000 
TZNAME:PDT 
TZOFFSETTO:-0700 
END:DAYLIGHT 
BEGIN:STANDARD 
TZOFFSETFROM:-0700 
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU 
DTSTART:20071104T020000 
TZNAME:PST 
TZOFFSETTO:-0800 
END:STANDARD 
END:VTIMEZONE 
BEGIN:VEVENT 
ATTENDEE;CN="[email protected]";CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTI 
ON;RSVP=TRUE:mailto:[email protected] 
DTEND;TZID=US/Pacific:20091231T091500 

Comme vous le voyez TZID: US/Pacifique est une zone horaire invalide pour indentifier riques, donc dans ces cas .. Comment feriez-vous pour répondre à ce type d'icalendar en utilisant Rical et en conservant le Timezone original?

S'il vous plaît si je ne suis pas clair avec la question, demandez-moi tout ce dont vous avez besoin.

Répondre

2

Je pense que RiCal utilise TZInfo pour sa prise en charge du fuseau horaire. Vous utilisez vraisemblablement actuellement la version réduite de TZInfo qui est incluse dans la bibliothèque ActiveSupport de Ruby on Rails. Cela ne contient pas la définition de fuseau horaire US/Pacifique dont vous avez besoin.

La version complète de TZInfo inclut US/Pacific. Si vous installez la gemme tzinfo, puis redémarrez votre application Rails, vous devriez trouver que cela fonctionne.

+1

WOW c'est tellement cool, je vais vérifier ça maintenant :) –