Skip to content

Instantly share code, notes, and snippets.

@jackhong
Created November 12, 2012 02:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jackhong/4057217 to your computer and use it in GitHub Desktop.
Save jackhong/4057217 to your computer and use it in GitHub Desktop.
Try omf rete
require 'pp'
require 'omf_rete/store'
N = 100
s = OMF::Rete::Store.create 3
(1..N).each do |i|
s.addTuple(["node_#{i}", 'status', 'ok'])
end
tset = OMF::Rete::Store.create 3
s.registerTSet(tset, [:node?, 'status', 'ok'])
pp tset.find([:_, 'status', :_]).size
s.subscribe(:check_nodes, [[:node?, 'status', 'ok']]) do |m|
puts m.size
puts "nodes ok"
end
### Output
100
/home/jack/.rvm/gems/ruby-1.9.3-p286@omf/gems/omf_rete-0.5/lib/omf_rete/tuple_stream.rb:110:in `process_result': undefined method `addTuple' for nil:NilClass (NoMethodError)
from /home/jack/.rvm/gems/ruby-1.9.3-p286@omf/gems/omf_rete-0.5/lib/omf_rete/tuple_stream.rb:81:in `addTuple'
from /home/jack/.rvm/gems/ruby-1.9.3-p286@omf/gems/omf_rete-0.5/lib/omf_rete/store/alpha/alpha_store.rb:132:in `block in registerTSet'
from /home/jack/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/set.rb:222:in `block in each'
from /home/jack/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/set.rb:222:in `each_key'
from /home/jack/.rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/set.rb:222:in `each'
from /home/jack/.rvm/gems/ruby-1.9.3-p286@omf/gems/omf_rete-0.5/lib/omf_rete/store/alpha/alpha_store.rb:131:in `registerTSet'
from /home/jack/.rvm/gems/ruby-1.9.3-p286@omf/gems/omf_rete-0.5/lib/omf_rete/planner/source_plan.rb:53:in `materialize'
from /home/jack/.rvm/gems/ruby-1.9.3-p286@omf/gems/omf_rete-0.5/lib/omf_rete/planner/plan_builder.rb:257:in `_materialize_simple_plan'
from /home/jack/.rvm/gems/ruby-1.9.3-p286@omf/gems/omf_rete-0.5/lib/omf_rete/planner/plan_builder.rb:99:in `materialize'
from /home/jack/.rvm/gems/ruby-1.9.3-p286@omf/gems/omf_rete-0.5/lib/omf_rete/store.rb:29:in `subscribe'
from alice.rb:17:in `<main>'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment