Код, который вы разместили, работал в более ранних версиях (0.3.x) GCal4Ruby, если я не ошибаюсь.Возможно, у вас более свежая версия гема, и вы получаете эту ошибку.Некоторые вещи изменились в жемчужине ... Я постараюсь пройти через несколько (надеюсь, это исправит ваши ошибки).
Во-первых, GCal4Ruby теперь использует гем gdata в фоновом режиме, поэтому вызовы запроса немного изменились.Это влияет на приведенный выше код.
Во-вторых, в результате Calendar.find
больше не использует :scope
, поэтому ваш метод find возвращает массив календарей (вместо одного объекта Calendar).Определение метода:…
def self.find(service, query, args = {})
…
end
… где query
может быть хэшем с :id => <id>
(который возвращает объект календаря) или строкой - с именем календаря, которое вы можете выбратьИспользуешь.Это вернет массив, поэтому для получения первого результата вместо {:scope => :first}
вы можете просто получить элемент .first массива.Ваш код теперь будет выглядеть так:
cal = GCal4Ruby::Calendar.find(service, 'YOUR_CALENDAR',{}).first
Кроме того, выборка событий здесь прервана.Есть несколько способов получения событий календаря.Можно было бы позвонить cal.events
после получения вашего календаря, но при этом были бы получены все события.Если вы хотите фильтровать по диапазону дат или максимальным результатам, вам нужно запросить класс Event и передать идентификатор календаря в виде аргумента.Event.find имеет точно такое же определение, что и Calendar.find, и работает практически точно так же (поиск по id или по параметрам запроса).Вы можете прочитать исходный код для event.rb и посмотреть, как он работает, он также хорошо документирован.
Как только вы получите свой объект cal сверху, вы можете получить его события, такие как:
events = GCal4Ruby::Event.find(service, "", {
:calendar => cal.id, 'start-min' => Time.parse("08/04/2000").utc.xmlschema,
'start-max' => Time.parse("06/01/2010").utc.xmlschema
})
Обратите внимание, что 'start-min' и 'start-max' не символы, а строкии что даты передаются как xmlschema.Из комментария event.rb:
args :: хеш, содержащий необязательные дополнительные параметры запроса для использования.Ограничьте поиск одним календарем, передав идентификатор календаря как {:calendar => calendar.id}
.См. здесь и здесь для получения полного списка возможных значений.
Другие аргументы, такие как :max_results
, также изменились на «max-results».Ссылки на api docs содержат список всех возможных аргументов.Надеюсь, это поможет.