ransack_ffcrm 0.6.0

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.
Files changed (56) hide show
  1. data/.gitignore +4 -0
  2. data/.travis.yml +9 -0
  3. data/Gemfile +40 -0
  4. data/LICENSE +20 -0
  5. data/README.md +137 -0
  6. data/Rakefile +19 -0
  7. data/lib/ransack/adapters/active_record/3.0/compat.rb +166 -0
  8. data/lib/ransack/adapters/active_record/3.0/context.rb +161 -0
  9. data/lib/ransack/adapters/active_record/3.1/context.rb +166 -0
  10. data/lib/ransack/adapters/active_record/base.rb +33 -0
  11. data/lib/ransack/adapters/active_record/context.rb +41 -0
  12. data/lib/ransack/adapters/active_record.rb +12 -0
  13. data/lib/ransack/configuration.rb +35 -0
  14. data/lib/ransack/constants.rb +23 -0
  15. data/lib/ransack/context.rb +124 -0
  16. data/lib/ransack/helpers/form_builder.rb +203 -0
  17. data/lib/ransack/helpers/form_helper.rb +75 -0
  18. data/lib/ransack/helpers.rb +2 -0
  19. data/lib/ransack/locale/en.yml +70 -0
  20. data/lib/ransack/naming.rb +53 -0
  21. data/lib/ransack/nodes/attribute.rb +49 -0
  22. data/lib/ransack/nodes/bindable.rb +30 -0
  23. data/lib/ransack/nodes/condition.rb +212 -0
  24. data/lib/ransack/nodes/grouping.rb +183 -0
  25. data/lib/ransack/nodes/node.rb +34 -0
  26. data/lib/ransack/nodes/sort.rb +41 -0
  27. data/lib/ransack/nodes/value.rb +108 -0
  28. data/lib/ransack/nodes.rb +7 -0
  29. data/lib/ransack/predicate.rb +70 -0
  30. data/lib/ransack/ransacker.rb +24 -0
  31. data/lib/ransack/search.rb +123 -0
  32. data/lib/ransack/translate.rb +92 -0
  33. data/lib/ransack/version.rb +3 -0
  34. data/lib/ransack/visitor.rb +68 -0
  35. data/lib/ransack.rb +27 -0
  36. data/ransack_ffcrm.gemspec +30 -0
  37. data/spec/blueprints/articles.rb +5 -0
  38. data/spec/blueprints/comments.rb +5 -0
  39. data/spec/blueprints/notes.rb +3 -0
  40. data/spec/blueprints/people.rb +4 -0
  41. data/spec/blueprints/tags.rb +3 -0
  42. data/spec/console.rb +21 -0
  43. data/spec/helpers/ransack_helper.rb +2 -0
  44. data/spec/ransack/adapters/active_record/base_spec.rb +67 -0
  45. data/spec/ransack/adapters/active_record/context_spec.rb +45 -0
  46. data/spec/ransack/configuration_spec.rb +31 -0
  47. data/spec/ransack/helpers/form_builder_spec.rb +137 -0
  48. data/spec/ransack/helpers/form_helper_spec.rb +38 -0
  49. data/spec/ransack/nodes/condition_spec.rb +15 -0
  50. data/spec/ransack/nodes/grouping_spec.rb +13 -0
  51. data/spec/ransack/predicate_spec.rb +55 -0
  52. data/spec/ransack/search_spec.rb +225 -0
  53. data/spec/spec_helper.rb +47 -0
  54. data/spec/support/en.yml +5 -0
  55. data/spec/support/schema.rb +111 -0
  56. metadata +229 -0
@@ -0,0 +1,111 @@
1
+ require 'active_record'
2
+
3
+ ActiveRecord::Base.establish_connection(
4
+ :adapter => 'sqlite3',
5
+ :database => ':memory:'
6
+ )
7
+
8
+ class Person < ActiveRecord::Base
9
+ belongs_to :parent, :class_name => 'Person', :foreign_key => :parent_id
10
+ has_many :children, :class_name => 'Person', :foreign_key => :parent_id
11
+ has_many :articles
12
+ has_many :comments
13
+ has_many :authored_article_comments, :through => :articles,
14
+ :source => :comments, :foreign_key => :person_id
15
+ has_many :notes, :as => :notable
16
+
17
+ ransacker :reversed_name, :formatter => proc {|v| v.reverse} do |parent|
18
+ parent.table[:name]
19
+ end
20
+
21
+ ransacker :doubled_name do |parent|
22
+ Arel::Nodes::InfixOperation.new('||', parent.table[:name], parent.table[:name])
23
+ end
24
+ end
25
+
26
+ class Article < ActiveRecord::Base
27
+ belongs_to :person
28
+ has_many :comments
29
+ has_and_belongs_to_many :tags
30
+ has_many :notes, :as => :notable
31
+ end
32
+
33
+ class Comment < ActiveRecord::Base
34
+ belongs_to :article
35
+ belongs_to :person
36
+ end
37
+
38
+ class Tag < ActiveRecord::Base
39
+ has_and_belongs_to_many :articles
40
+ end
41
+
42
+ class Note < ActiveRecord::Base
43
+ belongs_to :notable, :polymorphic => true
44
+ end
45
+
46
+ module Schema
47
+ def self.create
48
+ ActiveRecord::Base.silence do
49
+ ActiveRecord::Migration.verbose = false
50
+
51
+ ActiveRecord::Schema.define do
52
+ create_table :people, :force => true do |t|
53
+ t.integer :parent_id
54
+ t.string :name
55
+ t.integer :salary
56
+ t.boolean :awesome, :default => false
57
+ t.timestamps
58
+ end
59
+
60
+ create_table :articles, :force => true do |t|
61
+ t.integer :person_id
62
+ t.string :title
63
+ t.text :body
64
+ end
65
+
66
+ create_table :comments, :force => true do |t|
67
+ t.integer :article_id
68
+ t.integer :person_id
69
+ t.text :body
70
+ end
71
+
72
+ create_table :tags, :force => true do |t|
73
+ t.string :name
74
+ end
75
+
76
+ create_table :articles_tags, :force => true, :id => false do |t|
77
+ t.integer :article_id
78
+ t.integer :tag_id
79
+ end
80
+
81
+ create_table :notes, :force => true do |t|
82
+ t.integer :notable_id
83
+ t.string :notable_type
84
+ t.string :note
85
+ end
86
+
87
+ end
88
+ end
89
+
90
+ 10.times do
91
+ person = Person.make
92
+ Note.make(:notable => person)
93
+ 3.times do
94
+ article = Article.make(:person => person)
95
+ 3.times do
96
+ article.tags = [Tag.make, Tag.make, Tag.make]
97
+ end
98
+ Note.make(:notable => article)
99
+ 10.times do
100
+ Comment.make(:article => article)
101
+ end
102
+ end
103
+ 2.times do
104
+ Comment.make(:person => person)
105
+ end
106
+ end
107
+
108
+ Comment.make(:body => 'First post!', :article => Article.make(:title => 'Hello, world!'))
109
+
110
+ end
111
+ end
metadata ADDED
@@ -0,0 +1,229 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ransack_ffcrm
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Ernie Miller
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-05-08 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activerecord
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '3.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '3.0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: actionpack
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '3.0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '3.0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: polyamorous
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 0.5.0
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.5.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: chronic
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 0.6.7
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 0.6.7
78
+ - !ruby/object:Gem::Dependency
79
+ name: rspec
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 2.8.0
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 2.8.0
94
+ - !ruby/object:Gem::Dependency
95
+ name: machinist
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 1.0.6
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 1.0.6
110
+ - !ruby/object:Gem::Dependency
111
+ name: faker
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 0.9.5
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 0.9.5
126
+ - !ruby/object:Gem::Dependency
127
+ name: sqlite3
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: 1.3.3
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: 1.3.3
142
+ description: Ransack is the successor to the MetaSearch gem. It improves and expands
143
+ upon MetaSearch's functionality, but does not have a 100%-compatible API.
144
+ email:
145
+ - ernie@metautonomo.us
146
+ executables: []
147
+ extensions: []
148
+ extra_rdoc_files: []
149
+ files:
150
+ - .gitignore
151
+ - .travis.yml
152
+ - Gemfile
153
+ - LICENSE
154
+ - README.md
155
+ - Rakefile
156
+ - lib/ransack.rb
157
+ - lib/ransack/adapters/active_record.rb
158
+ - lib/ransack/adapters/active_record/3.0/compat.rb
159
+ - lib/ransack/adapters/active_record/3.0/context.rb
160
+ - lib/ransack/adapters/active_record/3.1/context.rb
161
+ - lib/ransack/adapters/active_record/base.rb
162
+ - lib/ransack/adapters/active_record/context.rb
163
+ - lib/ransack/configuration.rb
164
+ - lib/ransack/constants.rb
165
+ - lib/ransack/context.rb
166
+ - lib/ransack/helpers.rb
167
+ - lib/ransack/helpers/form_builder.rb
168
+ - lib/ransack/helpers/form_helper.rb
169
+ - lib/ransack/locale/en.yml
170
+ - lib/ransack/naming.rb
171
+ - lib/ransack/nodes.rb
172
+ - lib/ransack/nodes/attribute.rb
173
+ - lib/ransack/nodes/bindable.rb
174
+ - lib/ransack/nodes/condition.rb
175
+ - lib/ransack/nodes/grouping.rb
176
+ - lib/ransack/nodes/node.rb
177
+ - lib/ransack/nodes/sort.rb
178
+ - lib/ransack/nodes/value.rb
179
+ - lib/ransack/predicate.rb
180
+ - lib/ransack/ransacker.rb
181
+ - lib/ransack/search.rb
182
+ - lib/ransack/translate.rb
183
+ - lib/ransack/version.rb
184
+ - lib/ransack/visitor.rb
185
+ - ransack_ffcrm.gemspec
186
+ - spec/blueprints/articles.rb
187
+ - spec/blueprints/comments.rb
188
+ - spec/blueprints/notes.rb
189
+ - spec/blueprints/people.rb
190
+ - spec/blueprints/tags.rb
191
+ - spec/console.rb
192
+ - spec/helpers/ransack_helper.rb
193
+ - spec/ransack/adapters/active_record/base_spec.rb
194
+ - spec/ransack/adapters/active_record/context_spec.rb
195
+ - spec/ransack/configuration_spec.rb
196
+ - spec/ransack/helpers/form_builder_spec.rb
197
+ - spec/ransack/helpers/form_helper_spec.rb
198
+ - spec/ransack/nodes/condition_spec.rb
199
+ - spec/ransack/nodes/grouping_spec.rb
200
+ - spec/ransack/predicate_spec.rb
201
+ - spec/ransack/search_spec.rb
202
+ - spec/spec_helper.rb
203
+ - spec/support/en.yml
204
+ - spec/support/schema.rb
205
+ homepage: http://metautonomo.us/projects/ransack
206
+ licenses: []
207
+ post_install_message:
208
+ rdoc_options: []
209
+ require_paths:
210
+ - lib
211
+ required_ruby_version: !ruby/object:Gem::Requirement
212
+ none: false
213
+ requirements:
214
+ - - ! '>='
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ required_rubygems_version: !ruby/object:Gem::Requirement
218
+ none: false
219
+ requirements:
220
+ - - ! '>='
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ requirements: []
224
+ rubyforge_project: ransack
225
+ rubygems_version: 1.8.24
226
+ signing_key:
227
+ specification_version: 3
228
+ summary: Object-based searching for ActiveRecord (currently).
229
+ test_files: []