Project

otaku

0.0
No commit activity in last 3 years
No release in over 3 years
Dead simple service framework built on eventmachine
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0

Runtime

 Project Readme

OTAKU¶ ↑

Dead simple server/client service built using eventmachine.

Introduction¶ ↑

Otaku’s original intent is to support testing of cross-process stubbing in CrossStub (github.com/ngty/cross-stub). It’s usefulness in other aspects of my hacking life prompts me to extract it out, & package it as a generic solution. Its primary intent is to be dead simple to use & easy to customize, of course, both criteria subjected to very my own tastes.

Getting Started¶ ↑

It’s hosted on rubygems.org:

$ gem install otaku

Using It¶ ↑

1. Starting service & defining handler¶ ↑

require 'otaku'

Otaku.start do |data|
  result = '~ %s ~' % data
end

2. Sending processing request¶ ↑

require 'otaku'

Otaku.process('hello')
# >> '~ hello ~'

Wait a minute, how abt contextual references ??¶ ↑

Previously, when there is references to local variables outside the proc, we need to start Otaku in a very awkward manner:

Otaku.start(:mark => '*') do |data|
  '%s %s %s' % [mark, data, mark]
end

Otaku.process('hello')
# >> '* hello *'

This is no longer needed from release-0.4.0 onwards, thanks to the help with SerializableProc (github.com/ngty/serializable_proc), contextual references to global, class, instance & local variables are automatically taken care of:

x, @x, @@x, $x = 'lx', 'ix', 'cx', 'gx'
Otaku.start do |data|
  [x, @x, @@x, $x].join(data)
end

Otaku.process(' & ')
# >> 'lx & ix & cx & gx'

Configuraing It¶ ↑

Otaku ships with the following defaults:

Otaku.address         # >> '127.0.0.1'
Otaku.port            # >> 10999
Otaku.init_wait_time  # >> 2
Otaku.log_file        # >> '/tmp/otaku.log'
Otaku.ruby            # >> 'ruby' # (the current in-use ruby)

Configuring can be done via:

1. Configuration Proc¶ ↑

Otaku.configure do |config|
  config.init_wait_time = 10
  # (more typing, more customizing)
end

2. Configuration Hash¶ ↑

Otaku.configure({
  :init_wait_time => 10
  # (more typing, more customizing)
})

3. Writer Method¶ ↑

Otaku.init_wait_time = 10

Note on Patches/Pull Requests¶ ↑

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.

Copyright © since 2010 NgTzeYang. See LICENSE for details.