diff --git a/compiler/cpp/src/generate/t_java_generator.cc b/compiler/cpp/src/generate/t_java_generator.cc
index e8d9a95..60ad2fb 100644
--- a/compiler/cpp/src/generate/t_java_generator.cc
+++ b/compiler/cpp/src/generate/t_java_generator.cc
@@ -44,12 +44,6 @@
     out_dir_base_ = (bean_style_ ? "gen-javabean" : "gen-java");
   }
 
-  string upcase_string(string original) {
-    std::transform(original.begin(), original.end(), original.begin(), (int(*)(int)) toupper);
-    return original;
-  }
-
-
   /**
    * Init and close methods
    */
diff --git a/compiler/cpp/src/generate/t_oop_generator.h b/compiler/cpp/src/generate/t_oop_generator.h
index 8cba67f..3150954 100644
--- a/compiler/cpp/src/generate/t_oop_generator.h
+++ b/compiler/cpp/src/generate/t_oop_generator.h
@@ -35,6 +35,11 @@
     indent(out) << "}" << std::endl;
   }
 
+  std::string upcase_string(std::string original) {
+    std::transform(original.begin(), original.end(), original.begin(), (int(*)(int)) toupper);
+    return original;
+  }
+
   /**
    * Generates a comment about this code being autogenerated, using C++ style
    * comments, which are also fair game in Java / PHP, yay!
diff --git a/compiler/cpp/src/generate/t_rb_generator.cc b/compiler/cpp/src/generate/t_rb_generator.cc
index acc87e6..570b4a7 100644
--- a/compiler/cpp/src/generate/t_rb_generator.cc
+++ b/compiler/cpp/src/generate/t_rb_generator.cc
@@ -67,6 +67,7 @@
   void generate_rb_function_helpers(t_function* tfunction);
   void generate_rb_simple_constructor(std::ofstream& out, t_struct* tstruct);
   void generate_rb_simple_exception_constructor(std::ofstream& out, t_struct* tstruct);
+  void generate_field_constants (std::ofstream& out, t_struct* tstruct);
   void generate_accessors   (std::ofstream& out, t_struct* tstruct);
   void generate_field_defns (std::ofstream& out, t_struct* tstruct);
   void generate_field_data  (std::ofstream& out, t_type* field_type, const std::string& field_name, t_const_value* field_value, bool optional);
@@ -455,6 +456,7 @@
     generate_rb_simple_exception_constructor(out, tstruct);
   }
 
+  generate_field_constants(out, tstruct);
   generate_accessors(out, tstruct);
   generate_field_defns(out, tstruct);
 
@@ -485,6 +487,19 @@
   }
 }
 
+void t_rb_generator::generate_field_constants(std::ofstream& out, t_struct* tstruct) {
+  const vector<t_field*>& fields = tstruct->get_members();
+  vector<t_field*>::const_iterator f_iter;
+
+  for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
+    std::string field_name = (*f_iter)->get_name();
+    std::string cap_field_name = upcase_string(field_name);
+    
+    indent(out) << cap_field_name << " = " << (*f_iter)->get_key() << endl;
+  }
+  out << endl;
+}
+
 void t_rb_generator::generate_accessors(std::ofstream& out, t_struct* tstruct) {
   const vector<t_field*>& members = tstruct->get_members();
   vector<t_field*>::const_iterator m_iter;
@@ -510,7 +525,7 @@
     }
 
     indent(out) <<
-      (*f_iter)->get_key() << " => ";
+      upcase_string((*f_iter)->get_name()) << " => ";
 
     generate_field_data(out, (*f_iter)->get_type(), (*f_iter)->get_name(), (*f_iter)->get_value(), 
       (*f_iter)->get_req() == t_field::T_OPTIONAL);
diff --git a/lib/rb/benchmark/gen-rb/BenchmarkService.rb b/lib/rb/benchmark/gen-rb/BenchmarkService.rb
index 42c8aec..7d39882 100644
--- a/lib/rb/benchmark/gen-rb/BenchmarkService.rb
+++ b/lib/rb/benchmark/gen-rb/BenchmarkService.rb
@@ -46,17 +46,21 @@
 
         class Fibonacci_args
           include Thrift::Struct
+          N = 1
+
           Thrift::Struct.field_accessor self, :n
           FIELDS = {
-            1 => {:type => Thrift::Types::BYTE, :name => 'n'}
+            N => {:type => Thrift::Types::BYTE, :name => 'n'}
           }
         end
 
         class Fibonacci_result
           include Thrift::Struct
+          SUCCESS = 0
+
           Thrift::Struct.field_accessor self, :success
           FIELDS = {
-            0 => {:type => Thrift::Types::I32, :name => 'success'}
+            SUCCESS => {:type => Thrift::Types::I32, :name => 'success'}
           }
         end
 
diff --git a/lib/rb/spec/gen-rb/NonblockingService.rb b/lib/rb/spec/gen-rb/NonblockingService.rb
index 5893f74..ee5fae1 100644
--- a/lib/rb/spec/gen-rb/NonblockingService.rb
+++ b/lib/rb/spec/gen-rb/NonblockingService.rb
@@ -115,22 +115,27 @@
 
         class Greeting_args
           include Thrift::Struct
+          ENGLISH = 1
+
           Thrift::Struct.field_accessor self, :english
           FIELDS = {
-            1 => {:type => Thrift::Types::BOOL, :name => 'english'}
+            ENGLISH => {:type => Thrift::Types::BOOL, :name => 'english'}
           }
         end
 
         class Greeting_result
           include Thrift::Struct
+          SUCCESS = 0
+
           Thrift::Struct.field_accessor self, :success
           FIELDS = {
-            0 => {:type => Thrift::Types::STRUCT, :name => 'success', :class => Hello}
+            SUCCESS => {:type => Thrift::Types::STRUCT, :name => 'success', :class => Hello}
           }
         end
 
         class Block_args
           include Thrift::Struct
+
           FIELDS = {
 
           }
@@ -138,22 +143,27 @@
 
         class Block_result
           include Thrift::Struct
+          SUCCESS = 0
+
           Thrift::Struct.field_accessor self, :success
           FIELDS = {
-            0 => {:type => Thrift::Types::BOOL, :name => 'success'}
+            SUCCESS => {:type => Thrift::Types::BOOL, :name => 'success'}
           }
         end
 
         class Unblock_args
           include Thrift::Struct
+          N = 1
+
           Thrift::Struct.field_accessor self, :n
           FIELDS = {
-            1 => {:type => Thrift::Types::I32, :name => 'n'}
+            N => {:type => Thrift::Types::I32, :name => 'n'}
           }
         end
 
         class Unblock_result
           include Thrift::Struct
+
           FIELDS = {
 
           }
@@ -161,6 +171,7 @@
 
         class Shutdown_args
           include Thrift::Struct
+
           FIELDS = {
 
           }
@@ -168,6 +179,7 @@
 
         class Shutdown_result
           include Thrift::Struct
+
           FIELDS = {
 
           }
@@ -175,14 +187,17 @@
 
         class Sleep_args
           include Thrift::Struct
+          SECONDS = 1
+
           Thrift::Struct.field_accessor self, :seconds
           FIELDS = {
-            1 => {:type => Thrift::Types::DOUBLE, :name => 'seconds'}
+            SECONDS => {:type => Thrift::Types::DOUBLE, :name => 'seconds'}
           }
         end
 
         class Sleep_result
           include Thrift::Struct
+
           FIELDS = {
 
           }
diff --git a/lib/rb/spec/gen-rb/ThriftSpec_types.rb b/lib/rb/spec/gen-rb/ThriftSpec_types.rb
index d7ad600..0251524 100644
--- a/lib/rb/spec/gen-rb/ThriftSpec_types.rb
+++ b/lib/rb/spec/gen-rb/ThriftSpec_types.rb
@@ -9,59 +9,83 @@
 module SpecNamespace
     class Hello
       include Thrift::Struct
+      GREETING = 1
+
       Thrift::Struct.field_accessor self, :greeting
       FIELDS = {
-        1 => {:type => Thrift::Types::STRING, :name => 'greeting', :default => 'hello world'}
+        GREETING => {:type => Thrift::Types::STRING, :name => 'greeting', :default => 'hello world'}
       }
     end
 
     class Foo
       include Thrift::Struct
+      SIMPLE = 1
+      WORDS = 2
+      HELLO = 3
+      INTS = 4
+      COMPLEX = 5
+      SHORTS = 6
+      OPT_STRING = 7
+
       Thrift::Struct.field_accessor self, :simple, :words, :hello, :ints, :complex, :shorts, :opt_string
       FIELDS = {
-        1 => {:type => Thrift::Types::I32, :name => 'simple', :default => 53},
-        2 => {:type => Thrift::Types::STRING, :name => 'words', :default => 'words'},
-        3 => {:type => Thrift::Types::STRUCT, :name => 'hello', :default => Hello.new({
+        SIMPLE => {:type => Thrift::Types::I32, :name => 'simple', :default => 53},
+        WORDS => {:type => Thrift::Types::STRING, :name => 'words', :default => 'words'},
+        HELLO => {:type => Thrift::Types::STRUCT, :name => 'hello', :default => Hello.new({
           'greeting' => 'hello, world!',
         }), :class => Hello},
-        4 => {:type => Thrift::Types::LIST, :name => 'ints', :default => [
+        INTS => {:type => Thrift::Types::LIST, :name => 'ints', :default => [
           1,
           2,
           2,
           3,
         ], :element => {:type => Thrift::Types::I32}},
-        5 => {:type => Thrift::Types::MAP, :name => 'complex', :key => {:type => Thrift::Types::I32}, :value => {:type => Thrift::Types::MAP, :key => {:type => Thrift::Types::STRING}, :value => {:type => Thrift::Types::DOUBLE}}},
-        6 => {:type => Thrift::Types::SET, :name => 'shorts', :default => Set.new([          5,
+        COMPLEX => {:type => Thrift::Types::MAP, :name => 'complex', :key => {:type => Thrift::Types::I32}, :value => {:type => Thrift::Types::MAP, :key => {:type => Thrift::Types::STRING}, :value => {:type => Thrift::Types::DOUBLE}}},
+        SHORTS => {:type => Thrift::Types::SET, :name => 'shorts', :default => Set.new([          5,
           17,
           239,
         ]), :element => {:type => Thrift::Types::I16}},
-        7 => {:type => Thrift::Types::STRING, :name => 'opt_string', :optional => true}
+        OPT_STRING => {:type => Thrift::Types::STRING, :name => 'opt_string', :optional => true}
       }
     end
 
     class BoolStruct
       include Thrift::Struct
+      YESNO = 1
+
       Thrift::Struct.field_accessor self, :yesno
       FIELDS = {
-        1 => {:type => Thrift::Types::BOOL, :name => 'yesno', :default => true}
+        YESNO => {:type => Thrift::Types::BOOL, :name => 'yesno', :default => true}
       }
     end
 
     class SimpleList
       include Thrift::Struct
+      BOOLS = 1
+      BYTES = 2
+      I16S = 3
+      I32S = 4
+      I64S = 5
+      DOUBLES = 6
+      STRINGS = 7
+      MAPS = 8
+      LISTS = 9
+      SETS = 10
+      HELLOS = 11
+
       Thrift::Struct.field_accessor self, :bools, :bytes, :i16s, :i32s, :i64s, :doubles, :strings, :maps, :lists, :sets, :hellos
       FIELDS = {
-        1 => {:type => Thrift::Types::LIST, :name => 'bools', :element => {:type => Thrift::Types::BOOL}},
-        2 => {:type => Thrift::Types::LIST, :name => 'bytes', :element => {:type => Thrift::Types::BYTE}},
-        3 => {:type => Thrift::Types::LIST, :name => 'i16s', :element => {:type => Thrift::Types::I16}},
-        4 => {:type => Thrift::Types::LIST, :name => 'i32s', :element => {:type => Thrift::Types::I32}},
-        5 => {:type => Thrift::Types::LIST, :name => 'i64s', :element => {:type => Thrift::Types::I64}},
-        6 => {:type => Thrift::Types::LIST, :name => 'doubles', :element => {:type => Thrift::Types::DOUBLE}},
-        7 => {:type => Thrift::Types::LIST, :name => 'strings', :element => {:type => Thrift::Types::STRING}},
-        8 => {:type => Thrift::Types::LIST, :name => 'maps', :element => {:type => Thrift::Types::MAP, :key => {:type => Thrift::Types::I16}, :value => {:type => Thrift::Types::I16}}},
-        9 => {:type => Thrift::Types::LIST, :name => 'lists', :element => {:type => Thrift::Types::LIST, :element => {:type => Thrift::Types::I16}}},
-        10 => {:type => Thrift::Types::LIST, :name => 'sets', :element => {:type => Thrift::Types::SET, :element => {:type => Thrift::Types::I16}}},
-        11 => {:type => Thrift::Types::LIST, :name => 'hellos', :element => {:type => Thrift::Types::STRUCT, :class => Hello}}
+        BOOLS => {:type => Thrift::Types::LIST, :name => 'bools', :element => {:type => Thrift::Types::BOOL}},
+        BYTES => {:type => Thrift::Types::LIST, :name => 'bytes', :element => {:type => Thrift::Types::BYTE}},
+        I16S => {:type => Thrift::Types::LIST, :name => 'i16s', :element => {:type => Thrift::Types::I16}},
+        I32S => {:type => Thrift::Types::LIST, :name => 'i32s', :element => {:type => Thrift::Types::I32}},
+        I64S => {:type => Thrift::Types::LIST, :name => 'i64s', :element => {:type => Thrift::Types::I64}},
+        DOUBLES => {:type => Thrift::Types::LIST, :name => 'doubles', :element => {:type => Thrift::Types::DOUBLE}},
+        STRINGS => {:type => Thrift::Types::LIST, :name => 'strings', :element => {:type => Thrift::Types::STRING}},
+        MAPS => {:type => Thrift::Types::LIST, :name => 'maps', :element => {:type => Thrift::Types::MAP, :key => {:type => Thrift::Types::I16}, :value => {:type => Thrift::Types::I16}}},
+        LISTS => {:type => Thrift::Types::LIST, :name => 'lists', :element => {:type => Thrift::Types::LIST, :element => {:type => Thrift::Types::I16}}},
+        SETS => {:type => Thrift::Types::LIST, :name => 'sets', :element => {:type => Thrift::Types::SET, :element => {:type => Thrift::Types::I16}}},
+        HELLOS => {:type => Thrift::Types::LIST, :name => 'hellos', :element => {:type => Thrift::Types::STRUCT, :class => Hello}}
       }
     end
 
