Ruby on rails 调试正在调用控制器操作的rake任务

Ruby on rails 调试正在调用控制器操作的rake任务,ruby-on-rails,rake,Ruby On Rails,Rake,我有以下任务 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")

我有以下任务

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
我的问题是,我不确定我是否正在执行控制器操作。我在rake任务中看到puts消息,但在控制器操作中没有看到puts(但也许我不应该?)


关于如何调试控制器中发生的事情的任何提示?

我通过将会话分配给一个变量,然后显示它来调试它:

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无法处理。我有点困惑,为什么会抛出这个错误。我认为422是当一个请求是从一个域而不是你的应用程序运行的域发出的时候。在这种情况下,它的所有本地主机。如果有人有一个好的答案,请添加它作为评论

因为我在这里执行post请求,所以需要跳过对auth令牌的检查。我是这样做的

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

…在我的控制器中。

我通过将会话分配给一个变量,然后显示它来调试它:

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无法处理。我有点困惑,为什么会抛出这个错误。我认为422是当一个请求是从一个域而不是你的应用程序运行的域发出的时候。在这种情况下,它的所有本地主机。如果有人有一个好的答案,请添加它作为评论

因为我在这里执行post请求,所以需要跳过对auth令牌的检查。我是这样做的

skip_before_action :verify_authenticity_token, :only => [:demote_sausage]
…在我的控制器里