Называйте как хотите, это не принципиально.
По поводу двух initialize - есть такое понятие ruby way.
Так вот, ruby way это что-то вроде
class A
def initialize(params)
self.class.class_eval {attr_accessor *params.keys}
params.each {|key,value| send("#{key}=",value)}
end
end
val = A.new(:param1 => 'test', :param2 => 'test2')
Для того, что бы иметь возможность инициализировать объекты по разным сценариям, вы можете использовать статические методы, возвращающие должным образом инициализированные объекты, например:
class A
class << self
def with_param(param1) self.new(:param1 => param1); end
def with_two_params(param1,param2) self.new(:param1 => param1, :param2 => param2); end
end
def initialize(params)
self.class.class_eval {attr_accessor *params.keys}
params.each {|key,value| send("#{key}=",value)}
end
end
p A.with_param('test')
p A.with_two_params('test1','test2')