Sick.  That's exactly what I was looking for.

Thanks,

--Wayne

-----Original Message-----
From: Bryan Duxbury [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, September 23, 2008 3:46 PM
To: [email protected]
Subject: Re: Namespacing generated Ruby types

If you put "namespace rb Blah" in your .thrift file, the generated  
classes will live in that module.

-Bryan

On Sep 23, 2008, at 3:27 PM, Wayne Kao wrote:

> In our .thrift file we have a struct like this:
>
> struct Name{
>   1: string first,
>   2: string middle,
>   3: string last
> }
>
>
> That generates Ruby code like this (used the latest Thrift compiler  
> from
> trunk):
>
> require 'thrift/protocol'
>
> class Name
>   include Thrift::Struct
>   Thrift::Struct.field_accessor self, :first, :middle, :last
>   FIELDS = {
>     1 => {:type => Thrift::Types::STRING, :name => 'first'},
>     2 => {:type => Thrift::Types::STRING, :name => 'middle'},
>     3 => {:type => Thrift::Types::STRING, :name => 'last'}
>   }
> end
>
>
> Then, in our main (Rails) app, we include it like this at the top  
> of a file:
> $:.push("#{RAILS_ROOT}/../blah/gen-rb")
> require 'Blah'
> require 'blah_constants'
>
> Unfortunately, because Ruby allows reopening classes, if we have  
> another
> class called "Name" (like a Rails model), all sorts of subtle badness
> happens.  The person who created the original .thrift file probably  
> doesn't
> notice either since they may not even be a Ruby programmer.
>
> Is there a good pattern for namespacing the generated types such  
> that they
> aren't in the global namespace?  Or does everyone just come up with  
> fancy
> naming schemes for their Thrift types (e.g. "BlahName" instead of  
> "Name")?
> Is this something we should try tackling in the compiler?
>
> --Wayne
>

Reply via email to