Вставить в базу данных Rails - PullRequest
0 голосов
/ 17 марта 2011

Я новичок в Ruby on Rails и хотел создать сканер, который собирает данные и вставляет их в базу данных.В настоящее время я использую Heroku, поэтому не могу получить доступ к базе данных напрямую, и мне было интересно, как лучше всего интегрировать скрипт для сканирования в инфраструктуру RoR.Я бы использовал почасовой или ежедневный cron для запуска скрипта.

Ответы [ 2 ]

2 голосов
/ 17 марта 2011

Если вы используете Rails в Heroku, вы можете просто использовать ORM-адаптер, такой как Datamapper или ActiveRecord. Это тогда дает вам доступ к вашей базе данных, но в основном через слой. Если вам нужно отправить raw sql в базу данных, вы можете, но обычно это не рекомендуется, поскольку ORM предоставляет практически все, что вам нужно.

По сути, вы просто создаете модели в вашем приложении rails, как обычно, и связанные поля в таблице.

rails g model page meta_title:string page_title:string

rake db:migrate # This has to be run on heroku too "heroku rake db:migrate" after you have pushed your code up

Тогда в вашем скрипте сканирования вы можете создавать записи, просто используя вашу модель ...

Page.create(:title => crawler[:title], :meta_title => crawler[:meta_title])

Обычно вы можете использовать Всякий раз (https://github.com/javan/whenever) для управления вашими cronjobs, но в Heroku я не уверен, как это работает, поскольку я не настраивал Heroku раньше.

0 голосов
/ 17 марта 2011

Я бы предложил 1 из 2 вариантов:

  1. Используйте скрипт ruby, который использует require rubygems вместе с другими вспомогательными библиотеками (такими как Rails, ActiveRecord и т. Д.), Которые вы хотите выполнить для выполнения задачи, а затем создайте этот сценарий.

  2. Если вы используете Rails также для обслуживания веб-приложений, используйте файл hosts машины, чтобы wget (или аналогичный) на этом компьютере правильно отображал запросы на этот экземпляр rails; оттуда просто установите его как веб-приложение и используйте команду wget в вашем CRON. Не очень эффективно, но если вы просто ищете что-то быстрое и грязное на основе существующей установки, это будет хорошо работать. Просто отправьте STDOUT и STDERR на /dev/null, чтобы не накапливать CRON-файлы.

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