dpickett-thinking-sphinx 1.1.4 → 1.1.12
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/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
|