Question: I have created an application using c# on visual studio 2005 and sqlserver 2005 in backend. 
My application is running perfectly on server machine but on client machine it is giving following error-

Login failed for user ABLF\Guest 

I have installed it by going into my network places and then execute the setup(which i have created) from shared folder document and setting..

Answer: 
You can think of something like below :

```
class Yeah
  def self.reader_meth
    %i(foo fool feel).each do |m|
      define_method(m){instance_variable_get("@#{m}").dup.freeze}
    end
  end
  def initialize(foo: "test", fool: {}, feel: [])
    @foo = foo
    @fool = fool
    @feel =feel
  end
  reader_meth
end

test = Yeah.new
test # => #<Yeah:0x8975498 @foo="test", @fool={}, @feel=[]>
test.fool[:one] = 10 # can't modify frozen Hash (RuntimeError)
test # => #<Yeah:0x8975498 @foo="test", @fool={}, @feel=[]>

```
Because i want to generalize this solution and to prevent "evil" evals :

i finally, from the Arup solution arrived to this :

```
class Module
  def attr_readonly *syms
    syms.each do |method|
      define_method(method){
        return self.instance_variable_get("@#{method.to_s}").dup.freeze 
      }
    end
  end
end

class Yeah

  attr_reader :foo
  attr_readonly :fool
  attr_reader :feel
  def initialize(foo: "test", fool: {}, feel: [])
    @foo = foo
    @fool = fool
    @feel = feel
  end

end

```