This `CouchViewDoc` is a weird class.  I can't see any reason why you'd delegate `[]=` - makes it feel really weird, especially when it's a view doc class and yet you have to know to create the `:views` sub-key.

Is there any reason why you don't just provide `view_name` and `view_functions` in the `new` method?  Then the internals of that `CouchViewDoc` are kept internal, so here the caller is unaware of those implementation details.