meta_search 0.5.4 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitmodules +1 -1
- data/CHANGELOG +3 -2
- data/Gemfile +4 -2
- data/README.rdoc +7 -2
- data/Rakefile +4 -4
- data/VERSION +1 -1
- data/lib/meta_search/builder.rb +21 -1
- data/lib/meta_search/helpers/form_builder.rb +0 -1
- data/lib/meta_search/model_compatibility.rb +14 -10
- data/lib/meta_search/searches/active_record.rb +20 -22
- data/lib/meta_search.rb +8 -3
- data/meta_search.gemspec +16 -16
- data/test/fixtures/data_type.rb +1 -1
- data/test/test_search.rb +57 -1
- metadata +18 -24
data/.gitmodules
CHANGED
data/CHANGELOG
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
Changes since 0.5.3 (2010-07-26):
|
2
|
-
*Add is_true/is_false for boolean columns
|
3
|
-
* Add is_present and is_blank for
|
2
|
+
* Add is_true/is_false for boolean columns
|
3
|
+
* Add is_present and is_blank for string/numeric columns
|
4
|
+
* Add is_null and is_not_null for all columns
|
4
5
|
* Fix behavior of equals when used with boolean columns.
|
5
6
|
|
6
7
|
Changes since 0.5.2 (2010-07-22):
|
data/Gemfile
CHANGED
data/README.rdoc
CHANGED
@@ -231,9 +231,14 @@ Excluded attributes on a model will be honored across associations, so if an Art
|
|
231
231
|
Then your call to <tt>Article.search</tt> will allow <tt>:comments_body_contains</tt>
|
232
232
|
but not <tt>:comments_user_id_equals</tt> to be passed.
|
233
233
|
|
234
|
-
==
|
234
|
+
== Contributions
|
235
235
|
|
236
|
-
|
236
|
+
There are several ways you can help MetaSearch continue to improve.
|
237
|
+
|
238
|
+
* Use MetaSearch in your real-world projects and {submit bug reports or feature suggestions}[http://metautonomous.lighthouseapp.com/projects/53012-metasearch/].
|
239
|
+
* Better yet, if you’re so inclined, fix the issue yourself and submit a patch! Or you can {fork the project on GitHub}[http://github.com/ernie/meta_search] and send me a pull request (please include tests!)
|
240
|
+
* If you like MetaSearch, spread the word. More users == more eyes on code == more bugs getting found == more bugs getting fixed (hopefully!)
|
241
|
+
* Lastly, if MetaSearch has saved you hours of development time on your latest Rails gig, and you’re feeling magnanimous, please consider {making a donation}[http://pledgie.com/campaigns/9647] to the project. I have spent hours of my personal time coding and supporting MetaSearch, and your donation would go a great way toward justifying that time spent to my loving wife. :)
|
237
242
|
|
238
243
|
== Copyright
|
239
244
|
|
data/Rakefile
CHANGED
@@ -15,10 +15,10 @@ begin
|
|
15
15
|
gem.homepage = "http://metautonomo.us/projects/metasearch/"
|
16
16
|
gem.authors = ["Ernie Miller"]
|
17
17
|
gem.add_development_dependency "shoulda"
|
18
|
-
gem.add_dependency "activerecord", "
|
19
|
-
gem.add_dependency "activesupport", "
|
20
|
-
gem.add_dependency "actionpack", "
|
21
|
-
gem.add_dependency "arel", "
|
18
|
+
gem.add_dependency "activerecord", "~> 3.0.0.rc2"
|
19
|
+
gem.add_dependency "activesupport", "~> 3.0.0.rc2"
|
20
|
+
gem.add_dependency "actionpack", "~> 3.0.0.rc2"
|
21
|
+
gem.add_dependency "arel", "~> 1.0.0.rc1"
|
22
22
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
23
23
|
end
|
24
24
|
Jeweler::GemcutterTasks.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.9.1
|
data/lib/meta_search/builder.rb
CHANGED
@@ -28,7 +28,7 @@ module MetaSearch
|
|
28
28
|
include ModelCompatibility
|
29
29
|
include Utility
|
30
30
|
|
31
|
-
attr_reader :base, :search_attributes, :join_dependency
|
31
|
+
attr_reader :base, :search_attributes, :join_dependency, :errors
|
32
32
|
delegate *RELATION_METHODS + [:to => :relation]
|
33
33
|
|
34
34
|
# Initialize a new Builder. Requires a base model to wrap, and supports a couple of options
|
@@ -39,6 +39,7 @@ module MetaSearch
|
|
39
39
|
@opts = opts
|
40
40
|
@join_dependency = build_join_dependency
|
41
41
|
@search_attributes = {}
|
42
|
+
@errors = ActiveModel::Errors.new(self)
|
42
43
|
end
|
43
44
|
|
44
45
|
def relation
|
@@ -112,6 +113,25 @@ module MetaSearch
|
|
112
113
|
self
|
113
114
|
end
|
114
115
|
|
116
|
+
def respond_to?(method_name, include_private = false)
|
117
|
+
return true if super # Hopefully we've already defined the method.
|
118
|
+
|
119
|
+
# Curses! Looks like we'll need to do this the hard way.
|
120
|
+
method_name = method_name.to_s
|
121
|
+
if RELATION_METHODS.map(&:to_s).include?(method_name)
|
122
|
+
true
|
123
|
+
elsif method_name.match(/^meta_sort=?$/)
|
124
|
+
true
|
125
|
+
elsif match = method_name.match(/^(.*)\(([0-9]+).*\)$/)
|
126
|
+
method_name, index = match.captures
|
127
|
+
respond_to?(method_name)
|
128
|
+
elsif matches_named_method(method_name) || matches_attribute_method(method_name)
|
129
|
+
true
|
130
|
+
else
|
131
|
+
false
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
115
135
|
private
|
116
136
|
|
117
137
|
def method_missing(method_id, *args, &block)
|
@@ -5,7 +5,6 @@ module MetaSearch
|
|
5
5
|
|
6
6
|
module Helpers
|
7
7
|
module FormBuilder
|
8
|
-
extend ActiveSupport::Concern
|
9
8
|
|
10
9
|
# Like other form_for field methods (text_field, hidden_field, password_field) etc,
|
11
10
|
# but takes a list of hashes between the +method+ parameter and the trailing option hash,
|
@@ -1,23 +1,27 @@
|
|
1
1
|
module MetaSearch
|
2
2
|
# Just a little module to mix in so that ActionPack doesn't complain.
|
3
3
|
module ModelCompatibility
|
4
|
-
def self.included(base)
|
4
|
+
def self.included(base)
|
5
5
|
base.extend ClassMethods
|
6
6
|
end
|
7
|
-
|
7
|
+
|
8
8
|
# Force default "Update search" text
|
9
9
|
def persisted?
|
10
10
|
true
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
def to_key
|
14
14
|
nil
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
def to_param
|
18
18
|
nil
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
|
+
def to_model
|
22
|
+
self
|
23
|
+
end
|
24
|
+
|
21
25
|
class Name < String
|
22
26
|
attr_reader :singular, :plural, :element, :collection, :partial_path, :human
|
23
27
|
alias_method :cache_key, :collection
|
@@ -32,11 +36,11 @@ module MetaSearch
|
|
32
36
|
@partial_path = "#{@collection}/#{@element}".freeze
|
33
37
|
end
|
34
38
|
end
|
35
|
-
|
36
|
-
module ClassMethods
|
37
|
-
def model_name
|
39
|
+
|
40
|
+
module ClassMethods
|
41
|
+
def model_name
|
38
42
|
@_model_name ||= Name.new
|
39
|
-
end
|
40
|
-
end
|
43
|
+
end
|
44
|
+
end
|
41
45
|
end
|
42
46
|
end
|
@@ -4,23 +4,19 @@ require 'meta_search/builder'
|
|
4
4
|
|
5
5
|
module MetaSearch::Searches
|
6
6
|
module ActiveRecord
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
self.
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
alias_method :metasearch_include_attr, :attr_searchable
|
21
|
-
alias_method :metasearch_exclude_attr, :attr_unsearchable
|
22
|
-
alias_method :metasearch_include_assoc, :assoc_searchable
|
23
|
-
alias_method :metasearch_exclude_assoc, :assoc_unsearchable
|
7
|
+
|
8
|
+
def self.included(base)
|
9
|
+
base.extend ClassMethods
|
10
|
+
|
11
|
+
base.class_eval do
|
12
|
+
class_attribute :_metasearch_include_attributes, :_metasearch_exclude_attributes
|
13
|
+
class_attribute :_metasearch_include_associations, :_metasearch_exclude_associations
|
14
|
+
class_attribute :_metasearch_methods
|
15
|
+
self._metasearch_include_attributes =
|
16
|
+
self._metasearch_exclude_attributes =
|
17
|
+
self._metasearch_exclude_associations =
|
18
|
+
self._metasearch_include_associations = []
|
19
|
+
self._metasearch_methods = {}
|
24
20
|
end
|
25
21
|
end
|
26
22
|
|
@@ -29,15 +25,17 @@ module MetaSearch::Searches
|
|
29
25
|
# MetaSearch::Builder, which behaves pretty much like an ActiveRecord::Relation,
|
30
26
|
# in that it doesn't actually query the database until you do something that
|
31
27
|
# requires it to do so.
|
32
|
-
def
|
28
|
+
def metasearch(opts = {})
|
33
29
|
opts ||= {} # to catch nil params
|
34
30
|
search_options = opts.delete(:search_options) || {}
|
35
31
|
builder = MetaSearch::Builder.new(self, search_options)
|
36
32
|
builder.build(opts)
|
37
33
|
end
|
38
34
|
|
35
|
+
alias_method :search, :metasearch unless respond_to?(:search)
|
36
|
+
|
39
37
|
private
|
40
|
-
|
38
|
+
|
41
39
|
# Excludes model attributes from searchability. This means that searches can't be created against
|
42
40
|
# these columns, whether the search is based on this model, or the model's attributes are being
|
43
41
|
# searched by association from another model. If a Comment <tt>belongs_to :article</tt> but declares
|
@@ -62,7 +60,7 @@ module MetaSearch::Searches
|
|
62
60
|
self._metasearch_include_attributes = (self._metasearch_include_attributes + [attr]).uniq
|
63
61
|
end
|
64
62
|
end
|
65
|
-
|
63
|
+
|
66
64
|
# Excludes model associations from searchability. This mean that searches can't be created against
|
67
65
|
# these associations. An article that <tt>has_many :comments</tt> but excludes comments from
|
68
66
|
# searching by declaring <tt>assoc_unsearchable :comments</tt> won't make any of the
|
@@ -74,7 +72,7 @@ module MetaSearch::Searches
|
|
74
72
|
self._metasearch_exclude_associations = (self._metasearch_exclude_associations + [assoc]).uniq
|
75
73
|
end
|
76
74
|
end
|
77
|
-
|
75
|
+
|
78
76
|
# As with <tt>attr_searchable</tt> this is the whitelist version of
|
79
77
|
# <tt>assoc_unsearchable</tt>
|
80
78
|
def assoc_searchable(*args)
|
@@ -84,7 +82,7 @@ module MetaSearch::Searches
|
|
84
82
|
self._metasearch_include_associations = (self._metasearch_include_associations + [assoc]).uniq
|
85
83
|
end
|
86
84
|
end
|
87
|
-
|
85
|
+
|
88
86
|
def search_methods(*args)
|
89
87
|
opts = args.last.is_a?(Hash) ? args.pop : {}
|
90
88
|
args.flatten.map(&:to_s).each do |arg|
|
data/lib/meta_search.rb
CHANGED
@@ -26,14 +26,19 @@ module MetaSearch
|
|
26
26
|
['not_in', 'ni', 'not_in', {:types => ALL_TYPES, :predicate => :not_in}],
|
27
27
|
['is_true', {:types => BOOLEANS, :skip_compounds => true}],
|
28
28
|
['is_false', {:types => BOOLEANS, :skip_compounds => true, :formatter => Proc.new {|param| !param}}],
|
29
|
-
['is_present', {:types => (
|
30
|
-
['is_blank', {:types => (
|
29
|
+
['is_present', {:types => (NUMBERS + STRINGS), :predicate => :not_eq_all, :splat_param => true, :skip_compounds => true, :cast => :boolean, :formatter => Proc.new {|param| [nil, '']}}],
|
30
|
+
['is_blank', {:types => (NUMBERS + STRINGS), :predicate => :eq_any, :splat_param => true, :skip_compounds => true, :cast => :boolean, :formatter => Proc.new {|param| [nil, '']}}],
|
31
|
+
['is_null', {:types => ALL_TYPES, :skip_compounds => true, :cast => :boolean, :formatter => Proc.new {|param| nil}}],
|
32
|
+
['is_not_null', {:types => ALL_TYPES, :predicate => :not_eq, :skip_compounds => true, :cast => :boolean, :formatter => Proc.new {|param| nil}}]
|
31
33
|
]
|
32
34
|
|
33
|
-
RELATION_METHODS = [:joins, :includes, :
|
35
|
+
RELATION_METHODS = [:joins, :includes, :select, :order, :where, :having,
|
36
|
+
:to_a, :all, :count, :length, :size, :to_sql, :debug_sql, :paginate,
|
37
|
+
:find_each, :first, :last, :each, :arel]
|
34
38
|
end
|
35
39
|
|
36
40
|
require 'active_record'
|
41
|
+
require 'active_support'
|
37
42
|
require 'action_view'
|
38
43
|
require 'action_controller'
|
39
44
|
require 'meta_search/searches/active_record'
|
data/meta_search.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{meta_search}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.9.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Ernie Miller"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-08-24}
|
13
13
|
s.description = %q{
|
14
14
|
Allows simple search forms to be created against an AR3 model
|
15
15
|
and its associations, has useful view helpers for sort links
|
@@ -62,7 +62,7 @@ Gem::Specification.new do |s|
|
|
62
62
|
s.homepage = %q{http://metautonomo.us/projects/metasearch/}
|
63
63
|
s.rdoc_options = ["--charset=UTF-8"]
|
64
64
|
s.require_paths = ["lib"]
|
65
|
-
s.rubygems_version = %q{1.3.
|
65
|
+
s.rubygems_version = %q{1.3.6}
|
66
66
|
s.summary = %q{ActiveRecord 3 object-based searching for your form_for enjoyment.}
|
67
67
|
s.test_files = [
|
68
68
|
"test/fixtures/company.rb",
|
@@ -80,25 +80,25 @@ Gem::Specification.new do |s|
|
|
80
80
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
81
81
|
s.specification_version = 3
|
82
82
|
|
83
|
-
if Gem::Version.new(Gem::
|
83
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
84
84
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
85
|
-
s.add_runtime_dependency(%q<activerecord>, ["
|
86
|
-
s.add_runtime_dependency(%q<activesupport>, ["
|
87
|
-
s.add_runtime_dependency(%q<actionpack>, ["
|
88
|
-
s.add_runtime_dependency(%q<arel>, ["
|
85
|
+
s.add_runtime_dependency(%q<activerecord>, ["~> 3.0.0.rc2"])
|
86
|
+
s.add_runtime_dependency(%q<activesupport>, ["~> 3.0.0.rc2"])
|
87
|
+
s.add_runtime_dependency(%q<actionpack>, ["~> 3.0.0.rc2"])
|
88
|
+
s.add_runtime_dependency(%q<arel>, ["~> 1.0.0.rc1"])
|
89
89
|
else
|
90
90
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
91
|
-
s.add_dependency(%q<activerecord>, ["
|
92
|
-
s.add_dependency(%q<activesupport>, ["
|
93
|
-
s.add_dependency(%q<actionpack>, ["
|
94
|
-
s.add_dependency(%q<arel>, ["
|
91
|
+
s.add_dependency(%q<activerecord>, ["~> 3.0.0.rc2"])
|
92
|
+
s.add_dependency(%q<activesupport>, ["~> 3.0.0.rc2"])
|
93
|
+
s.add_dependency(%q<actionpack>, ["~> 3.0.0.rc2"])
|
94
|
+
s.add_dependency(%q<arel>, ["~> 1.0.0.rc1"])
|
95
95
|
end
|
96
96
|
else
|
97
97
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
98
|
-
s.add_dependency(%q<activerecord>, ["
|
99
|
-
s.add_dependency(%q<activesupport>, ["
|
100
|
-
s.add_dependency(%q<actionpack>, ["
|
101
|
-
s.add_dependency(%q<arel>, ["
|
98
|
+
s.add_dependency(%q<activerecord>, ["~> 3.0.0.rc2"])
|
99
|
+
s.add_dependency(%q<activesupport>, ["~> 3.0.0.rc2"])
|
100
|
+
s.add_dependency(%q<actionpack>, ["~> 3.0.0.rc2"])
|
101
|
+
s.add_dependency(%q<arel>, ["~> 1.0.0.rc1"])
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
data/test/fixtures/data_type.rb
CHANGED
data/test/test_search.rb
CHANGED
@@ -18,14 +18,30 @@ class TestSearch < Test::Unit::TestCase
|
|
18
18
|
assert @s.get_association(:developers)
|
19
19
|
end
|
20
20
|
|
21
|
+
should "respond_to? a search against a developer attribute" do
|
22
|
+
assert_respond_to @s, :developers_name_eq
|
23
|
+
end
|
24
|
+
|
21
25
|
should "have a column named name" do
|
22
26
|
assert @s.get_column(:name)
|
23
27
|
end
|
24
28
|
|
29
|
+
should "respond_to? a search against name" do
|
30
|
+
assert_respond_to @s, :name_eq
|
31
|
+
end
|
32
|
+
|
33
|
+
should "respond_to? a search against backwards_name" do
|
34
|
+
assert_respond_to @s, :backwards_name
|
35
|
+
end
|
36
|
+
|
25
37
|
should "exclude the column named updated_at" do
|
26
38
|
assert_nil @s.get_column(:updated_at)
|
27
39
|
end
|
28
40
|
|
41
|
+
should "not respond_to? updated_at" do
|
42
|
+
assert !@s.respond_to?(:updated_at), "The search responded to :updated_at"
|
43
|
+
end
|
44
|
+
|
29
45
|
should "raise an error if we try to search on updated_at" do
|
30
46
|
assert_raise NoMethodError do
|
31
47
|
@s.updated_at_eq = [2009, 1, 1]
|
@@ -36,6 +52,10 @@ class TestSearch < Test::Unit::TestCase
|
|
36
52
|
assert_nil @s.get_association(:notes)
|
37
53
|
end
|
38
54
|
|
55
|
+
should "not respond_to? notes_note_eq" do
|
56
|
+
assert !@s.respond_to?(:notes_note_eq), "The search responded to :notes_note_eq"
|
57
|
+
end
|
58
|
+
|
39
59
|
should "raise an error if we try to search on notes" do
|
40
60
|
assert_raise NoMethodError do
|
41
61
|
@s.notes_note_eq = 'Blah'
|
@@ -46,6 +66,14 @@ class TestSearch < Test::Unit::TestCase
|
|
46
66
|
assert_nil @s.get_attribute(:data_types_str)
|
47
67
|
end
|
48
68
|
|
69
|
+
should "not respond_to? data_types_str_eq" do
|
70
|
+
assert !@s.respond_to?(:data_types_str_eq), "The search responded to :data_types_str_eq"
|
71
|
+
end
|
72
|
+
|
73
|
+
should "respond_to? data_types_bln_eq" do
|
74
|
+
assert_respond_to @s, :data_types_bln_eq
|
75
|
+
end
|
76
|
+
|
49
77
|
should "raise an error if we try to search data_types.str" do
|
50
78
|
assert_raise NoMethodError do
|
51
79
|
@s.data_types_str_eq = 'Blah'
|
@@ -665,7 +693,7 @@ class TestSearch < Test::Unit::TestCase
|
|
665
693
|
@s.name_is_blank = true
|
666
694
|
end
|
667
695
|
|
668
|
-
should "return
|
696
|
+
should "return 2 results" do
|
669
697
|
assert_equal 2, @s.all.size
|
670
698
|
end
|
671
699
|
|
@@ -673,6 +701,34 @@ class TestSearch < Test::Unit::TestCase
|
|
673
701
|
assert_equal 0, @s.all.select {|r| r.name.present?}.size
|
674
702
|
end
|
675
703
|
end
|
704
|
+
|
705
|
+
context "where name is null" do
|
706
|
+
setup do
|
707
|
+
@s.name_is_null = true
|
708
|
+
end
|
709
|
+
|
710
|
+
should "return 1 result" do
|
711
|
+
assert_equal 1, @s.all.size
|
712
|
+
end
|
713
|
+
|
714
|
+
should "contain no results with a non-null name column" do
|
715
|
+
assert_equal 0, @s.all.select {|r| r.name != nil}.size
|
716
|
+
end
|
717
|
+
end
|
718
|
+
|
719
|
+
context "where name is not null" do
|
720
|
+
setup do
|
721
|
+
@s.name_is_not_null = true
|
722
|
+
end
|
723
|
+
|
724
|
+
should "return 6 results" do
|
725
|
+
assert_equal 6, @s.all.size
|
726
|
+
end
|
727
|
+
|
728
|
+
should "contain no results with a null name column" do
|
729
|
+
assert_equal 0, @s.all.select {|r| r.name = nil}.size
|
730
|
+
end
|
731
|
+
end
|
676
732
|
end
|
677
733
|
end
|
678
734
|
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 9
|
8
|
+
- 1
|
9
|
+
version: 0.9.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Ernie Miller
|
@@ -14,14 +14,13 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-08-24 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: shoulda
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
-
none: false
|
25
24
|
requirements:
|
26
25
|
- - ">="
|
27
26
|
- !ruby/object:Gem::Version
|
@@ -34,63 +33,60 @@ dependencies:
|
|
34
33
|
name: activerecord
|
35
34
|
prerelease: false
|
36
35
|
requirement: &id002 !ruby/object:Gem::Requirement
|
37
|
-
none: false
|
38
36
|
requirements:
|
39
|
-
- -
|
37
|
+
- - ~>
|
40
38
|
- !ruby/object:Gem::Version
|
41
39
|
segments:
|
42
40
|
- 3
|
43
41
|
- 0
|
44
42
|
- 0
|
45
|
-
-
|
46
|
-
version: 3.0.0.
|
43
|
+
- rc2
|
44
|
+
version: 3.0.0.rc2
|
47
45
|
type: :runtime
|
48
46
|
version_requirements: *id002
|
49
47
|
- !ruby/object:Gem::Dependency
|
50
48
|
name: activesupport
|
51
49
|
prerelease: false
|
52
50
|
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
-
none: false
|
54
51
|
requirements:
|
55
|
-
- -
|
52
|
+
- - ~>
|
56
53
|
- !ruby/object:Gem::Version
|
57
54
|
segments:
|
58
55
|
- 3
|
59
56
|
- 0
|
60
57
|
- 0
|
61
|
-
-
|
62
|
-
version: 3.0.0.
|
58
|
+
- rc2
|
59
|
+
version: 3.0.0.rc2
|
63
60
|
type: :runtime
|
64
61
|
version_requirements: *id003
|
65
62
|
- !ruby/object:Gem::Dependency
|
66
63
|
name: actionpack
|
67
64
|
prerelease: false
|
68
65
|
requirement: &id004 !ruby/object:Gem::Requirement
|
69
|
-
none: false
|
70
66
|
requirements:
|
71
|
-
- -
|
67
|
+
- - ~>
|
72
68
|
- !ruby/object:Gem::Version
|
73
69
|
segments:
|
74
70
|
- 3
|
75
71
|
- 0
|
76
72
|
- 0
|
77
|
-
-
|
78
|
-
version: 3.0.0.
|
73
|
+
- rc2
|
74
|
+
version: 3.0.0.rc2
|
79
75
|
type: :runtime
|
80
76
|
version_requirements: *id004
|
81
77
|
- !ruby/object:Gem::Dependency
|
82
78
|
name: arel
|
83
79
|
prerelease: false
|
84
80
|
requirement: &id005 !ruby/object:Gem::Requirement
|
85
|
-
none: false
|
86
81
|
requirements:
|
87
|
-
- -
|
82
|
+
- - ~>
|
88
83
|
- !ruby/object:Gem::Version
|
89
84
|
segments:
|
85
|
+
- 1
|
90
86
|
- 0
|
91
|
-
- 4
|
92
87
|
- 0
|
93
|
-
|
88
|
+
- rc1
|
89
|
+
version: 1.0.0.rc1
|
94
90
|
type: :runtime
|
95
91
|
version_requirements: *id005
|
96
92
|
description: "\n Allows simple search forms to be created against an AR3 model\n and its associations, has useful view helpers for sort links\n and multiparameter fields as well.\n "
|
@@ -150,7 +146,6 @@ rdoc_options:
|
|
150
146
|
require_paths:
|
151
147
|
- lib
|
152
148
|
required_ruby_version: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
149
|
requirements:
|
155
150
|
- - ">="
|
156
151
|
- !ruby/object:Gem::Version
|
@@ -158,7 +153,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
158
153
|
- 0
|
159
154
|
version: "0"
|
160
155
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
156
|
requirements:
|
163
157
|
- - ">="
|
164
158
|
- !ruby/object:Gem::Version
|
@@ -168,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
162
|
requirements: []
|
169
163
|
|
170
164
|
rubyforge_project:
|
171
|
-
rubygems_version: 1.3.
|
165
|
+
rubygems_version: 1.3.6
|
172
166
|
signing_key:
|
173
167
|
specification_version: 3
|
174
168
|
summary: ActiveRecord 3 object-based searching for your form_for enjoyment.
|