acts_as_ferret 0.4.8.2 → 0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. data/README +2 -6
  2. data/bin/aaf_install +10 -6
  3. data/config/ferret_server.yml +2 -2
  4. data/doc/demo/app/models/stats.rb +1 -1
  5. data/lib/acts_as_ferret.rb +39 -37
  6. data/lib/{act_methods.rb → acts_as_ferret/act_methods.rb} +1 -1
  7. data/lib/{blank_slate.rb → acts_as_ferret/blank_slate.rb} +0 -0
  8. data/lib/{bulk_indexer.rb → acts_as_ferret/bulk_indexer.rb} +0 -0
  9. data/lib/{class_methods.rb → acts_as_ferret/class_methods.rb} +0 -0
  10. data/lib/{ferret_extensions.rb → acts_as_ferret/ferret_extensions.rb} +12 -16
  11. data/lib/{ferret_find_methods.rb → acts_as_ferret/ferret_find_methods.rb} +0 -0
  12. data/lib/{ferret_result.rb → acts_as_ferret/ferret_result.rb} +0 -0
  13. data/lib/{index.rb → acts_as_ferret/index.rb} +0 -0
  14. data/lib/{instance_methods.rb → acts_as_ferret/instance_methods.rb} +1 -1
  15. data/lib/{local_index.rb → acts_as_ferret/local_index.rb} +7 -4
  16. data/lib/{more_like_this.rb → acts_as_ferret/more_like_this.rb} +0 -0
  17. data/lib/{multi_index.rb → acts_as_ferret/multi_index.rb} +0 -0
  18. data/lib/acts_as_ferret/railtie.rb +16 -0
  19. data/lib/{rdig_adapter.rb → acts_as_ferret/rdig_adapter.rb} +0 -1
  20. data/lib/{remote_functions.rb → acts_as_ferret/remote_functions.rb} +0 -0
  21. data/lib/{remote_index.rb → acts_as_ferret/remote_index.rb} +0 -0
  22. data/lib/{remote_multi_index.rb → acts_as_ferret/remote_multi_index.rb} +0 -0
  23. data/lib/{search_results.rb → acts_as_ferret/search_results.rb} +0 -0
  24. data/lib/acts_as_ferret/server/config.rb +50 -0
  25. data/lib/{ferret_server.rb → acts_as_ferret/server/server.rb} +11 -56
  26. data/lib/{unix_daemon.rb → acts_as_ferret/server/unix_daemon.rb} +2 -4
  27. data/lib/acts_as_ferret/version.rb +3 -0
  28. data/lib/{without_ar.rb → acts_as_ferret/without_ar.rb} +0 -0
  29. data/recipes/aaf_recipes.rb +2 -4
  30. data/script/ferret_server +72 -6
  31. data/tasks/ferret.rake +13 -9
  32. metadata +68 -39
  33. data/acts_as_ferret.gemspec +0 -59
  34. data/init.rb +0 -24
  35. data/install.rb +0 -18
  36. data/lib/ar_mysql_auto_reconnect_patch.rb +0 -41
  37. data/lib/server_manager.rb +0 -71
  38. data/script/ferret_daemon +0 -94
  39. data/script/ferret_service +0 -178
@@ -1,8 +1,6 @@
1
- ################################################################################
2
1
  module ActsAsFerret
3
- module Remote
2
+ module Server
4
3
 
5
- ################################################################################
6
4
  # methods for becoming a daemon on Unix-like operating systems
7
5
  module UnixDaemon
8
6
 
@@ -13,7 +11,7 @@ module ActsAsFerret
13
11
  trap("TERM") { exit(0) }
14
12
  sess_id = Process.setsid
15
13
  STDIN.reopen("/dev/null")
16
- STDOUT.reopen("#{RAILS_ROOT}/log/ferret_server.out", "a")
14
+ STDOUT.reopen("#{Rails.root}/log/ferret_server.out", "a")
17
15
  STDERR.reopen(STDOUT)
18
16
  block.call
19
17
  end
@@ -0,0 +1,3 @@
1
+ module ActsAsFerret
2
+ VERSION = '0.5'
3
+ end
@@ -46,15 +46,13 @@ namespace :ferret do
46
46
  desc "Stop the Ferret DRb server"
47
47
  task :stop, :roles => :app do
48
48
  rails_env = fetch(:rails_env, 'production')
49
- ruby = fetch(:ruby, '/usr/bin/env ruby')
50
- run "cd #{current_path}; #{ruby} script/ferret_server -e #{rails_env} stop || true"
49
+ run "cd #{current_path}; script/ferret_server -e #{rails_env} stop || true"
51
50
  end
52
51
 
53
52
  desc "Start the Ferret DRb server"
54
53
  task :start, :roles => :app do
55
54
  rails_env = fetch(:rails_env, 'production')
56
- ruby = fetch(:ruby, '/usr/bin/env ruby')
57
- run "cd #{current_path}; #{ruby} script/ferret_server -e #{rails_env} start"
55
+ run "cd #{current_path}; script/ferret_server -e #{rails_env} start"
58
56
  end
59
57
 
60
58
  desc "Restart the Ferret DRb server"
@@ -2,11 +2,77 @@
2
2
 
3
3
  FERRET_SERVER = File.expand_path(__FILE__)
4
4
 
5
+ require 'optparse'
6
+
7
+ $ferret_server_options = {
8
+ 'environment' => nil,
9
+ 'debug' => nil,
10
+ 'root' => nil
11
+ }
12
+
13
+ OptionParser.new do |optparser|
14
+ optparser.banner = "Usage: #{FERRET_SERVER} [options] {start|stop|run}"
15
+
16
+ optparser.on('-h', '--help', "This message") do
17
+ puts optparser
18
+ exit
19
+ end
20
+
21
+ optparser.on('-R', '--root=PATH', 'Set Rails.root to the given string') do |r|
22
+ $ferret_server_options['root'] = r
23
+ end
24
+
25
+ optparser.on('-e', '--environment=NAME', 'Set Rails.env to the given string') do |e|
26
+ $ferret_server_options['environment'] = e
27
+ end
28
+
29
+ optparser.on('--debug', 'Include full stack traces on exceptions') do
30
+ $ferret_server_options['debug'] = true
31
+ end
32
+
33
+ $ferret_server_action = optparser.permute!(ARGV)
34
+ (puts optparser; exit(1)) unless $ferret_server_action.size == 1
35
+
36
+ $ferret_server_action = $ferret_server_action.first
37
+ (puts optparser; exit(1)) unless %w(start stop run).include?($ferret_server_action)
38
+ end
39
+
40
+ ################################################################################
41
+
42
+ def determine_rails_root
43
+ possible_rails_roots = [
44
+ $ferret_server_options['root'],
45
+ (defined?(FERRET_SERVER) ? File.join(File.dirname(FERRET_SERVER), '..') : nil),
46
+ File.join(File.dirname(__FILE__), *(['..']*4)),
47
+ '.'
48
+ ].compact
49
+ # take the first dir where environment.rb can be found
50
+ possible_rails_roots.find{ |dir| File.readable?(File.join(dir, 'config', 'application.rb')) }
51
+ end
52
+
5
53
  begin
6
- require File.join(File.dirname(__FILE__), '../vendor/plugins/acts_as_ferret/lib/server_manager')
7
- rescue LoadError
8
- # try the gem
9
- require 'rubygems'
10
- gem 'acts_as_ferret'
11
- require 'server_manager'
54
+ ENV['FERRET_USE_LOCAL_INDEX'] = 'true'
55
+ if env = $ferret_server_options['environment']
56
+ ENV['RAILS_ENV'] = env
57
+ end
58
+
59
+ # determine RAILS_ROOT unless already set
60
+ root = File.expand_path(determine_rails_root)
61
+
62
+ begin
63
+ require File.join(root, 'config', 'application')
64
+ rescue
65
+ puts "Error booting your rails app at #{root}: #{$!}\n#{$!.backtrace.join("\n")}"
66
+ raise $!
67
+ end
68
+
69
+ puts "Rails.root: #{Rails.root}"
70
+ puts "Rails.env: #{Rails.env}"
71
+
72
+ require 'acts_as_ferret/server/server'
73
+ ActsAsFerret::Server::Server.new.send($ferret_server_action)
74
+ rescue Exception => e
75
+ $stderr.puts(e.message)
76
+ $stderr.puts(e.backtrace.join("\n")) if $ferret_server_options['debug']
77
+ exit(1)
12
78
  end
@@ -6,17 +6,21 @@ namespace :ferret do
6
6
  # INDEXES="my_model shared" rake ferret:rebuild
7
7
  desc "Rebuild a Ferret index. Specify what model to rebuild with the INDEXES environment variable."
8
8
  task :rebuild => :environment do
9
- indexes = ENV['INDEXES'].split
10
- indexes.each do |index_name|
11
- start = 1.minute.ago
12
- ActsAsFerret::rebuild_index index_name
13
- idx = ActsAsFerret::get_index index_name
14
- # update records that have changed since the rebuild started
15
- idx.index_definition[:registered_models].each do |m|
16
- m.records_modified_since(start).each do |object|
17
- object.ferret_update
9
+ if ENV['INDEXES']
10
+ indexes = ENV['INDEXES'].split
11
+ indexes.each do |index_name|
12
+ start = 1.minute.ago
13
+ ActsAsFerret::rebuild_index index_name
14
+ idx = ActsAsFerret::get_index index_name
15
+ # update records that have changed since the rebuild started
16
+ idx.index_definition[:registered_models].each do |m|
17
+ m.records_modified_since(start).each do |object|
18
+ object.ferret_update
19
+ end
18
20
  end
19
21
  end
22
+ else
23
+ puts "set the INDEXES environment variable to the index names you want to rebuild:\nINDEXES=\"my_index another_index\" rake ferret:rebuild"
20
24
  end
21
25
  end
22
26
  end
metadata CHANGED
@@ -1,7 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_ferret
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.8.2
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 5
8
+ version: "0.5"
5
9
  platform: ruby
6
10
  authors:
7
11
  - Jens Kraemer
@@ -9,19 +13,38 @@ autorequire:
9
13
  bindir: bin
10
14
  cert_chain: []
11
15
 
12
- date: 2010-10-26 00:00:00 +02:00
16
+ date: 2010-09-07 00:00:00 +02:00
13
17
  default_executable: aaf_install
14
18
  dependencies:
15
19
  - !ruby/object:Gem::Dependency
16
20
  name: jk-ferret
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
21
+ prerelease: false
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ - 11
30
+ - 8
23
31
  version: 0.11.8
24
- version:
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: rails
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ segments:
43
+ - 3
44
+ - 0
45
+ version: "3.0"
46
+ type: :runtime
47
+ version_requirements: *id002
25
48
  description: Rails plugin that adds powerful full text search capabilities to ActiveRecord models.
26
49
  email: jk@jkraemer.net
27
50
  executables:
@@ -32,6 +55,8 @@ extra_rdoc_files:
32
55
  - LICENSE
33
56
  - README
34
57
  files:
58
+ - README
59
+ - LICENSE
35
60
  - bin/aaf_install
36
61
  - config/ferret_server.yml
37
62
  - doc/README.win32
@@ -161,38 +186,32 @@ files:
161
186
  - doc/demo/vendor/plugins/will_paginate/test/pagination_test.rb
162
187
  - doc/monit-example
163
188
  - recipes/aaf_recipes.rb
164
- - script/ferret_daemon
165
189
  - script/ferret_server
166
- - script/ferret_service
167
190
  - tasks/ferret.rake
168
- - lib/act_methods.rb
191
+ - lib/acts_as_ferret/act_methods.rb
192
+ - lib/acts_as_ferret/blank_slate.rb
193
+ - lib/acts_as_ferret/bulk_indexer.rb
194
+ - lib/acts_as_ferret/class_methods.rb
195
+ - lib/acts_as_ferret/ferret_extensions.rb
196
+ - lib/acts_as_ferret/ferret_find_methods.rb
197
+ - lib/acts_as_ferret/ferret_result.rb
198
+ - lib/acts_as_ferret/index.rb
199
+ - lib/acts_as_ferret/instance_methods.rb
200
+ - lib/acts_as_ferret/local_index.rb
201
+ - lib/acts_as_ferret/more_like_this.rb
202
+ - lib/acts_as_ferret/multi_index.rb
203
+ - lib/acts_as_ferret/railtie.rb
204
+ - lib/acts_as_ferret/rdig_adapter.rb
205
+ - lib/acts_as_ferret/remote_functions.rb
206
+ - lib/acts_as_ferret/remote_index.rb
207
+ - lib/acts_as_ferret/remote_multi_index.rb
208
+ - lib/acts_as_ferret/search_results.rb
209
+ - lib/acts_as_ferret/server/config.rb
210
+ - lib/acts_as_ferret/server/server.rb
211
+ - lib/acts_as_ferret/server/unix_daemon.rb
212
+ - lib/acts_as_ferret/version.rb
213
+ - lib/acts_as_ferret/without_ar.rb
169
214
  - lib/acts_as_ferret.rb
170
- - lib/ar_mysql_auto_reconnect_patch.rb
171
- - lib/blank_slate.rb
172
- - lib/bulk_indexer.rb
173
- - lib/class_methods.rb
174
- - lib/ferret_extensions.rb
175
- - lib/ferret_find_methods.rb
176
- - lib/ferret_result.rb
177
- - lib/ferret_server.rb
178
- - lib/index.rb
179
- - lib/instance_methods.rb
180
- - lib/local_index.rb
181
- - lib/more_like_this.rb
182
- - lib/multi_index.rb
183
- - lib/rdig_adapter.rb
184
- - lib/remote_functions.rb
185
- - lib/remote_index.rb
186
- - lib/remote_multi_index.rb
187
- - lib/search_results.rb
188
- - lib/server_manager.rb
189
- - lib/unix_daemon.rb
190
- - lib/without_ar.rb
191
- - acts_as_ferret.gemspec
192
- - init.rb
193
- - install.rb
194
- - README
195
- - LICENSE
196
215
  has_rdoc: true
197
216
  homepage: http://github.com/jkraemer/acts_as_ferret
198
217
  licenses: []
@@ -200,24 +219,34 @@ licenses: []
200
219
  post_install_message:
201
220
  rdoc_options:
202
221
  - --charset=UTF-8
222
+ - --title
223
+ - ActsAsFeret - Ferret powered full text search for Rails
224
+ - --main
225
+ - README
203
226
  require_paths:
204
227
  - lib
205
228
  required_ruby_version: !ruby/object:Gem::Requirement
229
+ none: false
206
230
  requirements:
207
231
  - - ">="
208
232
  - !ruby/object:Gem::Version
209
- version: 1.8.6
210
- version:
233
+ segments:
234
+ - 1
235
+ - 8
236
+ - 7
237
+ version: 1.8.7
211
238
  required_rubygems_version: !ruby/object:Gem::Requirement
239
+ none: false
212
240
  requirements:
213
241
  - - ">="
214
242
  - !ruby/object:Gem::Version
243
+ segments:
244
+ - 0
215
245
  version: "0"
216
- version:
217
246
  requirements: []
218
247
 
219
248
  rubyforge_project: acts_as_ferret
220
- rubygems_version: 1.3.5
249
+ rubygems_version: 1.3.7
221
250
  signing_key:
222
251
  specification_version: 3
223
252
  summary: acts_as_ferret - Ferret based full text search for any ActiveRecord model
@@ -1,59 +0,0 @@
1
- Gem::Specification.new do |s|
2
-
3
- s.name = 'acts_as_ferret'
4
- s.version = '0.4.8.2'
5
- s.authors = ['Jens Kraemer']
6
- s.summary = 'acts_as_ferret - Ferret based full text search for any ActiveRecord model'
7
- s.description = 'Rails plugin that adds powerful full text search capabilities to ActiveRecord models.'
8
- s.email = 'jk@jkraemer.net'
9
- s.homepage = 'http://github.com/jkraemer/acts_as_ferret'
10
- s.rubyforge_project = 'acts_as_ferret'
11
-
12
- s.bindir = 'bin'
13
- s.executables = ['aaf_install']
14
- s.default_executable = 'aaf_install'
15
- s.require_paths = ["lib"]
16
-
17
-
18
- s.platform = Gem::Platform::RUBY
19
- s.required_ruby_version = '>=1.8.6'
20
- s.rubygems_version = '1.3.6'
21
- if s.respond_to? :specification_version then
22
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
- s.specification_version = 3
24
-
25
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
26
- s.add_runtime_dependency('jk-ferret', [">= 0.11.8"])
27
- else
28
- s.add_dependency('jk-ferret', [">= 0.11.8"])
29
- end
30
- else
31
- s.add_dependency('jk-ferret', [">= 0.11.8"])
32
- end
33
-
34
-
35
- s.has_rdoc = true
36
- s.rdoc_options = ["--charset=UTF-8"]
37
- s.extra_rdoc_files = [
38
- 'LICENSE',
39
- 'README'
40
- ]
41
- s.test_files = Dir['test/**/*rb']
42
- s.files = [
43
- 'bin/*',
44
- 'config/*',
45
- 'doc/**/*',
46
- 'recipes/*',
47
- 'script/*',
48
- 'tasks/*',
49
- 'lib/**/*rb'
50
- ].map{|p| Dir[p]}.flatten +
51
- [
52
- 'acts_as_ferret.gemspec',
53
- 'init.rb',
54
- 'install.rb',
55
- 'README',
56
- 'LICENSE',
57
- ]
58
-
59
- end
data/init.rb DELETED
@@ -1,24 +0,0 @@
1
- # Copyright (c) 2006 Kasper Weibel Nielsen-Refs, Thomas Lockney, Jens Krämer
2
- #
3
- # Permission is hereby granted, free of charge, to any person obtaining a copy
4
- # of this software and associated documentation files (the "Software"), to deal
5
- # in the Software without restriction, including without limitation the rights
6
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- # copies of the Software, and to permit persons to whom the Software is
8
- # furnished to do so, subject to the following conditions:
9
- #
10
- # The above copyright notice and this permission notice shall be included in all
11
- # copies or substantial portions of the Software.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
- # SOFTWARE.
20
-
21
- require 'acts_as_ferret'
22
-
23
- config.after_initialize { ActsAsFerret::load_config }
24
- config.to_prepare { ActsAsFerret::load_config }
data/install.rb DELETED
@@ -1,18 +0,0 @@
1
- # acts_as_ferret install script
2
- require 'fileutils'
3
-
4
- def install(file)
5
- puts "Installing: #{file}"
6
- target = File.join(File.dirname(__FILE__), '..', '..', '..', file)
7
- if File.exists?(target)
8
- puts "target #{target} already exists, skipping"
9
- else
10
- FileUtils.cp File.join(File.dirname(__FILE__), file), target
11
- end
12
- end
13
-
14
- install File.join( 'script', 'ferret_server' )
15
- install File.join( 'config', 'ferret_server.yml' )
16
-
17
- puts IO.read(File.join(File.dirname(__FILE__), 'README'))
18
-
@@ -1,41 +0,0 @@
1
- # Source: http://pastie.caboo.se/154842
2
- #
3
- # in /etc/my.cnf on the MySQL server, you can set the interactive-timeout parameter,
4
- # for example, 12 hours = 28800 sec
5
- # interactive-timeout=28800
6
-
7
- # in ActiveRecord, setting the verification_timeout to something less than
8
- # the interactive-timeout parameter; 14400 sec = 6 hours
9
- ActiveRecord::Base.verification_timeout = 14400
10
- ActiveRecord::Base.establish_connection
11
-
12
- # Below is a monkey patch for keeping ActiveRecord connections alive.
13
- # http://www.sparecycles.org/2007/7/2/saying-goodbye-to-lost-connections-in-rails
14
-
15
- module ActiveRecord
16
- module ConnectionAdapters
17
- class MysqlAdapter
18
- def execute(sql, name = nil) #:nodoc:
19
- reconnect_lost_connections = true
20
- begin
21
- log(sql, name) { @connection.query(sql) }
22
- rescue ActiveRecord::StatementInvalid => exception
23
- if reconnect_lost_connections and exception.message =~ /(Lost connection to MySQL server during query
24
- |MySQL server has gone away)/
25
- reconnect_lost_connections = false
26
- reconnect!
27
- retry
28
- elsif exception.message.split(":").first =~ /Packets out of order/
29
- raise ActiveRecord::StatementInvalid, "'Packets out of order' error was received from the database.
30
- Please update your mysql bindings (gem install mysql) and read http://dev.mysql.com/doc/mysql/en/password-hash
31
- ing.html for more information. If you're on Windows, use the Instant Rails installer to get the updated mysql
32
- bindings."
33
- else
34
- raise
35
- end
36
- end
37
- end
38
- end
39
- end
40
- end
41
-