shanna-dm-sphinx-adapter 0.6 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +10 -0
- data/Rakefile +1 -1
- data/dm-sphinx-adapter.gemspec +3 -3
- data/lib/dm-sphinx-adapter/adapter.rb +8 -6
- data/test/test_adapter.rb +25 -9
- metadata +2 -2
    
        data/History.txt
    CHANGED
    
    | @@ -1,3 +1,13 @@ | |
| 1 | 
            +
            === 0.6.1 / 2008-12-16
         | 
| 2 | 
            +
             | 
| 3 | 
            +
              * The adapter returns the entire Riddle::Client#query response so document :weight and :attributes are usable.
         | 
| 4 | 
            +
              * Fixed broken naming convention bug. The AbstractAdapter constructor was not being called.
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            === 0.6 / 2008-12-13
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              * Removed managed client and all related libs.
         | 
| 9 | 
            +
              * Switched to Shoulda for tests in an effort to clean them up a bit.
         | 
| 10 | 
            +
             | 
| 1 11 | 
             
            === 0.5 / 2008-12-01
         | 
| 2 12 |  | 
| 3 13 | 
             
              * Moved sphinx extended query string generator into a class of its own.
         | 
    
        data/Rakefile
    CHANGED
    
    
    
        data/dm-sphinx-adapter.gemspec
    CHANGED
    
    | @@ -2,11 +2,11 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            Gem::Specification.new do |s|
         | 
| 4 4 | 
             
              s.name = %q{dm-sphinx-adapter}
         | 
| 5 | 
            -
              s.version = "0.6"
         | 
| 5 | 
            +
              s.version = "0.6.1"
         | 
| 6 6 |  | 
| 7 7 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 8 8 | 
             
              s.authors = ["Shane Hanna"]
         | 
| 9 | 
            -
              s.date = %q{2008-12- | 
| 9 | 
            +
              s.date = %q{2008-12-16}
         | 
| 10 10 | 
             
              s.description = %q{A DataMapper Sphinx adapter.}
         | 
| 11 11 | 
             
              s.email = ["shane.hanna@gmail.com"]
         | 
| 12 12 | 
             
              s.extra_rdoc_files = ["History.txt", "LICENCE.txt", "Manifest.txt", "README.txt"]
         | 
| @@ -16,7 +16,7 @@ Gem::Specification.new do |s| | |
| 16 16 | 
             
              s.rdoc_options = ["--main", "README.txt"]
         | 
| 17 17 | 
             
              s.require_paths = ["lib"]
         | 
| 18 18 | 
             
              s.rubyforge_project = %q{dm-sphinx-adapter}
         | 
| 19 | 
            -
              s.rubygems_version = %q{1.3. | 
| 19 | 
            +
              s.rubygems_version = %q{1.3.0}
         | 
| 20 20 | 
             
              s.summary = %q{A DataMapper Sphinx adapter.}
         | 
| 21 21 | 
             
              s.test_files = ["test/test_adapter.rb", "test/test_attribute.rb", "test/test_index.rb", "test/test_query.rb", "test/test_resource.rb"]
         | 
| 22 22 |  | 
| @@ -1,5 +1,3 @@ | |
| 1 | 
            -
            require 'benchmark'
         | 
| 2 | 
            -
             | 
| 3 1 | 
             
            module DataMapper
         | 
| 4 2 | 
             
              module Adapters
         | 
| 5 3 | 
             
                module Sphinx
         | 
| @@ -38,6 +36,8 @@ module DataMapper | |
| 38 36 | 
             
                    # uri_or_options<URI, DataObject::URI, Addressable::URI, String, Hash, Pathname>::
         | 
| 39 37 | 
             
                    #   DataMapper uri or options hash.
         | 
| 40 38 | 
             
                    def initialize(name, uri_or_options)
         | 
| 39 | 
            +
                      super # Set up defaults.
         | 
| 40 | 
            +
             | 
| 41 41 | 
             
                      options = normalize_options(uri_or_options)
         | 
| 42 42 | 
             
                      @client = Riddle::Client.new(options.delete(:host), options.delete(:port))
         | 
| 43 43 | 
             
                      options.each{|k, v| @client.method("#{k}=".to_sym).call(v) if @client.respond_to?("#{k}=".to_sym)}
         | 
| @@ -58,11 +58,13 @@ module DataMapper | |
| 58 58 | 
             
                    # These methods are public but normally called indirectly through DataMapper::Resource#get,
         | 
| 59 59 | 
             
                    # DataMapper::Resource#first or DataMapper::Resource#all.
         | 
| 60 60 | 
             
                    #
         | 
| 61 | 
            +
                    # The document hashes returned are those from Riddle::Client.
         | 
| 62 | 
            +
                    #
         | 
| 61 63 | 
             
                    # ==== Parameters
         | 
| 62 64 | 
             
                    # query<DataMapper::Query>:: The query object.
         | 
| 63 65 | 
             
                    #
         | 
| 64 66 | 
             
                    # ==== Returns
         | 
| 65 | 
            -
                    # Array<Hash>:: An array of document hashes. <tt>[{:id => 1}, {:id => 2}]</tt>
         | 
| 67 | 
            +
                    # Array<Hash>:: An array of document hashes. <tt>[{:id => 1, ...}, {:id => 2, ...}]</tt>
         | 
| 66 68 | 
             
                    # Array<>::     An empty array if no documents match.
         | 
| 67 69 | 
             
                    def read_many(query)
         | 
| 68 70 | 
             
                      read(query)
         | 
| @@ -79,7 +81,7 @@ module DataMapper | |
| 79 81 | 
             
                    # query<DataMapper::Query>:: The query object.
         | 
| 80 82 | 
             
                    #
         | 
| 81 83 | 
             
                    # ==== Returns
         | 
| 82 | 
            -
                    # Hash:: An document hash of the first document matched. <tt>{:id => 1}</tt>
         | 
| 84 | 
            +
                    # Hash:: An document hash of the first document matched. <tt>{:id => 1, ...}</tt>
         | 
| 83 85 | 
             
                    # Nil::  If no documents match.
         | 
| 84 86 | 
             
                    def read_one(query)
         | 
| 85 87 | 
             
                      read(query).first
         | 
| @@ -113,7 +115,7 @@ module DataMapper | |
| 113 115 | 
             
                      # query<DataMapper::Query>:: The query object.
         | 
| 114 116 | 
             
                      #
         | 
| 115 117 | 
             
                      # ==== Returns
         | 
| 116 | 
            -
                      # Array<Hash>:: An array of document hashes. <tt>[{:id => 1}, {:id => 2}]</tt>
         | 
| 118 | 
            +
                      # Array<Hash>:: An array of document hashes. <tt>[{:id => 1, ...}, {:id => 2, ...}]</tt>
         | 
| 117 119 | 
             
                      # Array<>::     An empty array if no documents match.
         | 
| 118 120 | 
             
                      def read(query)
         | 
| 119 121 | 
             
                        from    = indexes(query.model).map{|index| index.name}.join(', ')
         | 
| @@ -136,7 +138,7 @@ module DataMapper | |
| 136 138 | 
             
                        DataMapper.logger.info(
         | 
| 137 139 | 
             
                          %q{Sphinx (%.3f): search '%s' in '%s' found %d documents} % [result[:time], search, from, result[:total]]
         | 
| 138 140 | 
             
                        )
         | 
| 139 | 
            -
                        result[:matches].map{|doc|  | 
| 141 | 
            +
                        result[:matches].map{|doc| doc[:id] = doc[:doc]; doc}
         | 
| 140 142 | 
             
                      end
         | 
| 141 143 |  | 
| 142 144 |  | 
    
        data/test/test_adapter.rb
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            require File.join(File.dirname(__FILE__), 'helper')
         | 
| 2 2 |  | 
| 3 3 | 
             
            class TestAdapter < Test::Unit::TestCase
         | 
| 4 | 
            -
              context 'DM::A::Sphinx::Adapter | 
| 4 | 
            +
              context 'DM::A::Sphinx::Adapter' do
         | 
| 5 5 | 
             
                setup do
         | 
| 6 6 | 
             
                  DataMapper.setup(:adapter, :adapter => 'sphinx')
         | 
| 7 7 | 
             
                  load File.join(File.dirname(__FILE__), 'files', 'model.rb')
         | 
| @@ -9,14 +9,30 @@ class TestAdapter < Test::Unit::TestCase | |
| 9 9 | 
             
                  @resource = Item
         | 
| 10 10 | 
             
                end
         | 
| 11 11 |  | 
| 12 | 
            +
                context 'class' do
         | 
| 13 | 
            +
                  should 'use default field naming convention' do
         | 
| 14 | 
            +
                    assert_equal(
         | 
| 15 | 
            +
                      DataMapper::NamingConventions::Field::Underscored,
         | 
| 16 | 
            +
                      @it.adapter.field_naming_convention
         | 
| 17 | 
            +
                    )
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  should 'use default resource naming convention' do
         | 
| 21 | 
            +
                    assert_equal(
         | 
| 22 | 
            +
                      DataMapper::NamingConventions::Resource::UnderscoredAndPluralized,
         | 
| 23 | 
            +
                      @it.adapter.resource_naming_convention
         | 
| 24 | 
            +
                    )
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 12 28 | 
             
                context '#create' do
         | 
| 13 | 
            -
                  should ' | 
| 29 | 
            +
                  should 'return zero records created' do
         | 
| 14 30 | 
             
                    assert_equal 0, @it.create(create_resource)
         | 
| 15 31 | 
             
                  end
         | 
| 16 32 | 
             
                end
         | 
| 17 33 |  | 
| 18 34 | 
             
                context '#delete' do
         | 
| 19 | 
            -
                  should ' | 
| 35 | 
            +
                  should 'return zero records deleted' do
         | 
| 20 36 | 
             
                    assert_equal 0, @it.delete(create_resource)
         | 
| 21 37 | 
             
                  end
         | 
| 22 38 | 
             
                end
         | 
| @@ -24,26 +40,26 @@ class TestAdapter < Test::Unit::TestCase | |
| 24 40 | 
             
                context '#read_many' do
         | 
| 25 41 | 
             
                  context 'conditions' do
         | 
| 26 42 | 
             
                    should 'return all objects when nil' do
         | 
| 27 | 
            -
                      assert_equal [ | 
| 43 | 
            +
                      assert_equal [1, 2, 3], @it.read_many(query).map{|d| d[:id]}
         | 
| 28 44 | 
             
                    end
         | 
| 29 45 |  | 
| 30 46 | 
             
                    should 'return subset of objects for conditions' do
         | 
| 31 | 
            -
                      assert_equal [ | 
| 47 | 
            +
                      assert_equal [2], @it.read_many(query(:t_string => 'two')).map{|d| d[:id]}
         | 
| 32 48 | 
             
                    end
         | 
| 33 49 | 
             
                  end
         | 
| 34 50 |  | 
| 35 51 | 
             
                  context 'offsets' do
         | 
| 36 52 | 
             
                    should 'be able to offset the objects' do
         | 
| 37 | 
            -
                      assert_equal [ | 
| 38 | 
            -
                      assert_equal [ | 
| 53 | 
            +
                      assert_equal [1, 2, 3], @it.read_many(query(:offset => 0)).map{|d| d[:id]}
         | 
| 54 | 
            +
                      assert_equal [2, 3], @it.read_many(query(:offset => 1)).map{|d| d[:id]}
         | 
| 39 55 | 
             
                      assert_equal [], @it.read_many(query(:offset => 3))
         | 
| 40 56 | 
             
                    end
         | 
| 41 57 | 
             
                  end
         | 
| 42 58 |  | 
| 43 59 | 
             
                  context 'limits' do
         | 
| 44 60 | 
             
                    should 'be able to limit the objects' do
         | 
| 45 | 
            -
                      assert_equal [ | 
| 46 | 
            -
                      assert_equal [ | 
| 61 | 
            +
                      assert_equal [1], @it.read_many(query(:limit => 1)).map{|d| d[:id]}
         | 
| 62 | 
            +
                      assert_equal [1, 2], @it.read_many(query(:limit => 2)).map{|d| d[:id]}
         | 
| 47 63 | 
             
                    end
         | 
| 48 64 | 
             
                  end
         | 
| 49 65 | 
             
                end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification 
         | 
| 2 2 | 
             
            name: shanna-dm-sphinx-adapter
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 0.6.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors: 
         | 
| 7 7 | 
             
            - Shane Hanna
         | 
| @@ -9,7 +9,7 @@ autorequire: | |
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 11 |  | 
| 12 | 
            -
            date: 2008-12- | 
| 12 | 
            +
            date: 2008-12-16 00:00:00 -08:00
         | 
| 13 13 | 
             
            default_executable: 
         | 
| 14 14 | 
             
            dependencies: 
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency 
         |