Rails - использовать RSpec-методы "get" и "response" в задаче Rake - PullRequest
1 голос
/ 18 июля 2011

Я знаю, что в RSpec есть полезные методы "get" и "response.should" для запуска интеграционных тестов - я хочу знать, как я могу использовать эти (или другие методы для достижения того же результата) в задаче Rake:

desc "Check all content items with type 0 and do something"
task :my_task => :environment do
    ContentItem.where("content_type = ?", 0).each do |obj|
        get "/my_path/"+obj.value
        if (response has a certain html tag)
            perform some action on obj
        end        
    end
end

Я знаю, что не могу просто запустить такие методы rspec, но это то, что мне нужно сделать, и мне нужно иметь возможность обрабатывать информацию, возвращаемую при открытии /my_path/obj.value. У кого-нибудь есть предложения?

1 Ответ

0 голосов
/ 18 июля 2011

почему вам нужно пройти через URL, чтобы выполнить это действие с вашим ContentItem?Почему бы просто не использовать местный объект и делать вещи?

По сути, похоже, что вы смешиваете код вида с кодом модели здесь ... объект модели не должен зависеть от значений в html ... если какая-то информация вычисляется в представлении... поместите его в метод ContentItem model и вызовите этот код из представления ... или из этой задачи rake.

Edit: Ok .... хорошо, есливам действительно нужно ПОЛУЧИТЬ URL - загляните в рубиновый гем Net :: Http - который будет буквально получать URL.Rails не делает это стандартно ... даже для локальных URL.

После этого вы сможете использовать синтаксический анализатор, такой как hpricot или nokogiri, для анализа результатов и поиска нужного тега.

...