Are there some gotchas in the process of marshalling Ruby data types into .NET?
Yes. Ruby strings are mutable but are still marshalled by value to a .net System.String for convenience, so you need to be aware that subsequent changes to the original string will not be seen in .net. If the .net string is marshalled back to ruby it will be a new copy too. Ruby integers can be of arbitrary size. If a ruby integer is small enough to be represented by a .net int it will be, otherwise it is converted to a float with loss of precision as a result.