Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

undefined method `[]=' for false:FalseClass #121

Open
AlexArthur93 opened this issue Jan 4, 2019 · 3 comments
Open

undefined method `[]=' for false:FalseClass #121

AlexArthur93 opened this issue Jan 4, 2019 · 3 comments

Comments

@AlexArthur93
Copy link

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.

@kinow
Copy link
Member

kinow commented Jan 4, 2019

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

@AlexArthur93
Copy link
Author

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.

@kinow
Copy link
Member

kinow commented Jan 5, 2019

@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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants