Skip to content

Instantly share code, notes, and snippets.

@brookemckim
Created November 13, 2012 01:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brookemckim/4063344 to your computer and use it in GitHub Desktop.
Save brookemckim/4063344 to your computer and use it in GitHub Desktop.
require 'celluloid'
require 'open-uri'
class Fetcher
include Celluloid
def fetch(url)
URI.parse(url).read
end
end
f = Fetcher.new
=> #<Celluloid::Actor(Fetcher:0x15ac)>
f.fetch("http://google.com")
=> # SystemStackError: SystemStackError
from kernel/common/string.rb:1050:in `modify!'
from kernel/common/string19.rb:418:in `<<'
from kernel/common/regexp.rb:111:in `<<'
from kernel/common/regexp.rb:277:in `push_current_character!'
from kernel/common/regexp.rb:271:in `process_until_group_finished'
from kernel/common/regexp.rb:272:in `process_until_group_finished'
from kernel/common/regexp.rb:272:in `process_until_group_finished'
from kernel/common/regexp.rb:272:in `process_until_group_finished'
from kernel/common/regexp.rb:272:in `process_until_group_finished'
from kernel/common/regexp.rb:272:in `process_until_group_finished'
from kernel/common/regexp.rb:272:in `process_until_group_finished'
from kernel/common/regexp.rb:272:in `process_until_group_finished'
from kernel/common/regexp.rb:272:in `process_until_group_finished'
from kernel/common/regexp.rb:272:in `process_until_group_finished'
from kernel/common/regexp.rb:272:in `process_until_group_finished'
from kernel/common/regexp.rb:272:in `process_until_group_finished'
E, [2012-11-12T20:39:26.921212 #48555] ERROR -- : Fetcher crashed!
SystemStackError: SystemStackError
kernel/common/string.rb:1050:in `modify!'
kernel/common/string19.rb:418:in `<<'
kernel/common/regexp.rb:111:in `<<'
kernel/common/regexp.rb:277:in `push_current_character!'
kernel/common/regexp.rb:271:in `process_until_group_finished'
kernel/common/regexp.rb:272:in `process_until_group_finished'
kernel/common/regexp.rb:272:in `process_until_group_finished'
kernel/common/regexp.rb:272:in `process_until_group_finished'
kernel/common/regexp.rb:272:in `process_until_group_finished'
kernel/common/regexp.rb:272:in `process_until_group_finished'
kernel/common/regexp.rb:272:in `process_until_group_finished'
kernel/common/regexp.rb:272:in `process_until_group_finished'
kernel/common/regexp.rb:272:in `process_until_group_finished'
kernel/common/regexp.rb:272:in `process_until_group_finished'
kernel/common/regexp.rb:272:in `process_until_group_finished'
kernel/common/regexp.rb:272:in `process_until... 78 levels...
_group_finished'
kernel/common/regexp.rb:272:in `process_until_group_finished'
kernel/common/regexp.rb:272:in `process_until_group_finished'
kernel/common/regexp.rb:272:in `process_until_group_finished'
kernel/common/regexp.rb:272:in `process_until_group_finished'
kernel/common/regexp.rb:221:in `process_group'
kernel/common/regexp.rb:201:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/com from kernel/common/hash19.rb:243:in `each'
from /Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/net/http.rb:1518:in `each (each_header)'
from /Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:332:in `open_http'
from /Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:775:in `buffer_open'
from /Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:203:in `open_loop'
from kernel/common/throw_catch19.rb:8:in `catch'
from kernel/common/throw_catch.rb:10:in `register'
from kernel/common/throw_catch19.rb:7:in `catch'
from /Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:201:in `open_loop'
from /Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:146:in `open_uri'
from /Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:677:in `open'
from /Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:685:in `read'
from (irb):8:in `fetch'
from /Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/gems/1.9/gems/celluloid-0.12.3/lib/celluloid/calls.rb:57:in `dispatch'
from /Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/gems/1.9/gems/celluloid-0.12.3/lib/celluloid/actor.rb:323:in `handle_message'
from /Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/gems/1.9/gems/celluloid-0.12.3/lib/celluloid/tasks/task_fiber.rb:22:in `initialize'mon/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:208:in `create_parts'
kernel/common/regexp.rb:187:in `parts'
kernel/common/regexp.rb:298:in `options_string'
kernel/common/regexp.rb:174:in `string'
kernel/common/regexp.rb:316:in `to_s'
/Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:463:in `content_type_parse'
/Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:498:in `charset'
/Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:422:in `meta_setup_encoding'
/Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:443:in `meta_add_field'
/Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:332:in `open_http'
/Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/net/http.rb:1519:in `each_header'
kernel/common/hash19.rb:243:in `each'
/Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/net/http.rb:1518:in `each (each_header)'
/Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:332:in `open_http'
/Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:775:in `buffer_open'
/Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:203:in `open_loop'
kernel/common/throw_catch19.rb:8:in `catch'
kernel/common/throw_catch.rb:10:in `register'
kernel/common/throw_catch19.rb:7:in `catch'
/Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:201:in `open_loop'
/Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:146:in `open_uri'
/Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:677:in `open'
/Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/lib/19/open-uri.rb:685:in `read'
(irb):8:in `fetch'
/Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/gems/1.9/gems/celluloid-0.12.3/lib/celluloid/calls.rb:57:in `dispatch'
/Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/gems/1.9/gems/celluloid-0.12.3/lib/celluloid/actor.rb:323:in `handle_message'
/Users/bmckim/.rbenv/versions/rbx-2.0.0-dev/gems/1.9/gems/celluloid-0.12.3/lib/celluloid/tasks/task_fiber.rb:22:in `initialize'
require 'celluloid'
require 'open-uri'
URI.parse("http://google.com").read
=> # the body of google.com
class Fetcher
include Celluloid
def fetch(url)
URI.parse(url).read
end
end
f = Fetcher.new
=> #<Celluloid::Actor(Fetcher:0x2660)>
f.fetch("http://google.com")
=> # the body of google.com
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment