Nicolas Guillaume
Nicolas Guillaume

Reputation: 8434

Unexplainable "can't modify frozen object" exception

I have encountered a weird problem twice in the past 2 weeks and it's starting to piss me off.

I have this very simple code :

  Rails.logger.debug "Is current_step frozen  ? => #{@current_step.frozen?.inspect}"
  @current_step += 1

Has you can (or not) imagine, this is what is displayed on my console :

Is current_step frozen  ? => false
Completed   in 264ms

TypeError (can't modify frozen object):
  lib/chuguf/core.rb:44:in `upgrade'
  app/controllers/xml/cheat_controller.rb:6:in `index'

Can some one tells me what's happen here ?

I can give more details if required but i don't see how other lines could be relevant. All the code is executed in the current thread.

Thanks for your help !

Upvotes: 2

Views: 4053

Answers (1)

sepp2k
sepp2k

Reputation: 370202

You're not trying to mutate @current_step (which isn't possible with integers anyway), you're trying to reassign it. Since reassigning an instance variable means mutating the object the instance variable belongs to (i.e. self), you can only do so if self is not frozen.

In other words: if you change your debug message to tell your whether self is frozen instead of @current_step, you'll find out that it is and that's why you get the error.

Upvotes: 4

Related Questions