What exactly is the problem you're having with the map drawing code? Is it too slow with large maps? That problem can be solved by only drawing the tiles that would be visible onscreen.
I wrote a tile map class that loads and draws TMX maps (created by Tiled), which has the advantage that there is already a map editor that you and I don't have to write ourselves. The format is a little bloated though since it uses XML and is pretty generalised overall. It's nice, though, because you can have as many layers as you want and you can attach arbitrary properties to the map and the objects in it.
My library also supports Chingu directly if you use it, and lets you hook into the loader in a few places to integrate it with your own system if you don't. Collision detection is up to you because one size doesn't fit all, but for a console RPG it should be fairly trivial. You'll need Nokogiri to use it as is, but if you're feeling adventurous, Ruby comes with a significantly less awesome but fairly straightforward XML library of its own.
I'm afraid gosu-tmx is a little undocumented, although the example should give you the gist of how it's used—don't be afraid to ask if you can't figure it out.
You can find my TMX library on GitHub at erisdiscord/gosu-tmx
and Tiled is available from its own web site
Oh, and right now the drawing code is set up for pre-transform Gosu, but I intend to update it to use transformations for scrolling in the future. Anybody is welcome to submit a patch to help me along if they'd like. :D