Version 1: The "pretty" one with 'end's
require 'rubygems'
require 'ruby2ruby'
class Quine < Object
def initialize
puts "require 'rubygems'\nrequire 'ruby2ruby'\n#{Ruby2Ruby.translate
self.class}\nQuine.new\n"
end
end
Quine.new
Version two, much less maintainable:
a="a=%p;puts a%%a";puts a%a
Version 3, cheating (unix only):
puts `cat #{$0}`