smashing icon indicating copy to clipboard operation
smashing copied to clipboard

undefined method `[]=' for false:FalseClass

Open AlexArthur93 opened this issue 6 years ago • 3 comments

Since the new year I have consistently gotten the following error message

undefined method `[]=' for false:FalseClass
/var/lib/gems/2.3.0/gems/smashing-1.0.0/lib/dashing/app.rb:140:in `send_event'NoMethodError: undefined method `inject' for false:FalseClass
Did you mean?  inspect
  /var/lib/gems/2.3.0/gems/smashing-1.0.0/lib/dashing/app.rb:151:in `latest_events'
  /var/lib/gems/2.3.0/gems/smashing-1.0.0/lib/dashing/app.rb:78:in `block (2 levels) in <top (required)>'
  /var/lib/gems/2.3.0/gems/sinatra-1.4.8/lib/sinatra/base.rb:438:in `block (2 levels) in stream'
  /var/lib/gems/2.3.0/gems/sinatra-1.4.8/lib/sinatra/base.rb:629:in `with_params'
  /var/lib/gems/2.3.0/gems/sinatra-1.4.8/lib/sinatra/base.rb:438:in `block in stream'
  /var/lib/gems/2.3.0/gems/sinatra-1.4.8/lib/sinatra/base.rb:404:in `block in each'
  /var/lib/gems/2.3.0/gems/eventmachine-1.2.5/lib/eventmachine.rb:1076:in `block in spawn_threadpool'

/var/lib/gems/2.3.0/gems/smashing-1.0.0/lib/dashing/app.rb:62:in `write': No such file or directory @ rb_sysopen -  (Errno::ENOENT)
	from /var/lib/gems/2.3.0/gems/smashing-1.0.0/lib/dashing/app.rb:62:in `block in <top (required)>'

For all jobs sending data to widgets. I'm not sure where to start debugging this. I have removed the contents of history.yml and I've checked the data being passed to the widget is in the expected form.

Any advice would be well appreciated.

AlexArthur93 avatar Jan 04 '19 10:01 AlexArthur93

@AlexArthur93 even if you create a new dashboard with smashing command line, and start it?

kinow avatar Jan 04 '19 11:01 kinow

Apologies I should have thought to check that first. It doesn't seem to be the case.

I'm mostly curious why this would occur all of a sudden with the new year with no updates to the code or software.

An example job below

require 'roo'
require 'roo-xls'



SCHEDULER.every '15m', :first_in => 0 do |job|
  
planner = Roo::Spreadsheet.open('/home/pi/fdrive/1 General - Office/Stores Dashboard/Stores_Dashboard_Planner.xlsx')

pull_sheet = planner.sheet(0) ; 

firstR = pull_sheet.first_row ;
firstC = pull_sheet.first_column ; 

#lastR = pull_sheet.last_row ;
lastR = 12 ; 
lastC = pull_sheet.last_column ;

i_limit = lastR - firstR + 1; 
j_limit = lastC - firstC + 1;

array = Array.new(i_limit) { Array.new(j_limit) } ;

i = firstR ;
j = firstC ;



for i in firstR..i_limit do
	
	for j in firstC..j_limit do
		puts pull_sheet.cell(i,j) ;
		val = pull_sheet.cell(i,j) ;
		#puts val.nil?
		#puts i-firstR
 		#puts j-firstC
		array[i-firstR][j-firstC] = val ;
	end
	
end

#puts array.to_s

rows = Array.new(i_limit) ;

for i in 0..(i_limit-1)
	rows[i] = Hash.new(0) ;
	rows[i][:cols] = Array.new(j_limit) ;
	for j in 0..(j_limit-1)
		rows[i][:cols][j] = Hash.new(0)
		val = array[i][j] ;
		rows[i][:cols][j][:value] = val.to_s ;
		if ( i == 0)
			rows[i][:cols][j][:style] = 'background-color: #59bfff ; font-size: 105%' ;
		else
			rows[i][:cols][j][:style] = 'background-color: #346ac1 ; font-size: 105%' ;
		end

	end
	
end

puts rows ;
send_event('equip_table', {rows: rows } )
end



Rows ends up looking like :

{:cols=>[{:value=>"Job Number", :style=>"background-color: #59bfff ; font-size: 105%"}, {:value=>"Location", :style=>"background-color: #59bfff ; font-size: 105%"}, {:value=>"Manset", :style=>"background-color: #59bfff ; font-size: 105%"}, {:value=>"Rescue", :style=>"background-color: #59bfff ; font-size: 105%"}, {:value=>"NDT Equipment", :style=>"background-color: #59bfff ; font-size: 105%"}, {:value=>"Other Equipment", :style=>"background-color: #59bfff ; font-size: 105%"}, {:value=>"Delivery Date", :style=>"background-color: #59bfff ; font-size: 105%"}]} {:cols=>[{:value=>"4046-002", :style=>"background-color: #346ac1 ; font-size: 105%"}, {:value=>"Generic 1", :style=>"background-color: #346ac1 ; font-size: 105%"}, {:value=>"", :style=>"background-color: #346ac1 ; font-size: 105%"}, {:value=>"", :style=>"background-color: #346ac1 ; font-size: 105%"}, {:value=>"", :style=>"background-color: #346ac1 ; font-size: 105%"}, {:value=>"1x Size 2 Harness", :style=>"background-color: #346ac1 ; font-size: 105%"}, {:value=>"col 4/01/19", :style=>"background-color: #346ac1 ; font-size: 105%"}]} {:cols=>[{:value=>"3046-064", :style=>"background-color: #346ac1 ; font-size: 105%"}, {:value=>"Generic 2", :style=>"background-color: #346ac1 ; font-size: 105%"}, {:value=>"3", :style=>"background-color: #346ac1 ; font-size: 105%"}, {:value=>"1", :style=>"background-color: #346ac1 ; font-size: 105%"}, {:value=>"1x UT", :style=>"background-color: #346ac1 ; font-size: 105%"}, {:value=>"", :style=>"background-color: #346ac1 ; font-size: 105%"}, {:value=>"col 4/01/19", :style=>"background-color: #346ac1 ; font-size: 105%"}]} {:cols=>[{:value=>"4065-002", :style=>"background-color: #346ac1 ; font-size: 105%"}, {:value=>"Generic 3", :style=>"background-color: #346ac1 ; font-size: 105%"}, {:value=>"3", :style=>"background-color: #346ac1 ; font-size: 105%"}, {:value=>"1", :style=>"background-color: #346ac1 ; font-size: 105%"}, {:value=>"", :style=>"background-color: #346ac1 ; font-size: 105%"}, {:value=>"mechanical tool kit", :style=>"background-color: #346ac1 ; font-size: 105%"}, {:value=>"del 8/01/19", :style=>"background-color: #346ac1 ; font-size: 105%"}]} <

Which is in the expected format that was working before the new year. This maybe isn't even a Smashing issue but I'm not sure how to go about determining if it is.

AlexArthur93 avatar Jan 04 '19 12:01 AlexArthur93

@AlexArthur93 it indeed sounds very interesting! If I had a bit more of development bandwidth I'd love to debug this. Sounds like one of those curious issues that happen once in a while.

Alas I have a few deadlines at work, and other issues for projects I contribute to, so can't have a look unless it's really something broken in Smashing.

But if you have some time to debug it... I recommend creating a new dashboard, and slowly adding some of your jobs and widgets. Eventually the issue will happen. Then you just diff the changes and try to find the culprit (and if so, please share here. I'm really curious).

Another thing, I would even spend some time on your spreadsheet. It appears to have some columns that store dates (delivery date?). Could it be that a) you got a Microsoft update that changed something in Excel or some API in Windows? b) double-check the fields in Excel (you know, looking at the actual value, mask/format/etc). Or maybe c) run on a different machine, or maybe on a different operating system.

Hope that helps Cheers

Bruno

kinow avatar Jan 05 '19 00:01 kinow