smashing
smashing copied to clipboard
undefined method `[]=' for false:FalseClass
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 even if you create a new dashboard with smashing
command line, and start it?
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 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