2016-12-19 3 views
0

У меня есть следующая задача грабли ...Отладка рек задачи, призывающая к действию контроллера

task :demote_sausages => :environment do 
    session = ActionDispatch::Integration::Session.new(Rails.application) 
    puts "this is the demote sausages task" 
    actions = UserAction.where action_date: Time.now.yesterday.strftime("%m/%d/%Y") 
    actions.each do |a| 
    session.post "/demote_sausage", {user_id: a.user_id} 
    end 
end 

... а вот действия контроллера ...

def demote_sausage 
    puts "made it to controller action" 
    @z_options[:body][:id] = params[:user_id] 
    @z_options[:body][:type] = 1 
    HTTParty.post("https://api.blah.org/v1/user/update", @z_options) 
    end 

Моего вопрос есть, я не уверен, что я делаю это с моим действием с контроллером или нет. Я вижу сообщение puts в задаче rake, но я НЕ вижу пометок в действии контроллера (но, может быть, я не должен?).

Любые советы по отладке того, что происходит в контроллере?

ответ

0

Я отлажена его, назначив сессию переменной, а затем его отображения:

task :demote_sausages => :environment do 
    session = ActionDispatch::Integration::Session.new(Rails.application) 
    puts "this is the demote sausages task" 
    actions = UserAction.where action_date: Time.now.yesterday.strftime("%m/%d/%Y") 
    actions.each do |a| 
    var = session.post "/demote_sausage", {user_id: a.user_id} 
    puts var.inspect 
    end 
end 

Делая что я мог видеть, что этот запрос был возврате кода 422 об ошибке: Не удается проверить CSRF токен подлинность Завершена 422 Unprocessable. Я немного смущен, почему эта ошибка возникает. Я думал, что 422 - это когда запрос делается из домена, отличного от того, где работает ваше приложение. В этом случае все его локальные хосты. Если у кого-то есть хороший ответ, добавьте его в качестве комментария.

Поскольку я делаю запрос на отправку здесь, мне нужно пропустить проверку токена аутентификации. Я сделал это вот так ...

skip_before_action :verify_authenticity_token, :only => [:demote_sausage] 

... в моем контроллере.

Смежные вопросы