pg_search 0.0.2

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.
@@ -0,0 +1,92 @@
1
+ require "bundler/setup"
2
+ require "pg_search"
3
+
4
+ begin
5
+ ActiveRecord::Base.establish_connection(:adapter => 'postgresql',
6
+ :database => 'pg_search_test',
7
+ :min_messages => 'warning')
8
+ connection = ActiveRecord::Base.connection
9
+ connection.execute("SELECT 1")
10
+ rescue PGError => e
11
+ puts "-" * 80
12
+ puts "Unable to connect to database. Please run:"
13
+ puts
14
+ puts " createdb pg_search_test"
15
+ puts "-" * 80
16
+ raise e
17
+ end
18
+
19
+ def install_contrib_module_if_missing(name, query, expected_result)
20
+ connection = ActiveRecord::Base.connection
21
+ result = connection.select_value(query)
22
+ raise "Unexpected output for #{query}: #{result.inspect}" unless result.downcase == expected_result.downcase
23
+ rescue => e
24
+ begin
25
+ share_path = `pg_config --sharedir`.strip
26
+ ActiveRecord::Base.connection.execute File.read(File.join(share_path, 'contrib', "#{name}.sql"))
27
+ puts $!.message
28
+ rescue
29
+ puts "-" * 80
30
+ puts "Please install the #{name} contrib module"
31
+ puts "-" * 80
32
+ raise e
33
+ end
34
+ end
35
+
36
+ install_contrib_module_if_missing("pg_trgm", "SELECT 'abcdef' % 'cdef'", "t")
37
+ install_contrib_module_if_missing("unaccent", "SELECT unaccent('foo')", "foo")
38
+ install_contrib_module_if_missing("fuzzystrmatch", "SELECT dmetaphone('foo')", "f")
39
+
40
+ ActiveRecord::Base.connection.execute(File.read(File.join(File.dirname(__FILE__), '..', 'sql', 'dmetaphone.sql')))
41
+
42
+ require "with_model"
43
+
44
+ RSpec.configure do |config|
45
+ config.extend WithModel
46
+ end
47
+
48
+ if defined?(ActiveRecord::Relation)
49
+ RSpec::Matchers::OperatorMatcher.register(ActiveRecord::Relation, '=~', RSpec::Matchers::MatchArray)
50
+ end
51
+
52
+ require 'irb'
53
+
54
+ class IRB::Irb
55
+ alias initialize_orig initialize
56
+ def initialize(workspace = nil, *args)
57
+ default = IRB.conf[:DEFAULT_OBJECT]
58
+ workspace ||= IRB::WorkSpace.new default if default
59
+ initialize_orig(workspace, *args)
60
+ end
61
+ end
62
+
63
+ # Drop into an IRB session for whatever object you pass in:
64
+ #
65
+ # class Dude
66
+ # def abides
67
+ # true
68
+ # end
69
+ # end
70
+ #
71
+ # console_for(Dude.new)
72
+ #
73
+ # Then type "quit" or "exit" to get out. In a step definition, it should look like:
74
+ #
75
+ # When /^I console/ do
76
+ # console_for(self)
77
+ # end
78
+ #
79
+ # Also, I definitely stole this hack from some mailing list post somewhere. I wish I
80
+ # could remember who did it, but I can't. Sorry!
81
+ def console_for(target)
82
+ puts "== ENTERING CONSOLE MODE. ==\nType 'exit' to move on.\nContext: #{target.inspect}"
83
+
84
+ begin
85
+ oldargs = ARGV.dup
86
+ ARGV.clear
87
+ IRB.conf[:DEFAULT_OBJECT] = target
88
+ IRB.start
89
+ ensure
90
+ ARGV.replace(oldargs)
91
+ end
92
+ end
@@ -0,0 +1,4 @@
1
+ CREATE OR REPLACE FUNCTION pg_search_dmetaphone(text) RETURNS text LANGUAGE SQL IMMUTABLE STRICT AS $function$
2
+ SELECT array_to_string(ARRAY(SELECT dmetaphone(unnest(regexp_split_to_array($1, E'\\\\s+')))), ' ')
3
+ $function$;
4
+
@@ -0,0 +1 @@
1
+ DROP FUNCTION pg_search_dmetaphone(text);
metadata ADDED
@@ -0,0 +1,103 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pg_search
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 2
10
+ version: 0.0.2
11
+ platform: ruby
12
+ authors:
13
+ - Case Commons, LLC
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-01-14 00:00:00 -05:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: PgSearch builds ActiveRecord named scopes that take advantage of PostgreSQL's full text search
23
+ email:
24
+ - casecommons-dev@googlegroups.com
25
+ executables: []
26
+
27
+ extensions: []
28
+
29
+ extra_rdoc_files: []
30
+
31
+ files:
32
+ - .autotest
33
+ - .gitignore
34
+ - .rvmrc
35
+ - CHANGELOG
36
+ - Gemfile
37
+ - LICENSE
38
+ - README.rdoc
39
+ - Rakefile
40
+ - TODO
41
+ - gemfiles/Gemfile.common
42
+ - gemfiles/rails2/Gemfile
43
+ - gemfiles/rails2/Gemfile.lock
44
+ - gemfiles/rails3/Gemfile
45
+ - gemfiles/rails3/Gemfile.lock
46
+ - lib/pg_search.rb
47
+ - lib/pg_search/configuration.rb
48
+ - lib/pg_search/configuration/column.rb
49
+ - lib/pg_search/features.rb
50
+ - lib/pg_search/features/dmetaphone.rb
51
+ - lib/pg_search/features/trigram.rb
52
+ - lib/pg_search/features/tsearch.rb
53
+ - lib/pg_search/normalizer.rb
54
+ - lib/pg_search/railtie.rb
55
+ - lib/pg_search/scope.rb
56
+ - lib/pg_search/scope_options.rb
57
+ - lib/pg_search/tasks.rb
58
+ - lib/pg_search/version.rb
59
+ - pg_search.gemspec
60
+ - script/setup-contrib
61
+ - spec/associations_spec.rb
62
+ - spec/pg_search_spec.rb
63
+ - spec/spec_helper.rb
64
+ - sql/dmetaphone.sql
65
+ - sql/uninstall_dmetaphone.sql
66
+ has_rdoc: true
67
+ homepage: https://github.com/Casecommons/pg_search
68
+ licenses: []
69
+
70
+ post_install_message:
71
+ rdoc_options: []
72
+
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ hash: 3
81
+ segments:
82
+ - 0
83
+ version: "0"
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ hash: 3
90
+ segments:
91
+ - 0
92
+ version: "0"
93
+ requirements: []
94
+
95
+ rubyforge_project:
96
+ rubygems_version: 1.3.7
97
+ signing_key:
98
+ specification_version: 3
99
+ summary: PgSearch builds ActiveRecord named scopes that take advantage of PostgreSQL's full text search
100
+ test_files:
101
+ - spec/associations_spec.rb
102
+ - spec/pg_search_spec.rb
103
+ - spec/spec_helper.rb