Helps
Soap4R and Ruby 1.9.2
“Soap4R and Ruby 1.9.2 don’t work, what’s the best alternative?”
Several people recommended the Savon gem. It was strongly suggested to not try and replicate any of the Soap protocol because it is pretty painful to implement.
Interestings
Constants versus Immutable Objects
Someone apparently had confusion around what it means to be constant in Ruby, and what it means to be immutable.
A constant prevents modifications to references to variables.
SOME_CONST = 3
SOME_CONST = 4
warning: already initialized constant SOME_CONST
Immutability means that the variables themselves cannot be modified.
an_array = [1,2,3]
an_array.freeze
an_array[3] = 4
RuntimeError: can't modify frozen array
You should note, though, that freezing an object only makes the variables that object contains immutable. For instance,
an_array = [1,2,3,{}]
an_array.freeze
an_array[3]["foo"] = "bar"
will not throw any errors or warnings.
I usually freeze each of my objects when I’m making constants:
ACCEPTED_METHODS = %w( GET POST PUT DELETE ).map(&:freeze).freeze
This freezes each of the words, and the whole collection as well. The last example could be similarly frozen:
an_array = [1,2,3,{}].map(&:freeze).freeze
an_array[3]["foo"] = “bar”
RuntimeError: can’t modify frozen hash
But of course, if the values or keys aren’t frozen, the same issue applies.
January 5, 2012 at 3:09 pm