Save time and headaches, and create a more easily maintainable set of pages, with ActiveScaffold. ActiveScaffold handles all your CRUD (create, read, update, delete) user interface needs, leaving you more time to focus on more challenging (and interesting!) problems.
MIT License
1.09k
stars
327
forks
source link
Endless (> 15min) loop with large amount of columns and nested scaffold #169
calling the controller like this: /user_clock_hlp/kalkbeschreibs
works fine.
But when I want to embed the scaffold in the view it hangs the whole rails server and I have to "kill -kill" it as CTRL-C won't work anymore.
Embedding some other scaffold in the same view works fine though.
It is very strange. Can somebody please give some thoughts, I am at a loss.
I am using:
Ubuntu 10.04
Rails 3.2.5
Gems included by the bundle:
actionmailer (3.2.5)
actionpack (3.2.5)
active_scaffold (3.2.12)
activemodel (3.2.5)
activerecord (3.2.5)
activerecord-sqlanywhere-adapter (1.0.0)
activeresource (3.2.5)
activesupport (3.2.5)
ansi (1.4.2)
arel (3.0.2)
authlogic (3.1.3)
builder (3.0.0)
bundler (1.1.4)
coffee-rails (3.2.2)
coffee-script (2.2.0)
coffee-script-source (1.3.3)
columnize (0.3.6)
daemons (1.1.8)
debugger (1.1.4)
debugger-linecache (1.1.1)
debugger-ruby_core_source (1.1.3)
erubis (2.7.0)
eventmachine (0.12.10)
execjs (1.4.0)
haml (3.1.6)
hike (1.2.1)
i18n (0.6.0)
journey (1.0.4)
jquery-rails (2.0.2)
jquery-ui-rails (1.0.0)
json (1.7.3)
libv8 (3.3.10.4)
mail (2.4.4)
mime-types (1.18)
multi_json (1.3.6)
polyglot (0.3.3)
rack (1.4.1)
rack-cache (1.2)
rack-ssl (1.3.2)
rack-test (0.6.1)
rails (3.2.5)
railties (3.2.5)
rake (0.9.2.2)
rdoc (3.12)
sass (3.1.19)
sass-rails (3.2.5)
sprockets (2.1.3)
sqlanywhere (0.1.6)
therubyracer (0.10.1)
thin (1.3.1)
thor (0.15.3)
tilt (1.3.3)
treetop (1.4.10)
turn (0.8.2)
tzinfo (0.3.33)
uglifier (1.2.5)
Here is a debug session where I was trying to figure out what was happening, perhaps it can help a little:
/home/likewise-open/APL/claudius/webdev/aplweb/app/views/user_clock/_as_kalkbeschreib.html.haml:4
= render :active_scaffold => "user_clock_hlp/kalkbeschreibs"
(rdb:1) b core.rb:156
*** No source file named core.rb
Set breakpoint anyway? (y/n) y
Breakpoint 1 file core.rb, line 156
(rdb:1) c
Breakpoint 1 at core.rb:156
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/config/core.rb:156
action = self.send(action_name)
(rdb:1) l
[151, 160] in /usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/config/core.rb
151 def _load_action_columns
152 #ActiveScaffold::DataStructures::ActionColumns.class_eval {include ActiveScaffold::DataStructures::ActionColumns::AfterConfiguration}
153
154 # then, register the column objects
155 self.actions.each do |action_name|
=> 156 action = self.send(action_name)
157 next unless action.respond_to? :columns
158 action.columns.set_columns(self.columns)
159 end
160 end
(rdb:1) actions.count
8
(rdb:1) ps actions
#<ActiveScaffold::DataStructures::Actions:0x0000000554ca68
@set=[:create, :list, :search, :update, :delete, :show, :nested, :subform]>
(rdb:1) l =
[151, 160] in /usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/config/core.rb
151 def _load_action_columns
152 #ActiveScaffold::DataStructures::ActionColumns.class_eval {include ActiveScaffold::DataStructures::ActionColumns::AfterConfiguration}
153
154 # then, register the column objects
155 self.actions.each do |action_name|
=> 156 action = self.send(action_name)
157 next unless action.respond_to? :columns
158 action.columns.set_columns(self.columns)
159 end
160 end
(rdb:1) self.actions.count
8
(rdb:1) c
Breakpoint 1 at core.rb:156
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/config/core.rb:156
action = self.send(action_name)
(rdb:1) l
[151, 160] in /usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/config/core.rb
151 def _load_action_columns
152 #ActiveScaffold::DataStructures::ActionColumns.class_eval {include ActiveScaffold::DataStructures::ActionColumns::AfterConfiguration}
153
154 # then, register the column objects
155 self.actions.each do |action_name|
=> 156 action = self.send(action_name)
157 next unless action.respond_to? :columns
158 action.columns.set_columns(self.columns)
159 end
160 end
(rdb:1) actions.count
8
(rdb:1) n
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/config/core.rb:157
next unless action.respond_to? :columns
(rdb:1) action.respond_to? :columns
true
(rdb:1) n
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/config/core.rb:158
action.columns.set_columns(self.columns)
(rdb:1) step
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/config/list.rb:90
self.columns = @core.columns._inheritable unless @columns # lazy evaluation
(rdb:1) n
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/config/list.rb:91
@columns
(rdb:1) l
[86, 95] in /usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/config/list.rb
86 # ----------------------------
87
88 # provides access to the list of columns specifically meant for the Table to use
89 def columns
90 self.columns = @core.columns._inheritable unless @columns # lazy evaluation
=> 91 @columns
92 end
93
94 public :columns=
95
(rdb:1)
[96, 105] in /usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/config/list.rb
96 # how many rows to show at once
97 attr_accessor :per_page
98
99 # how many page links around current page to show
100 attr_accessor :page_links_inner_window
101
102 # how many page links around current page to show
103 attr_accessor :page_links_outer_window
104
105 def page_links_window=(value)
(rdb:1) n
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/data_structures/action_columns.rb:109
@columns = columns
(rdb:1) l
[104, 113] in /usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/data_structures/action_columns.rb
104 return result
105 end
106
107 # registers a set of column objects (recursively, for all nested ActionColumns)
108 def set_columns(columns)
=> 109 @columns = columns
110 # iterate over @set instead of self to avoid dealing with security queries
111 @set.each do |item|
112 item.set_columns(columns) if item.respond_to? :set_columns
113 end
(rdb:1) n
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/data_structures/action_columns.rb:111
@set.each do |item|
(rdb:1) l
[106, 115] in /usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/data_structures/action_columns.rb
106
107 # registers a set of column objects (recursively, for all nested ActionColumns)
108 def set_columns(columns)
109 @columns = columns
110 # iterate over @set instead of self to avoid dealing with security queries
=> 111 @set.each do |item|
112 item.set_columns(columns) if item.respond_to? :set_columns
113 end
114 end
115
(rdb:1) @columns.count
1047
(rdb:1) @set.count
1046
(rdb:1) n
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/data_structures/action_columns.rb:112
item.set_columns(columns) if item.respond_to? :set_columns
(rdb:1) n
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/data_structures/action_columns.rb:112
item.set_columns(columns) if item.respond_to? :set_columns
(rdb:1) fin
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/data_structures/actions.rb:20
@set.each {|item| yield item}
(rdb:1) l
[15, 24] in /usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/data_structures/actions.rb
15 args.each { |arg| @set << arg.to_sym unless @set.include? arg.to_sym }
16 end
17 alias_method :<<, :add
18
19 def each
=> 20 @set.each {|item| yield item}
21 end
22
23 def include?(val)
24 super val.to_sym
(rdb:1) fin
Breakpoint 1 at core.rb:156
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/config/core.rb:156
action = self.send(action_name)
(rdb:1) l
[151, 160] in /usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/config/core.rb
151 def _load_action_columns
152 #ActiveScaffold::DataStructures::ActionColumns.class_eval {include ActiveScaffold::DataStructures::ActionColumns::AfterConfiguration}
153
154 # then, register the column objects
155 self.actions.each do |action_name|
=> 156 action = self.send(action_name)
157 next unless action.respond_to? :columns
158 action.columns.set_columns(self.columns)
159 end
160 end
(rdb:1) n
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/config/core.rb:157
next unless action.respond_to? :columns
(rdb:1) n
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/config/core.rb:158
action.columns.set_columns(self.columns)
(rdb:1) s
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/config/search.rb:46
unless @columns
(rdb:1) l
[41, 50] in /usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/config/search.rb
41 # ----------------------------
42
43 # provides access to the list of columns specifically meant for the Search to use
44 def columns
45 # we want to delay initializing to the @core.columns set for as long as possible. Too soon and .search_sql will not be available to .searchable?
=> 46 unless @columns
47 self.columns = @core.columns.collect{|c| c.name if @core.columns._inheritable.include?(c.name) and c.searchable? and c.column and c.column.text?}.compact
48 end
49 @columns
50 end
(rdb:1) n
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/active_scaffold-3.2.12/lib/active_scaffold/config/search.rb:47
self.columns = @core.columns.collect{|c| c.name if @core.columns._inheritable.include?(c.name) and c.searchable? and c.column and c.column.text?}.compact
(rdb:1)
>>HANGS<<
If you have this problem with master branch, reopen and post your table structure. If this error only happen with that table I will need the table to test it
Hi,
I have a nasty problem: A very large and ugly legacy table:
an embedded scaffold:
calling the controller like this: /user_clock_hlp/kalkbeschreibs works fine. But when I want to embed the scaffold in the view it hangs the whole rails server and I have to "kill -kill" it as CTRL-C won't work anymore.
Embedding some other scaffold in the same view works fine though.
It is very strange. Can somebody please give some thoughts, I am at a loss.
I am using: Ubuntu 10.04 Rails 3.2.5 Gems included by the bundle:
Here is a debug session where I was trying to figure out what was happening, perhaps it can help a little: