ramaze 版
# quine-web-service-on-ramaze.rb (c) Yusuke Endoh 2009
require "rubygems"
require "ramaze"
class C < Ramaze::Controller
def index
e = "END" << 10
t = " s << ((e + <<END) * 2)[4..-1]" << 10
s = <<END * 2 << e << t
# quine-web-service-on-ramaze.rb (c) Yusuke Endoh 2009
require "rubygems"
require "ramaze"
class C < Ramaze::Controller
def index
e = "END" << 10
t = " s << ((e + <<END) * 2)[4..-1]" << 10
s = <<END * 2 << e << t
END
s << ((e + <<END) * 2)[4..-1]
"<pre>" + h(s) + "</pre>"
end
end
Ramaze.start
END
"<pre>" + h(s) + "</pre>"
end
end
Ramaze.start$ gem install ramaze $ ruby quine-web-service-on-ramaze.rb
そして http://localhost:7000/ を開く。
socket + ajax 版
eval$e=%q(puts'open http://localhost:18463';require'socket'
s=TCPServer.new 18463;c=(/GET +\/(\d*)/i=~c.gets;c<<%(HTTP\
/1.0 200 OK\nContent-Type:text/html\n\n)+(eval(%(#$1% 60>0?
%(leval$e=%q(\#$e)#)[#$1,1].sub('&','&').sub('>','>'
).sub('<','<'):'<br>'# ;nil))||%(<title>quine web server
</title>The source code of this web server is:<pre id='p'>\
</pre><script type='text/javascript'>a=i=0;f=function(){a!=
0&&a.readyState<4||(a!=0&&(document.getElementById('p').in\
nerHTML+=a.responseText),i++<719&&(a=new XMLHttpRequest() ,
a.open('GET','/'+i,true),a.onreadystatechange=f,a.send(null
)))};f()</script>));puts$_;c.shutdown;c.read;c.close)while\
c=s.accept ## quine-web-server.rb (c) Yusuke Endoh 2009 #)#$ ruby quine-web-server.rb open http://localhost:18463/