Обычно люди используют CSV Data Set Config для этой формы параметризации.
Сконфигурировать его следующим образом:
Вот и все, теперь вы можете ссылаться на строку из CSV как ${message}
, где это необходимо, каждый пользователь будет читать свою собственную строку, без дубликатов, когда все строки будут прочитаны - проверка закончится ,
Другой вариант - использовать функцию __ StringFromFile () , однако в этом случае тест не остановится, вам нужно будет самостоятельно установить количество итераций. Также функция __StringFromFile()
сохраняет весь файл в памяти, поэтому он не подходит для больших наборов данных.
Другая опция состоит в том, чтобы создать задачу граблей, которая выполняется заданием крона. Чтобы сделать это, создайте файл some_file.rake
и вставленный в него Ваш lib/tasks
папка. Ваш файл мог бы быть похожим на это:
Направляющие 2.x:
task :send_daily_mail, :needs => :environment do
Model.send_daily_mail
end
Направляющие 3.x:
task :send_daily_mail => :environment do
Model.send_daily_mail
end
Затем используйте крон для выполнения его так часто, как Вам нравится:
cd /path/to/app && /usr/bin/rake send_daily_mail
Обратите внимание, что Вы, возможно, должны были бы поместить RAILS_ENV=production
в Вашем crontab, если Ваше приложение находится в режиме разработки по умолчанию.
Я был впечатлен (и план попробовать) драгоценный камень rufus-планировщика, обсужденный в этом сообщении в блоге
Он описывает что-то вроде этого:
scheduler = Rufus::Scheduler.start_new
scheduler.every("1m") do
DailyDigest.send_digest!
end
.. который кажется довольно простым. Интересно, как легкий это должно было бы добавить Основанную на HTML конфигурацию?
BackgroundRB - то, что я использую, и он работает прекрасный. У меня есть несколько электронных писем, посланных, сгенерированных BackgroundRB. У меня также есть другие задачи также. Поскольку это включает обе запланированных задачи и асинхронные задачи (задачи, которые занимают больше времени, чем нормальный клиент-серверный цикл ответа).
Я использую его, и я очень доволен им.
Добавьте метод класса для одной из Ваших моделей, которые обработают это для Вас. Теперь попытайтесь выполнить тот метод с помощью сценария бегуна
./script/runner "MyModel.send_daily_mail" RAILS_ENV=production
Удостоверьтесь, что все работает хорошо. Если это делает, то мы должны заставить команду работать универсально путем установки пути к проекту правильно.
cd /path/to/my/rails/project && ./script/runner "MyModel.send_daily_mail" RAILS_ENV=production
Теперь изменитесь на любой случайный directiry и выполните ту команду. Если это работает правильно, выполненный crontab -e
и вставьте команду, там устанавливают для выполнения ежедневно в 7:00. Существует тонна объяснения о формате крона на там, если Вы гуглите для них и должны быть довольно просты выяснить.
Пойдите с задачей граблей и заданием крона, как уже говорится в принятом ответе. Однако обратите внимание, что, обновляя сам файл крона ручная задача. Это может быть прекрасным, если Вы не изменяете его во время разработки. Иначе здесь как можно позволить Capistrano сделать это для Вас: http://push.cx/2008/deploying-crontab-with-your-rails-app