dpickett-thinking-sphinx 1.1.4 → 1.1.12
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +126 -0
- data/lib/thinking_sphinx/active_record/attribute_updates.rb +48 -0
- data/lib/thinking_sphinx/active_record/delta.rb +14 -1
- data/lib/thinking_sphinx/active_record.rb +23 -5
- data/lib/thinking_sphinx/adapters/abstract_adapter.rb +9 -1
- data/lib/thinking_sphinx/adapters/mysql_adapter.rb +3 -2
- data/lib/thinking_sphinx/adapters/postgresql_adapter.rb +4 -3
- data/lib/thinking_sphinx/association.rb +17 -0
- data/lib/thinking_sphinx/attribute.rb +106 -95
- data/lib/thinking_sphinx/class_facet.rb +0 -5
- data/lib/thinking_sphinx/collection.rb +7 -1
- data/lib/thinking_sphinx/configuration.rb +9 -4
- data/lib/thinking_sphinx/core/string.rb +3 -10
- data/lib/thinking_sphinx/deltas/default_delta.rb +8 -5
- data/lib/thinking_sphinx/deltas/delayed_delta.rb +4 -2
- data/lib/thinking_sphinx/deltas.rb +7 -2
- data/lib/thinking_sphinx/deploy/capistrano.rb +80 -0
- data/lib/thinking_sphinx/facet.rb +22 -9
- data/lib/thinking_sphinx/facet_collection.rb +27 -12
- data/lib/thinking_sphinx/field.rb +4 -96
- data/lib/thinking_sphinx/index/builder.rb +46 -15
- data/lib/thinking_sphinx/index.rb +58 -66
- data/lib/thinking_sphinx/property.rb +133 -0
- data/lib/thinking_sphinx/rails_additions.rb +7 -4
- data/lib/thinking_sphinx/search.rb +181 -44
- data/lib/thinking_sphinx/tasks.rb +4 -4
- data/lib/thinking_sphinx.rb +47 -11
- data/spec/unit/thinking_sphinx/active_record/delta_spec.rb +2 -2
- data/spec/unit/thinking_sphinx/active_record_spec.rb +64 -4
- data/spec/unit/thinking_sphinx/attribute_spec.rb +16 -1
- data/spec/unit/thinking_sphinx/facet_collection_spec.rb +64 -0
- data/spec/unit/thinking_sphinx/facet_spec.rb +46 -0
- data/spec/unit/thinking_sphinx/index_spec.rb +90 -0
- data/spec/unit/thinking_sphinx/rails_additions_spec.rb +183 -0
- data/spec/unit/thinking_sphinx/search_spec.rb +44 -0
- data/spec/unit/thinking_sphinx_spec.rb +10 -6
- data/tasks/distribution.rb +1 -1
- data/tasks/testing.rb +7 -15
- data/vendor/after_commit/init.rb +3 -0
- data/vendor/after_commit/lib/after_commit/active_record.rb +27 -4
- data/vendor/after_commit/lib/after_commit/connection_adapters.rb +1 -1
- data/vendor/after_commit/lib/after_commit.rb +4 -1
- metadata +12 -3
- data/README +0 -107
@@ -53,13 +53,15 @@ describe ThinkingSphinx do
|
|
53
53
|
|
54
54
|
describe "use_group_by_shortcut? method" do
|
55
55
|
before :each do
|
56
|
-
|
56
|
+
adapter = defined?(JRUBY_VERSION) ? :JdbcAdapter : :MysqlAdapter
|
57
|
+
unless ::ActiveRecord::ConnectionAdapters.const_defined?(adapter)
|
57
58
|
pending "No MySQL"
|
58
59
|
return
|
59
60
|
end
|
60
61
|
|
61
|
-
@connection = ::ActiveRecord::ConnectionAdapters
|
62
|
-
:select_all => true
|
62
|
+
@connection = ::ActiveRecord::ConnectionAdapters.const_get(adapter).stub_instance(
|
63
|
+
:select_all => true,
|
64
|
+
:config => {:adapter => defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql'}
|
63
65
|
)
|
64
66
|
::ActiveRecord::Base.stub_method(
|
65
67
|
:connection => @connection
|
@@ -103,12 +105,14 @@ describe ThinkingSphinx do
|
|
103
105
|
|
104
106
|
describe "if not using MySQL" do
|
105
107
|
before :each do
|
106
|
-
|
108
|
+
adapter = defined?(JRUBY_VERSION) ? :JdbcAdapter : :PostgreSQLAdapter
|
109
|
+
unless ::ActiveRecord::ConnectionAdapters.const_defined?(adapter)
|
107
110
|
pending "No PostgreSQL"
|
108
111
|
return
|
109
112
|
end
|
110
|
-
@connection = ::ActiveRecord::ConnectionAdapters
|
111
|
-
:select_all => true
|
113
|
+
@connection = ::ActiveRecord::ConnectionAdapters.const_get(adapter).stub_instance(
|
114
|
+
:select_all => true,
|
115
|
+
:config => {:adapter => defined?(JRUBY_VERSION) ? 'jdbcpostgresql' : 'postgresql'}
|
112
116
|
)
|
113
117
|
::ActiveRecord::Base.stub_method(
|
114
118
|
:connection => @connection
|
data/tasks/distribution.rb
CHANGED
data/tasks/testing.rb
CHANGED
@@ -20,13 +20,7 @@ namespace :features do
|
|
20
20
|
def add_task(name, description)
|
21
21
|
Cucumber::Rake::Task.new(name, description) do |t|
|
22
22
|
t.cucumber_opts = "--format pretty"
|
23
|
-
t.
|
24
|
-
"features/support/env",
|
25
|
-
"features/support/db/#{name}",
|
26
|
-
"features/support/db/active_record",
|
27
|
-
"features/support/post_database",
|
28
|
-
"features/step_definitions/**.rb"
|
29
|
-
]
|
23
|
+
t.profile = name
|
30
24
|
end
|
31
25
|
end
|
32
26
|
|
@@ -46,13 +40,7 @@ namespace :rcov do
|
|
46
40
|
def add_task(name, description)
|
47
41
|
Cucumber::Rake::Task.new(name, description) do |t|
|
48
42
|
t.cucumber_opts = "--format pretty"
|
49
|
-
t.
|
50
|
-
"features/support/env",
|
51
|
-
"features/support/db/#{name}",
|
52
|
-
"features/support/db/active_record",
|
53
|
-
"features/support/post_database",
|
54
|
-
"features/step_definitions/**.rb"
|
55
|
-
]
|
43
|
+
t.profile = name
|
56
44
|
t.rcov = true
|
57
45
|
t.rcov_opts = [
|
58
46
|
'--exclude', 'spec',
|
@@ -80,7 +68,11 @@ task :cucumber_defaults do
|
|
80
68
|
"--require #{path}"
|
81
69
|
}.join(" ")
|
82
70
|
|
71
|
+
features = FileList["features/*.feature"].join(" ")
|
72
|
+
|
83
73
|
File.open('cucumber.yml', 'w') { |f|
|
84
|
-
f.write "default: \"#{default_requires} #{step_definitions}\""
|
74
|
+
f.write "default: \"#{default_requires} #{step_definitions}\"\n\n"
|
75
|
+
f.write "mysql: \"#{default_requires} #{step_definitions} #{features}\"\n\n"
|
76
|
+
f.write "postgresql: \"#{default_requires.gsub(/mysql/, 'postgresql')} #{step_definitions} #{features}\""
|
85
77
|
}
|
86
78
|
end
|
data/vendor/after_commit/init.rb
CHANGED
@@ -3,3 +3,6 @@ ActiveRecord::Base.send(:include, AfterCommit::ActiveRecord)
|
|
3
3
|
Object.subclasses_of(ActiveRecord::ConnectionAdapters::AbstractAdapter).each do |klass|
|
4
4
|
klass.send(:include, AfterCommit::ConnectionAdapters)
|
5
5
|
end
|
6
|
+
if defined?(JRUBY_VERSION) and defined?(JdbcSpec::MySQL)
|
7
|
+
JdbcSpec::MySQL.send :include, AfterCommit::ConnectionAdapters
|
8
|
+
end
|
@@ -71,19 +71,42 @@ module AfterCommit
|
|
71
71
|
# after_commit callback can be made from the ConnectionAdapters when
|
72
72
|
# the commit for the transaction has finally succeeded.
|
73
73
|
def after_commit_callback
|
74
|
-
|
74
|
+
call_after_commit_callback :after_commit
|
75
75
|
end
|
76
76
|
|
77
77
|
def after_commit_on_create_callback
|
78
|
-
|
78
|
+
call_after_commit_callback :after_commit_on_create
|
79
79
|
end
|
80
80
|
|
81
81
|
def after_commit_on_update_callback
|
82
|
-
|
82
|
+
call_after_commit_callback :after_commit_on_update
|
83
83
|
end
|
84
84
|
|
85
85
|
def after_commit_on_destroy_callback
|
86
|
-
|
86
|
+
call_after_commit_callback :after_commit_on_destroy
|
87
|
+
end
|
88
|
+
|
89
|
+
private
|
90
|
+
|
91
|
+
def call_after_commit_callback(call)
|
92
|
+
if can_call_after_commit call
|
93
|
+
callback call
|
94
|
+
clear_after_commit_call call
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def can_call_after_commit(call)
|
99
|
+
@calls ||= {}
|
100
|
+
@calls[call] ||= false
|
101
|
+
if @calls[call]
|
102
|
+
return false
|
103
|
+
else
|
104
|
+
@calls[call] = true
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def clear_after_commit_call(call)
|
109
|
+
@calls[call] = false
|
87
110
|
end
|
88
111
|
end
|
89
112
|
end
|
@@ -7,7 +7,7 @@ module AfterCommit
|
|
7
7
|
# override it so that after this happens, any records that were saved
|
8
8
|
# or destroyed within this transaction now get their after_commit
|
9
9
|
# callback fired.
|
10
|
-
def commit_db_transaction_with_callback
|
10
|
+
def commit_db_transaction_with_callback
|
11
11
|
commit_db_transaction_without_callback
|
12
12
|
trigger_after_commit_callbacks
|
13
13
|
trigger_after_commit_on_create_callbacks
|
@@ -39,4 +39,7 @@ ActiveRecord::Base.send(:include, AfterCommit::ActiveRecord)
|
|
39
39
|
|
40
40
|
Object.subclasses_of(ActiveRecord::ConnectionAdapters::AbstractAdapter).each do |klass|
|
41
41
|
klass.send(:include, AfterCommit::ConnectionAdapters)
|
42
|
-
end
|
42
|
+
end
|
43
|
+
if defined?(JRUBY_VERSION) and defined?(JdbcSpec::MySQL)
|
44
|
+
JdbcSpec::MySQL.send :include, AfterCommit::ConnectionAdapters
|
45
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dpickett-thinking-sphinx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pat Allan
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-05-11 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -22,6 +22,7 @@ extensions: []
|
|
22
22
|
extra_rdoc_files: []
|
23
23
|
|
24
24
|
files:
|
25
|
+
- lib/thinking_sphinx/active_record/attribute_updates.rb
|
25
26
|
- lib/thinking_sphinx/active_record/delta.rb
|
26
27
|
- lib/thinking_sphinx/active_record/has_many_association.rb
|
27
28
|
- lib/thinking_sphinx/active_record/search.rb
|
@@ -42,18 +43,20 @@ files:
|
|
42
43
|
- lib/thinking_sphinx/deltas/delayed_delta/job.rb
|
43
44
|
- lib/thinking_sphinx/deltas/delayed_delta.rb
|
44
45
|
- lib/thinking_sphinx/deltas.rb
|
46
|
+
- lib/thinking_sphinx/deploy/capistrano.rb
|
45
47
|
- lib/thinking_sphinx/facet.rb
|
46
48
|
- lib/thinking_sphinx/facet_collection.rb
|
47
49
|
- lib/thinking_sphinx/field.rb
|
48
50
|
- lib/thinking_sphinx/index/builder.rb
|
49
51
|
- lib/thinking_sphinx/index/faux_column.rb
|
50
52
|
- lib/thinking_sphinx/index.rb
|
53
|
+
- lib/thinking_sphinx/property.rb
|
51
54
|
- lib/thinking_sphinx/rails_additions.rb
|
52
55
|
- lib/thinking_sphinx/search.rb
|
53
56
|
- lib/thinking_sphinx/tasks.rb
|
54
57
|
- lib/thinking_sphinx.rb
|
55
58
|
- LICENCE
|
56
|
-
- README
|
59
|
+
- README.textile
|
57
60
|
- tasks/distribution.rb
|
58
61
|
- tasks/testing.rb
|
59
62
|
- tasks/rails.rake
|
@@ -106,10 +109,13 @@ files:
|
|
106
109
|
- spec/unit/thinking_sphinx/collection_spec.rb
|
107
110
|
- spec/unit/thinking_sphinx/configuration_spec.rb
|
108
111
|
- spec/unit/thinking_sphinx/core/string_spec.rb
|
112
|
+
- spec/unit/thinking_sphinx/facet_collection_spec.rb
|
113
|
+
- spec/unit/thinking_sphinx/facet_spec.rb
|
109
114
|
- spec/unit/thinking_sphinx/field_spec.rb
|
110
115
|
- spec/unit/thinking_sphinx/index/builder_spec.rb
|
111
116
|
- spec/unit/thinking_sphinx/index/faux_column_spec.rb
|
112
117
|
- spec/unit/thinking_sphinx/index_spec.rb
|
118
|
+
- spec/unit/thinking_sphinx/rails_additions_spec.rb
|
113
119
|
- spec/unit/thinking_sphinx/search_spec.rb
|
114
120
|
- spec/unit/thinking_sphinx_spec.rb
|
115
121
|
has_rdoc: true
|
@@ -150,9 +156,12 @@ test_files:
|
|
150
156
|
- spec/unit/thinking_sphinx/collection_spec.rb
|
151
157
|
- spec/unit/thinking_sphinx/configuration_spec.rb
|
152
158
|
- spec/unit/thinking_sphinx/core/string_spec.rb
|
159
|
+
- spec/unit/thinking_sphinx/facet_collection_spec.rb
|
160
|
+
- spec/unit/thinking_sphinx/facet_spec.rb
|
153
161
|
- spec/unit/thinking_sphinx/field_spec.rb
|
154
162
|
- spec/unit/thinking_sphinx/index/builder_spec.rb
|
155
163
|
- spec/unit/thinking_sphinx/index/faux_column_spec.rb
|
156
164
|
- spec/unit/thinking_sphinx/index_spec.rb
|
165
|
+
- spec/unit/thinking_sphinx/rails_additions_spec.rb
|
157
166
|
- spec/unit/thinking_sphinx/search_spec.rb
|
158
167
|
- spec/unit/thinking_sphinx_spec.rb
|
data/README
DELETED
@@ -1,107 +0,0 @@
|
|
1
|
-
= Thinking Sphinx
|
2
|
-
|
3
|
-
== Usage
|
4
|
-
|
5
|
-
First, if you haven't done so already, check out the main usage[http://ts.freelancing-gods.com/usage.html] page. Once you've done that, the next place to look for information is the specific method docs - ThinkingSphinx::Search and ThinkingSphinx::Index::Builder in particular.
|
6
|
-
|
7
|
-
Keep in mind that while Thinking Sphinx works for ActiveRecord with Merb, it doesn't yet support DataMapper (although that is planned).
|
8
|
-
|
9
|
-
== Contributing
|
10
|
-
|
11
|
-
Fork on GitHub and after you've committed tested patches, send a pull request.
|
12
|
-
|
13
|
-
To get the spec suite running, you will need to install the not-a-mock gem if you don't already have it:
|
14
|
-
|
15
|
-
git clone git://github.com/freelancing-god/not-a-mock.git
|
16
|
-
cd not-a-mock
|
17
|
-
rake gem
|
18
|
-
gem install pkg/not_a_mock-1.1.0.gem
|
19
|
-
|
20
|
-
Then install the ginger gem. The steps are the same, except that you might need to sudo the gem install:
|
21
|
-
|
22
|
-
git clone git://github.com/freelancing-god/ginger.git
|
23
|
-
cd ginger
|
24
|
-
rake gem
|
25
|
-
sudo gem install pkg/ginger-1.1.0.gem
|
26
|
-
|
27
|
-
Then set up your database:
|
28
|
-
|
29
|
-
cp spec/fixtures/database.yml.default spec/fixtures/database.yml
|
30
|
-
mysqladmin -u root create thinking_sphinx
|
31
|
-
|
32
|
-
Make sure you don't have another Sphinx daemon (searchd) running. If you do, quit it with "rake ts:stop"
|
33
|
-
in the app root.
|
34
|
-
|
35
|
-
You should now have a passing test suite from which to build your patch on.
|
36
|
-
|
37
|
-
rake spec
|
38
|
-
|
39
|
-
If you get the message "Failed to start searchd daemon", run the spec with sudo:
|
40
|
-
|
41
|
-
sudo rake spec
|
42
|
-
|
43
|
-
If you quit the spec suite before it's completed, you may be left with data in the test
|
44
|
-
database, causing the next run to have failures. Let that run complete and then try again.
|
45
|
-
|
46
|
-
== Contributors
|
47
|
-
|
48
|
-
Since I first released this library, there's been quite a few people who have submitted patches, to my immense gratitude. Others have suggested syntax changes and general improvements. So my thanks to the following people:
|
49
|
-
|
50
|
-
- Joost Hietbrink
|
51
|
-
- Jonathan Conway
|
52
|
-
- Gregory Mirzayantz
|
53
|
-
- Tung Nguyen
|
54
|
-
- Sean Cribbs
|
55
|
-
- Benoit Caccinolo
|
56
|
-
- John Barton
|
57
|
-
- Oliver Beddows
|
58
|
-
- Arthur Zapparoli
|
59
|
-
- Dusty Doris
|
60
|
-
- Marcus Crafter
|
61
|
-
- Patrick Lenz
|
62
|
-
- Björn Andreasson
|
63
|
-
- James Healy
|
64
|
-
- Jae-Jun Hwang
|
65
|
-
- Xavier Shay
|
66
|
-
- Jason Rust
|
67
|
-
- Gopal Patel
|
68
|
-
- Chris Heald
|
69
|
-
- Peter Vandenberk
|
70
|
-
- Josh French
|
71
|
-
- Andrew Bennett
|
72
|
-
- Jordan Fowler
|
73
|
-
- Seth Walker
|
74
|
-
- Joe Noon
|
75
|
-
- Wolfgang Postler
|
76
|
-
- Rick Olson
|
77
|
-
- Killian Murphy
|
78
|
-
- Morten Primdahl
|
79
|
-
- Ryan Bates
|
80
|
-
- David Eisinger
|
81
|
-
- Shay Arnett
|
82
|
-
- Minh Tran
|
83
|
-
- Jeremy Durham
|
84
|
-
- Piotr Sarnacki
|
85
|
-
- Matt Johnson
|
86
|
-
- Nicolas Blanco
|
87
|
-
- Max Lapshin
|
88
|
-
- Josh Natanson
|
89
|
-
- Philip Hallstrom
|
90
|
-
- Christian Rishøj
|
91
|
-
- Mike Flester
|
92
|
-
- Jim Remsik
|
93
|
-
- Kennon Ballou
|
94
|
-
- Henrik Nyh
|
95
|
-
- Emil Tin
|
96
|
-
- Doug Cole
|
97
|
-
- Ed Hickey
|
98
|
-
- Evan Weaver
|
99
|
-
- Thibaut Barrere
|
100
|
-
- Kristopher Chambers
|
101
|
-
- Dmitrij Smalko
|
102
|
-
- Aleksey Yeschenko
|
103
|
-
- Lachie Cox
|
104
|
-
- Lourens Naude
|
105
|
-
- Tom Davies
|
106
|
-
- Dan Pickett
|
107
|
-
- Alex Caudill
|