diff --git a/lib/strokedb/views/view.rb b/lib/strokedb/views/view.rb index bec6da64..7b83fea1 100644 --- a/lib/strokedb/views/view.rb +++ b/lib/strokedb/views/view.rb @@ -236,14 +236,15 @@ class << View def [](name) # TODO: find viewdoc by name end - + + alias :original_new :new # Define a view. # # Examples # View.define("view_name", :option => "value") do |viewdoc| ... end # View.define(:name => "view_name", :option => "value") do |viewdoc| ... end # - def define(*args, &block) + def new(*args, &block) if args.first.is_a? String options = args[1] || {} options['name'] = args.first @@ -262,11 +263,16 @@ def define(*args, &block) options['uuid'] = ::Util.sha1_uuid("view:#{nsurl}##{name}") unless v = find(options['uuid']) - v = create!(options, &block) + v = original_new(options, &block) end v end + + alias :define :new + alias :define! :create! + end + class InvalidViewError < StandardError ; end diff --git a/spec/lib/strokedb/views/view_spec.rb b/spec/lib/strokedb/views/view_spec.rb index 94f5c950..a09cd7c3 100644 --- a/spec/lib/strokedb/views/view_spec.rb +++ b/spec/lib/strokedb/views/view_spec.rb @@ -8,7 +8,7 @@ it "could not be initialized" do lambda do - @post_comments = View.define + @post_comments = View.define! end.should raise_error(ArgumentError) end @@ -17,7 +17,7 @@ describe View, "without #map method defined" do before(:each) do setup_default_store - @post_comments = View.define(:name => "post_comments") + @post_comments = View.define!(:name => "post_comments") end it "should raise exception when #map is used" do @@ -29,7 +29,7 @@ before(:all) do setup_default_store - @view = View.define("post_comments") do |view| + @view = View.define!("post_comments") do |view| def view.map(uuid, doc) doc['type'] =~ /comment/ ? [[[doc.parent, doc.created_at], doc]] : nil end @@ -94,7 +94,7 @@ def view.map(uuid, doc) before(:each) do setup_default_store - @view = View.define("SomeView") do |view| + @view = View.define!("SomeView") do |view| def view.map(uuid, doc) [[doc,doc]] end