ffi-rzmq chose to map the api nearly 1:1 in tuby, the attribute readers and writers are not that simple just look at getsockopt.
Instead of this:

```
@socket.hwm = 10
```

You would have to write this:
```
ret = []
rc = @socket.getsockopt(ZMQ::HWM, ret)
if ZMQ::Util.resultcode_ok?(rc)
  # yeah it worked ! 
else
  # handle the error
end
```

whether this a useless level of indirection or not is a good question ;)

At first the readers/writers were added to shield em-zeromq from drastic changes in ffi-rzmq and they already served their purpose, if I remember well ffi-rzmq had two makor breaking update with no impact on em-zeromq public api (only the internals changed).