this means that
`controller_store["gomoku_guess#{connection_store[:game].id}"]` invoked
on line 97 is nil, but I'm sure that I did assign it Matrix on line 60.
Why it changed? The interesting thing that this error doesn't happen on
my local machine, only when someone connects to me and we play this game
together
Looks to me like the variable matrix is nil. Looks like it is called form line 97.
I'm not familiar enough with controller_store or connection_store (are those from WebSockets gem?) to know what to tell you. Did you put a debugger above line 97 and try to figure out why controller_store["gomoku_guess#{connection_store[:game].id}"] appears to be nil?
From am outsider's perspective, this is way too much logic in the controller. Your controller actions should always try to be no more than 7 (maybe 8) lines of code, and generally it is best to stick to REST pattern (although there are exceptions).
I would move nearly all of your domain logic code into domain objects --- either model objects or plain-old-ruby-object (PORO) objects--- then write unit tests covering the interactions between the controllers & domain objects. That way you will have more isolated parts to work with so you can figure out where the problem is.
I'm not familiar enough with controller_store or connection_store (are
those from WebSockets gem?)
Yes they are. I need a websocket-rails expert, so he could answer me why
controller_store variable, once assigned, turns nil. But in the Gem's
issue tracker no one answers questions anymore, I hope I can find one
here
Did you put a debugger above line 97 and try to figure out why
controller_store["gomoku_guess#{connection_store[:game].id}"] appears to
be nil?
I would be happy if you tell me how do I do that
From am outsider's perspective, this is way too much logic in the
controller. Your controller actions should always try to be no more than
7 (maybe 8) lines of code, and generally it is best to stick to REST
pattern (although there are exceptions).
Please note that some Ruby developers (myself included) prefer to use byebug as an alternative to debugger. They work basically the same but instead of using the debugger gem you use the byebug gem (see https://github.com/deivid-rodriguez/byebug for instructions). Note that byebug works only if you are on Ruby 2