Неопределенный метод Ruby on Rails `[]' для true:TrueClass Capybara и полтергейст

Я продолжаю получать прерывистую ошибку undefined method '[]' for true:TrueClass при запуске моего рабочего. Половину времени он будет работать, а затем просто выйдет из строя с этой ошибкой. Кажется, это происходит только в том случае, если я пытаюсь запустить несколько рабочих одновременно, но они не все выполняют одну и ту же задачу...

    2014-04-02T08:00:02Z 48940 TID-oukh38lzc WARN: {"retry"=>true, "queue"=>"default", "class"=>"TrackerWorker", "args"=>[1151], "jid"=>"9cb5d0bd4519afda81e999ec", "enqueued_at"=>1396425476.576768, "error_message"=>"undefined method `[]' for true:TrueClass", "error_class"=>"NoMethodError", "failed_at"=>2014-04-02 08:00:02 UTC, "retry_count"=>0}
    2014-04-02T08:00:02Z 48940 TID-oukh38lzc WARN: undefined method `[]' for true:TrueClass
    2014-04-02T08:00:02Z 48940 TID-oukh38lzc WARN: /Users/max/.rvm/gems/ruby-2.0.0-p353@rocket/gems/poltergeist-1.5.0/lib/capybara/poltergeist/browser.rb:54:in `find'
    /Users/max/.rvm/gems/ruby-2.0.0-p353@rocket/gems/poltergeist-1.5.0/lib/capybara/poltergeist/driver.rb:114:in `find'
    /Users/max/.rvm/gems/ruby-2.0.0-p353@rocket/gems/poltergeist-1.5.0/lib/capybara/poltergeist/driver.rb:118:in `find_xpath'
    /Users/max/.rvm/gems/ruby-2.0.0-p353@rocket/gems/capybara-2.2.0/lib/capybara/node/finders.rb:154:in `block in resolve_query'
    /Users/max/.rvm/gems/ruby-2.0.0-p353@rocket/gems/capybara-2.2.0/lib/capybara/node/base.rb:77:in `synchronize'
    /Users/max/.rvm/gems/ruby-2.0.0-p353@rocket/gems/capybara-2.2.0/lib/capybara/node/finders.rb:150:in `resolve_query'
    /Users/max/.rvm/gems/ruby-2.0.0-p353@rocket/gems/capybara-2.2.0/lib/capybara/node/finders.rb:32:in `block in find'
    /Users/max/.rvm/gems/ruby-2.0.0-p353@rocket/gems/capybara-2.2.0/lib/capybara/node/base.rb:81:in `synchronize'
    /Users/max/.rvm/gems/ruby-2.0.0-p353@rocket/gems/capybara-2.2.0/lib/capybara/node/finders.rb:30:in `find'
    /Users/max/.rvm/gems/ruby-2.0.0-p353@rocket/gems/capybara-2.2.0/lib/capybara/node/actions.rb:53:in `fill_in'
    /Users/max/.rvm/gems/ruby-2.0.0-p353@rocket/gems/capybara-2.2.0/lib/capybara/session.rb:396:in `block (2 levels) in <class:Session>'
    /Users/max/.rvm/gems/ruby-2.0.0-p353@rocket/gems/capybara-2.2.0/lib/capybara/dsl.rb:51:in `block (2 levels) in <module:DSL>'

Пример моего воркера следующий, не очень сложный.

    options = {
      :js_errors => false,
    }
    Capybara.register_driver :poltergeist do |app|
      Capybara::Poltergeist::Driver.new(app, options)
    end
    Capybara.default_driver = :poltergeist
    Capybara.javascript_driver = :poltergeist
    Capybara.default_wait_time = 20
    Capybara.ignore_hidden_elements = true

    begin
      visit('/')
      sleep 2
      save_screenshot("/Users/max/Sites/rocket/screens/0.jpg",  full: true)
      sleep 2
      fill_in "search", :with => 'testing' 
      sleep 2
      save_screenshot("/Users/max/Sites/rocket/screens/1.jpg",  full: true)
      sleep 2
      click_button "Search"
      sleep 2
      save_screenshot("/Users/max/Sites/rocket/2.jpg",  full: true)
    end

Он сделает первый снимок экрана, а затем потерпит неудачу.


person Max Rose-Collins    schedule 02.04.2014    source источник


Ответы (1)


Об этом сообщается здесь https://github.com/teampoltergeist/poltergeist/issues/482. и до сих пор открыт.

person Morgan Christiansson    schedule 18.07.2014