Не можете поразить mixpanel в отложенной работе? - PullRequest
3 голосов
/ 01 августа 2011

Я использую delayed_job для выполнения некоторых фоновых задач.Между ними я хочу отслеживать некоторые события.Я использую mixpanel gem для отслеживания событий.В контроллере все работает отлично.Но не в отложенной работе.

Код, который я использую

@original_message = Message.find(message_id)
@mixpanel= Mixpanel::Tracker.new("43242637426346287482", message_id, true)
@mixpanel.track_event("blank_body", {:reset_result => "sucess" })
//message_id is a unique for every request.

Я указал

  gem 'mixpanel' in gemfile

              {undefined method `[]=' for 45:Fixnum

/ Users / mohit / .rvm / gems / ruby-1.8.7-p334 / gems / mixpanel-0.9.0 / lib / mixpanel / tracker.rb: 38: в clear_queue'\n/Users/mohit/.rvm/gems/ruby-1.8.7-p334/gems/mixpanel-0.9.0/lib/mixpanel/tracker.rb:13:in инициализировать \ n / Users / mohit / projects / textadda / lib / message_job.rb: 109: в new'\n/Users/mohit/projects/textadda/lib/message_job.rb:109:in выполнить '\ n / Users / mohit / .rvm / gems / ruby-1.8.7-p334 / gems / delayed_job-2.1.4 / lib / delayed / backend / base.rb: 87: в invoke_job'\n/Users/mohit/.rvm/gems/ruby-1.8.7-p334/gems/delayed_job-2.1.4/lib/delayed/worker.rb:120:in run "\ n / Users / mohit / .rvm / rubies / ruby-1.8.7-p334 / lib / ruby ​​/ 1.8 / timeout.rb: 67: в timeout'\n/Users/mohit/.rvm/gems/ruby-1.8.7-p334/gems/delayed_job-2.1.4/lib/delayed/worker.rb:120:in запустите '\ n / Users / mohit / .rvm / rubies /ruby-1.8.7-p334 / lib / ruby ​​/ 1.8 / benchmark.rb: 308: в realtime'\n/Users/mohit/.rvm/gems/ruby-1.8.7-p334/gems/delayed_job-2.1.4/lib/delayed/worker.rb:119:in запустите '\ n / Users / mohit / .rvm / gems / ruby-1.8.7-p334 / gems / delayed_job-2.1.4 / lib / delayed / worker.rb: 177: в reserve_and_run_one_job'\n/Users/mohit/.rvm/gems/ruby-1.8.7-p334/gems/delayed_job-2.1.4/lib/delayed/worker.rb:104:in work_off '\ n / Users / mohit / .rvm / gems / ruby-1.8.7-p334 / gems / delayed_job-2.1.4 / lib /delayed / worker.rb: 103: в times'\n/Users/mohit/.rvm/gems/ruby-1.8.7-p334/gems/delayed_job-2.1.4/lib/delayed/worker.rb:103:in work_off '\ n / Users / mohit / .rvm / gems / ruby-1.8.7-p334 / gems / delayed_job-2.1.4 / lib / delayed / worker.rb:78: в start'\n/Users/mohit/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/benchmark.rb:308:in режиме реального времени '\ n / Users / mohit / .rvm / gems / ruby-1.8.7-p334 / gems / delayed_job-2.1.4 / lib / delayed / worker.rb: 77: в start'\n/Users/mohit/.rvm/gems/ruby-1.8.7-p334/gems/delayed_job-2.1.4/lib/delayed/worker.rb:74:inцикл '\ п / Users / меснажмите / .rvm / gems / ruby-1.8.7-p334 / gems / delayed_job-2.1.4 / lib / delayed / worker.rb: 74: в start'\n/Users/mohit/.rvm/gems/ruby-1.8.7-p334/gems/delayed_job-2.1.4/lib/delayed/tasks.rb:9\n/Users/mohit/.rvm/gems/ruby-1.8.7-p334/gems/rake-0.9.2/lib/rake/task.rb:205:in вызовите \ n / Users / mohit / .rvm / gems/ruby-1.8.7-p334/gems/rake-0.9.2/lib/rake/task.rb:205:in execute'\n/Users/mohit/.rvm/gems/ruby-1.8.7-p334/gems/rake-0.9.2/lib/rake/task.rb:200:in каждый '\ n / Users / mohit / .rvm / gems / ruby-1.8.7-p334 / gems / rake-0.9.2 / lib / rake / task.rb: 200: in execute'\n/Users/mohit/.rvm/gems/ruby-1.8.7-p334/gems/rake-0.9.2/lib/rake/task.rb:158:in invoke_with_call_chain '\ n / Users / mohit / .rvm / rubies / ruby-1.8.7-p334 / lib / ruby/1.8/monitor.rb:242:in synchronize'\n/Users/mohit/.rvm/gems/ruby-1.8.7-p334/gems/rake-0.9.2/lib/rake/task.rb:151:in invoke_with_call_chain '\ n / Users / mohit / .rvm / gems / ruby-1.8.7-p334 / gems / rake-0.9.2 / lib / rake / task.rb: 144: в invoke'\n/Users/mohit/.rvm/gems/ruby-1.8.7-p334/gems/rake-0.9.2/lib/rake/application.rb:112:in invoke_task '\ n / Users / mohit / .rvm / gems / ruby-1.8.7-p334 / gems / rake-0.9.2 / lib / rake / application.rb: 90: в top_level'\n/Users/mohit/.rvm/gems/ruby-1.8.7-p334/gems/rake-0.9.2/lib/rake/application.rb:90:in каждый '\ n / Users / mohit / .rvm / gems / ruby-1.8.7-p334 / gems / rake-0.9.2 / lib / rake / application.rb: 90: в top_level'\n/Users/mohit/.rvm/gems/ruby-1.8.7-p334/gems/rake-0.9.2/lib/rake/application.rb:129:in standard_exception_handling' \ n /Users / mohit / .rvm / gems / ruby-1.8.7-p334 / gems / rake-0.9.2 / lib / rake / application.rb: 84: в top_level'\n/Users/mohit/.rvm/gems/ruby-1.8.7-p334/gems/rake-0.9.2/lib/rake/application.rb:62:in запустите '\ n / Users / mohit / .rvm/gems/ruby-1.8.7-p334/gems/rake-0.9.2/lib/rake/application.rb:129:in standard_exception_handling'\n/Users/mohit/.rvm/gems/ruby-1.8.7-p334/gems/rake-0.9.2/lib/rake/application.rb:59:in run '\ n / Users / mohit / .rvm / gems / ruby-1.80,7-P334 / драгоценные камни / грабли-0.9.2 / bin / грабли: 32 \ п / Users / Мохит / .rvm / GEms / ruby-1.8.7-p334 / bin / rake: 19: in `load '\ n / Users / mohit / .rvm / gems / ruby-1.8.7-p334 / bin / rake: 19

РЕДАКТИРОВАТЬ

Я реализовал mixpanel в фоновом режиме, используя стандартный запрос get.Но я все еще ищу решение, как я могу использовать гем Mixpanel в фоновом процессе.

Ответы [ 2 ]

1 голос
/ 09 августа 2011

Вы должны просто делать что-то вроде этого:

@mixpanel= Mixpanel::Tracker.new("43242637426346287482", {:REMOTE_ADDR => message_id}, true)
@mixpanel.track_event("blank_body", {:reset_result => "sucess" })

Гем ожидает, что вторая переменная будет средой запроса, поэтому таким образом получит IP-адрес и отправит его на mixpanel.com. Но я даже не уверен, действительно ли это необходимо, поэтому я думаю, что даже простой

@mixpanel= Mixpanel::Tracker.new("43242637426346287482", {}, true)
@mixpanel.track_event("blank_body", {:reset_result => "sucess" })

должно работать.

Надеюсь, это поможет.

1 голос
/ 05 августа 2011

ПРИМЕЧАНИЕ: ЭТОТ ОТВЕТ СЕЙЧАС УСТАРЕЛ НА ДАТУ 15 ОКТЯБРЯ 2012 ГОДА, КАК СПОСОБ ИНИЦИАЛИЗАЦИИ НЕ ДОЛЖЕН ПРИНЯТЬ ПАРАМЕТР ENV

Пример https://github.com/zevarito/mixpanel Mixpanel::Tracker.new вызывается следующим образом:

Mixpanel::Tracker.new("YOUR_MIXPANEL_API_TOKEN", request.env, true)

В контексте контроллера request.env - это хеш.

В вашем коде над передачей message_id в качестве второго аргумента, который выглядиткак целое числоИзвините, больше ничего не могу поделать, не знаю ничего о геме mixpanel, но это корень вашей проблемы.

Если в документации по mixpanel API вы указали целое число в качестве второго параметраэто неверно.Вот код, относящийся к вашей ошибке: https://github.com/zevarito/mixpanel/blob/master/lib/mixpanel/tracker.rb

module Mixpanel
  class Tracker
    def initialize(token, env, async = false)
      @token = token
      @env = env
      @async = async
      clear_queue
    end

# snip

    def clear_queue
      @env["mixpanel_events"] = []
    end

# snip

  end
end

Передача целого числа в качестве второго аргумента инициализатору не будет работать, поскольку класс Fixnum не имеет хеш-присваивания ([]=) метод, который является именно тем сообщением об ошибке, которое вы получаете.

Если в документации сказано, что это может быть целое число, вам, вероятно, следует сообщить о проблеме в mixpanel.

...