Rails 3.2.1: calling the undefined method causes the validation to be validated for 30 seconds

I am updating my application from 3.0.9 to 3.2.1 (ruby 1.9.3-p0, rvm, bundler), and one thing that I could not find yet is the problem. I have a controller specification (in spec / controllers) that displays views for each example. The template that it creates can have any undefined method (for example, calling "- blahblah" in haml), and this makes the test hang for more than 30 seconds. Here is the error:

undefined local variable or method `blahblahblah' for #<#<Class:0x007fa84f76cc90>:0x007fa849c578c8> 

I started the debugger, and the freeze occurred while trying to register an error. This happens in activesupport-3.2.1/lib/active_support/notifications/instrumenter.rb line 22 . So is it a Rails error, a Haml error, or some other library?

Here is my Gemfile just in case, if something I use might be a problem:

 source 'http://rubygems.org' source 'http://gems.github.com' source 'http://gemcutter.org' gem 'rails', '3.2.1' gem 'rake', '~> 0.9.2.2' gem 'mysql2', '~> 0.3.11' gem 'htmldoc' gem 'haml', '~> 3.1.4' gem 'sass', '~> 3.1.4' gem 'hpricot' gem 'curb' gem 'mini_magick' gem 'liquid', '~> 2.3.0' gem 'httparty', '~> 0.8.1' gem 'linkedin', '0.1.7', :require => 'linkedin' gem 'twitter', '~> 2.0.2', :require => 'twitter' gem 'mime-types', '>=1.16', :require => 'mime/types' gem 'oauth' gem 'roxml' gem 'nokogiri' gem 'sax-machine' gem 'googlecharts', '1.6.7', :require => 'gchart' gem 'pdf-reader', '~> 0.9.0' gem 'paper_trail' gem 'rubyzip', '0.9.4', :require => 'zip/zip' gem 'activemerchant', '~> 1.20.2', :require => 'active_merchant' gem 'compass', '~> 0.11.5' gem 'compass-rgbapng', '0.1.1', :require => 'rgbapng' gem 'fancy-buttons', '~> 1.1.1' gem 'ruby-openid' gem 'RedCloth', '~> 4.2.9' gem 'koala', '~> 1.0.0' gem 'scoped_search', '~> 2.3.6' gem 'wicked_pdf', '0.7.0' gem 'devise', '~> 2.0.0' gem 'paperclip', '~> 2.5.0' gem 'aws-sdk' # required for paperclip gem 'whois', '~> 2.0.4' gem 'validates_timeliness', '~> 3.0.8' gem 'will_paginate', '~> 3.0.2' gem 'hoptoad_notifier', '~> 2.4.11' gem 'savon', '~> 0.9.2' gem 'escape_utils' gem 'ajaxful_rating', '3.0.0.beta3' gem 'acts_as_list', '~> 0.1.3' gem 'despamilator', '~> 2.0' gem 'prawn', '~> 0.12.0', :submodules => true gem 'net-dns', '~> 0.6.1' gem 'authlogic', '~> 3.1.0' gem 'myspaceid-sdk', '~> 0.1.11', :require => 'myspace' gem 'in_place_editing', '~> 1.1.2' gem 'deadlock_retry', '~> 1.1.2' gem 'query_trace', '~> 0.1.1' gem 'aasm', '~> 3.0.2' gem 'vanity', '~> 1.7.1' gem 'prototype-rails', '~> 3.2.1' group :development, :test do gem 'rspec-rails', '~> 2.8.1' gem 'rspec' # one-liner to install these properly: bash < <(curl -L https://raw.github.com/gist/1333785) gem 'linecache19', '0.5.13' gem 'ruby-debug-base19', '0.11.26' gem 'capistrano' end group :test do gem 'factory_girl_rails' gem 'syntax' gem 'timecop', '~> 0.3.5' gem 'capybara' gem 'database_cleaner' gem 'cucumber-rails', '~> 1.2.1' gem 'cucumber' gem 'launchy' end 

Thanks!

+2
source share
1 answer

I found the answer to this question in the Rails tracker on Github (it still remains an open error). The problem was that when an error occurred, an instance of ActionDispatch::Routing::RouteSet , which, apparently, caused the object to check every item on which it was held. So, the more RouteSet, the longer #inspect . Here is the fix:

 module ActionDispatch module Routing class RouteSet alias inspect to_s end end end 

For more error information, see here .

+3
source

Source: https://habr.com/ru/post/1395738/


All Articles