Извлекать сторонние данные и сохранять в переменной приложения - PullRequest
1 голос
/ 22 марта 2010

Мне нужно периодически выполнять фоновое задание, выбирая данные с сайта погоды.

Как в рельсах я могу получить json с удаленного URL и сохранить его на сервере? Кроме того, кажется, что нет смысла хранить это в БД, так как в рельсах я могу хранить переменную, доступную для всех пользователей?

Ответы [ 2 ]

5 голосов
/ 23 марта 2010

Почему бы вам не сохранить данные в кеше (локальном ИЛИ memcached).

Запись / обновление кэша при извлечении данных фида:

def load_feed
  Rails.cache.write("feed_data", get_data_from_feed)
end

Чтение из кэша, когда вам необходим доступ к данным:

def read_feed
  Rails.cache.fetch("feed_data") { get_data_from_feed }
end
1 голос
/ 23 марта 2010

Я лишь частично отвечу на ваш вопрос.

Если вы хотите сохранить его как некоторую переменную, доступную для всех пользователей, то, вероятно, вы можете создать my_new_variable.rb в config/initializers. И вы можете сгенерировать некоторый код, который определяет и инициализирует вашу переменную (возможно, константа лучше). Тогда плохая часть этого подхода - вы должны перезагрузить сервер. Если вы используете passanger, тогда просто touch tmp/restart.txt, и все готово.

Вы также можете сохранить его в файле yml и загрузить при запуске сервера.

Даже если бы вы хранили его по-другому, возможно, самый простой способ - это перезапустить сервер, чтобы загрузить эту новую переменную. В противном случае при каждом запросе следует проверять наличие новой переменной (например, проверить время последнего обновления файла) или перезагружать этот файл.

Итак, для меня это выглядит как самый простой способ - сохранить его в дБ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...