用于灵活对象初始化的Gem

时间:2012-05-14 11:31:52

标签: ruby

我已经实现了一个允许以不同方式初始化自己的类。

第一种方式:创建对象,稍后设置属性。

object = MyClass.new
object.name = 'Object'

第二种方式:将属性的哈希值传递给对象构造函数。

MyClass.new(:name => 'Object')

第三种方式:将块传递给对象构造函数。

MyClass.new do |object|
  object.name = 'Object'
end

我受ActiveModel

的启发

我一直在想,有些人可能已将它作为一个单独的gem实现,或者可能有一些内置的Ruby解决方案?

2 个答案:

答案 0 :(得分:1)

我不确定这是否是你想要的,但你可能对injection宝石感兴趣。

答案 1 :(得分:1)

我用它(不是真正的宝石,但仍然)......

https://github.com/guerilla-di/tracksperanto/blob/master/lib/tracksperanto/block_init.rb

将该模块包含在类中时,您将获得默认构造函数。

它非常小,所以你可以把它放到你的项目中并完成。