pose 3.0.0 → 3.1.1

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 (82) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +42 -19
  3. data/Rakefile +37 -5
  4. data/lib/pose/activerecord_base_additions.rb +7 -6
  5. data/{app/models → lib}/pose/assignment.rb +6 -1
  6. data/lib/pose/jobs/install.rb +27 -0
  7. data/lib/pose/jobs/reindex_all.rb +34 -0
  8. data/lib/pose/jobs/remove.rb +28 -0
  9. data/lib/pose/jobs/uninstall.rb +19 -0
  10. data/lib/pose/jobs/vacuum.rb +23 -0
  11. data/lib/pose/model_class_additions.rb +32 -14
  12. data/lib/pose/query.rb +49 -9
  13. data/lib/pose/search.rb +5 -5
  14. data/lib/pose/static_api.rb +21 -3
  15. data/lib/pose/version.rb +1 -1
  16. data/lib/pose/word.rb +33 -0
  17. data/lib/pose.rb +11 -5
  18. data/lib/tasks/pose_tasks.rake +16 -27
  19. data/spec/{dummy/db/development.sqlite3 → db/pose.sqlite3} +0 -0
  20. data/spec/factories/posable_one.rb +2 -0
  21. data/spec/factories/posable_three.rb +8 -0
  22. data/spec/factories/posable_two.rb +2 -0
  23. data/spec/factories/user.rb +2 -0
  24. data/spec/lib/pose/activerecord_base_additions_spec.rb +11 -0
  25. data/spec/{models → lib/pose}/assignment_spec.rb +5 -5
  26. data/spec/lib/pose/jobs/reindex_all_spec.rb +31 -0
  27. data/spec/lib/pose/jobs/remove_spec.rb +20 -0
  28. data/spec/lib/pose/model_class_additions_spec.rb +150 -0
  29. data/spec/lib/pose/query_spec.rb +106 -8
  30. data/spec/lib/pose/search_spec.rb +2 -22
  31. data/spec/lib/pose/word_spec.rb +68 -0
  32. data/spec/pose_api_spec.rb +33 -13
  33. data/spec/spec_helper.rb +4 -32
  34. data/spec/support/config/database.yml +51 -0
  35. data/spec/support/config/database.yml.example +16 -0
  36. data/spec/{dummy/db/migrate → support/migrations}/20130308054001_create_posable_one.rb +0 -0
  37. data/spec/{dummy/db/migrate → support/migrations}/20130308054142_create_posable_two.rb +0 -0
  38. data/spec/support/migrations/20130308054143_create_posable_three.rb +9 -0
  39. data/spec/{dummy/db/migrate → support/migrations}/20130708084009_create_users.rb +0 -0
  40. data/spec/support/migrations/20130808084009_setup_pose_specs.rb +5 -0
  41. data/spec/{dummy/app → support}/models/posable_one.rb +1 -1
  42. data/spec/support/models/posable_three.rb +10 -0
  43. data/spec/{dummy/app → support}/models/posable_two.rb +1 -1
  44. data/spec/{dummy/app → support}/models/user.rb +1 -1
  45. data/spec/support/spec_manager.rb +105 -0
  46. metadata +70 -101
  47. data/app/models/pose/word.rb +0 -22
  48. data/db/migrate/20130308144915_pose_install.rb +0 -18
  49. data/lib/generators/pose/install/install_generator.rb +0 -56
  50. data/lib/generators/pose/install/templates/install_migration.rb +0 -24
  51. data/lib/generators/pose/remove/remove_generator.rb +0 -56
  52. data/lib/generators/pose/remove/templates/remove_migration.rb +0 -23
  53. data/lib/generators/pose/upgrade/templates/upgrade_migration.rb +0 -7
  54. data/lib/generators/pose/upgrade/upgrade_generator.rb +0 -35
  55. data/lib/pose/engine.rb +0 -5
  56. data/lib/pose/helpers.rb +0 -89
  57. data/lib/pose/railtie.rb +0 -19
  58. data/spec/dummy/Rakefile +0 -7
  59. data/spec/dummy/config/application.rb +0 -23
  60. data/spec/dummy/config/boot.rb +0 -10
  61. data/spec/dummy/config/database.yml +0 -25
  62. data/spec/dummy/config/environment.rb +0 -5
  63. data/spec/dummy/config/environments/development.rb +0 -30
  64. data/spec/dummy/config/environments/production.rb +0 -81
  65. data/spec/dummy/config/environments/test.rb +0 -37
  66. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
  67. data/spec/dummy/config/initializers/filter_parameter_logging.rb +0 -4
  68. data/spec/dummy/config/initializers/inflections.rb +0 -15
  69. data/spec/dummy/config/initializers/mime_types.rb +0 -5
  70. data/spec/dummy/config/initializers/secret_token.rb +0 -7
  71. data/spec/dummy/config/initializers/session_store.rb +0 -8
  72. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -14
  73. data/spec/dummy/config/locales/en.yml +0 -5
  74. data/spec/dummy/config/routes.rb +0 -2
  75. data/spec/dummy/config.ru +0 -4
  76. data/spec/dummy/db/schema.rb +0 -47
  77. data/spec/dummy/db/test.sqlite3 +0 -0
  78. data/spec/dummy/log/development.log +0 -309
  79. data/spec/dummy/log/test.log +0 -88518
  80. data/spec/dummy/script/rails +0 -6
  81. data/spec/lib/pose/helpers_spec.rb +0 -147
  82. data/spec/models/word_spec.rb +0 -42
metadata CHANGED
@@ -1,111 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pose
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Goslar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-02 00:00:00.000000000 Z
11
+ date: 2014-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '4.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '4.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: ruby-progressbar
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: factory_girl_rails
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: faker
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: guard-rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rspec-rails
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: sqlite3
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  description: Pose ('Polymorphic Search') allows fulltext search for ActiveRecord objects.
@@ -115,72 +115,54 @@ executables: []
115
115
  extensions: []
116
116
  extra_rdoc_files: []
117
117
  files:
118
- - app/models/pose/assignment.rb
119
- - app/models/pose/word.rb
120
- - db/migrate/20130308144915_pose_install.rb
121
- - lib/generators/pose/install/install_generator.rb
122
- - lib/generators/pose/install/templates/install_migration.rb
123
- - lib/generators/pose/remove/remove_generator.rb
124
- - lib/generators/pose/remove/templates/remove_migration.rb
125
- - lib/generators/pose/upgrade/templates/upgrade_migration.rb
126
- - lib/generators/pose/upgrade/upgrade_generator.rb
118
+ - MIT-LICENSE
119
+ - README.md
120
+ - Rakefile
121
+ - lib/pose.rb
127
122
  - lib/pose/activerecord_base_additions.rb
128
- - lib/pose/engine.rb
129
- - lib/pose/helpers.rb
123
+ - lib/pose/assignment.rb
124
+ - lib/pose/jobs/install.rb
125
+ - lib/pose/jobs/reindex_all.rb
126
+ - lib/pose/jobs/remove.rb
127
+ - lib/pose/jobs/uninstall.rb
128
+ - lib/pose/jobs/vacuum.rb
130
129
  - lib/pose/model_class_additions.rb
131
130
  - lib/pose/query.rb
132
- - lib/pose/railtie.rb
133
131
  - lib/pose/search.rb
134
132
  - lib/pose/static_api.rb
135
133
  - lib/pose/version.rb
136
- - lib/pose.rb
134
+ - lib/pose/word.rb
137
135
  - lib/tasks/pose_tasks.rake
138
- - MIT-LICENSE
139
- - Rakefile
140
- - README.md
141
- - spec/dummy/app/models/posable_one.rb
142
- - spec/dummy/app/models/posable_two.rb
143
- - spec/dummy/app/models/user.rb
144
- - spec/dummy/config/application.rb
145
- - spec/dummy/config/boot.rb
146
- - spec/dummy/config/database.yml
147
- - spec/dummy/config/environment.rb
148
- - spec/dummy/config/environments/development.rb
149
- - spec/dummy/config/environments/production.rb
150
- - spec/dummy/config/environments/test.rb
151
- - spec/dummy/config/initializers/backtrace_silencers.rb
152
- - spec/dummy/config/initializers/filter_parameter_logging.rb
153
- - spec/dummy/config/initializers/inflections.rb
154
- - spec/dummy/config/initializers/mime_types.rb
155
- - spec/dummy/config/initializers/secret_token.rb
156
- - spec/dummy/config/initializers/session_store.rb
157
- - spec/dummy/config/initializers/wrap_parameters.rb
158
- - spec/dummy/config/locales/en.yml
159
- - spec/dummy/config/routes.rb
160
- - spec/dummy/config.ru
161
- - spec/dummy/db/development.sqlite3
162
- - spec/dummy/db/migrate/20130308054001_create_posable_one.rb
163
- - spec/dummy/db/migrate/20130308054142_create_posable_two.rb
164
- - spec/dummy/db/migrate/20130708084009_create_users.rb
165
- - spec/dummy/db/schema.rb
166
- - spec/dummy/db/test.sqlite3
167
- - spec/dummy/log/development.log
168
- - spec/dummy/log/test.log
169
- - spec/dummy/Rakefile
170
- - spec/dummy/script/rails
136
+ - spec/db/pose.sqlite3
171
137
  - spec/factories/assignments.rb
172
138
  - spec/factories/posable_one.rb
139
+ - spec/factories/posable_three.rb
173
140
  - spec/factories/posable_two.rb
174
141
  - spec/factories/user.rb
175
142
  - spec/factories/words.rb
176
- - spec/lib/pose/helpers_spec.rb
143
+ - spec/lib/pose/activerecord_base_additions_spec.rb
144
+ - spec/lib/pose/assignment_spec.rb
145
+ - spec/lib/pose/jobs/reindex_all_spec.rb
146
+ - spec/lib/pose/jobs/remove_spec.rb
147
+ - spec/lib/pose/model_class_additions_spec.rb
177
148
  - spec/lib/pose/query_spec.rb
178
149
  - spec/lib/pose/search_spec.rb
179
- - spec/models/assignment_spec.rb
180
- - spec/models/word_spec.rb
150
+ - spec/lib/pose/word_spec.rb
181
151
  - spec/pose_api_spec.rb
182
152
  - spec/spec_helper.rb
153
+ - spec/support/config/database.yml
154
+ - spec/support/config/database.yml.example
183
155
  - spec/support/matchers.rb
156
+ - spec/support/migrations/20130308054001_create_posable_one.rb
157
+ - spec/support/migrations/20130308054142_create_posable_two.rb
158
+ - spec/support/migrations/20130308054143_create_posable_three.rb
159
+ - spec/support/migrations/20130708084009_create_users.rb
160
+ - spec/support/migrations/20130808084009_setup_pose_specs.rb
161
+ - spec/support/models/posable_one.rb
162
+ - spec/support/models/posable_three.rb
163
+ - spec/support/models/posable_two.rb
164
+ - spec/support/models/user.rb
165
+ - spec/support/spec_manager.rb
184
166
  homepage: http://github.com/kevgo/pose
185
167
  licenses: []
186
168
  metadata: {}
@@ -198,61 +180,48 @@ require_paths:
198
180
  - lib
199
181
  required_ruby_version: !ruby/object:Gem::Requirement
200
182
  requirements:
201
- - - '>='
183
+ - - ">="
202
184
  - !ruby/object:Gem::Version
203
185
  version: '0'
204
186
  required_rubygems_version: !ruby/object:Gem::Requirement
205
187
  requirements:
206
- - - '>='
188
+ - - ">="
207
189
  - !ruby/object:Gem::Version
208
190
  version: '0'
209
191
  requirements: []
210
192
  rubyforge_project:
211
- rubygems_version: 2.0.3
193
+ rubygems_version: 2.2.2
212
194
  signing_key:
213
195
  specification_version: 4
214
196
  summary: A polymorphic, storage-system independent search engine for Ruby on Rails.
215
197
  test_files:
216
- - spec/dummy/app/models/posable_one.rb
217
- - spec/dummy/app/models/posable_two.rb
218
- - spec/dummy/app/models/user.rb
219
- - spec/dummy/config/application.rb
220
- - spec/dummy/config/boot.rb
221
- - spec/dummy/config/database.yml
222
- - spec/dummy/config/environment.rb
223
- - spec/dummy/config/environments/development.rb
224
- - spec/dummy/config/environments/production.rb
225
- - spec/dummy/config/environments/test.rb
226
- - spec/dummy/config/initializers/backtrace_silencers.rb
227
- - spec/dummy/config/initializers/filter_parameter_logging.rb
228
- - spec/dummy/config/initializers/inflections.rb
229
- - spec/dummy/config/initializers/mime_types.rb
230
- - spec/dummy/config/initializers/secret_token.rb
231
- - spec/dummy/config/initializers/session_store.rb
232
- - spec/dummy/config/initializers/wrap_parameters.rb
233
- - spec/dummy/config/locales/en.yml
234
- - spec/dummy/config/routes.rb
235
- - spec/dummy/config.ru
236
- - spec/dummy/db/development.sqlite3
237
- - spec/dummy/db/migrate/20130308054001_create_posable_one.rb
238
- - spec/dummy/db/migrate/20130308054142_create_posable_two.rb
239
- - spec/dummy/db/migrate/20130708084009_create_users.rb
240
- - spec/dummy/db/schema.rb
241
- - spec/dummy/db/test.sqlite3
242
- - spec/dummy/log/development.log
243
- - spec/dummy/log/test.log
244
- - spec/dummy/Rakefile
245
- - spec/dummy/script/rails
198
+ - spec/db/pose.sqlite3
246
199
  - spec/factories/assignments.rb
247
200
  - spec/factories/posable_one.rb
201
+ - spec/factories/posable_three.rb
248
202
  - spec/factories/posable_two.rb
249
203
  - spec/factories/user.rb
250
204
  - spec/factories/words.rb
251
- - spec/lib/pose/helpers_spec.rb
205
+ - spec/lib/pose/activerecord_base_additions_spec.rb
206
+ - spec/lib/pose/assignment_spec.rb
207
+ - spec/lib/pose/jobs/reindex_all_spec.rb
208
+ - spec/lib/pose/jobs/remove_spec.rb
209
+ - spec/lib/pose/model_class_additions_spec.rb
252
210
  - spec/lib/pose/query_spec.rb
253
211
  - spec/lib/pose/search_spec.rb
254
- - spec/models/assignment_spec.rb
255
- - spec/models/word_spec.rb
212
+ - spec/lib/pose/word_spec.rb
256
213
  - spec/pose_api_spec.rb
257
214
  - spec/spec_helper.rb
215
+ - spec/support/config/database.yml
216
+ - spec/support/config/database.yml.example
258
217
  - spec/support/matchers.rb
218
+ - spec/support/migrations/20130308054001_create_posable_one.rb
219
+ - spec/support/migrations/20130308054142_create_posable_two.rb
220
+ - spec/support/migrations/20130308054143_create_posable_three.rb
221
+ - spec/support/migrations/20130708084009_create_users.rb
222
+ - spec/support/migrations/20130808084009_setup_pose_specs.rb
223
+ - spec/support/models/posable_one.rb
224
+ - spec/support/models/posable_three.rb
225
+ - spec/support/models/posable_two.rb
226
+ - spec/support/models/user.rb
227
+ - spec/support/spec_manager.rb
@@ -1,22 +0,0 @@
1
- # A single word in the search index.
2
- module Pose
3
- class Word < ActiveRecord::Base
4
- has_many :assignments, class_name: 'Pose::Assignment', dependent: :destroy
5
-
6
- def self.remove_unused_words progress_bar = nil
7
- if Helpers.is_sql_database?
8
- # SQL database --> use an optimized query.
9
- Word.delete_all(id: Word.select("pose_words.id").
10
- joins("LEFT OUTER JOIN pose_assignments ON pose_assignments.word_id = pose_words.id").
11
- group("pose_words.id").
12
- having("COUNT(pose_assignments.id) = 0"))
13
- else
14
- # Unknown database --> use the standard Rails API.
15
- Word.select(:id).find_each(include: [:assignments], batch_size: 100) do |word|
16
- word.delete if word.assignments.size == 0
17
- progress_bar.increment if progress_bar
18
- end
19
- end
20
- end
21
- end
22
- end
@@ -1,18 +0,0 @@
1
- class PoseInstall < ActiveRecord::Migration
2
-
3
- def change
4
- create_table "pose_assignments" do |t|
5
- t.integer "word_id", null: false
6
- t.integer "posable_id", null: false
7
- t.string "posable_type", limit: 60, null: false
8
- end
9
- add_index "pose_assignments", :word_id
10
- add_index "pose_assignments", :posable_id
11
-
12
- create_table "pose_words" do |t|
13
- t.string "text", limit: 80, null: false
14
- end
15
- add_index "pose_words", :text
16
- end
17
-
18
- end
@@ -1,56 +0,0 @@
1
- require 'rails/generators'
2
- require 'rails/generators/migration'
3
-
4
- module Pose
5
- module Generators
6
-
7
- class InstallGenerator < Rails::Generators::Base
8
- include Rails::Generators::Migration
9
- source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
10
-
11
- def create_migration_file
12
- say ''
13
- say ' Creating database migration for the Pose tables.'
14
- say ''
15
- migration_template 'install_migration.rb', 'db/migrate/install_pose.rb'
16
- say ''
17
- end
18
-
19
- def installation_instructions
20
- say ''
21
- say ' All done! You need to do two things now:'
22
- say ''
23
- say ' 1. Run the database migration'
24
- say ''
25
- say ' rake db:migrate', Thor::Shell::Color::BOLD
26
- say ''
27
- say ''
28
- say ' 2. Add a posify block to all your models.'
29
- say ' Here is an example:'
30
- say ''
31
- say ' class MyClass < ActiveRecord::Base'
32
- say ' ...'
33
- say ''
34
- say ' posify do', Thor::Shell::Color::BOLD
35
- say ' # return searchable text as a string here', Thor::Shell::Color::BOLD
36
- say ' end', Thor::Shell::Color::BOLD
37
- say ''
38
- say ' ...'
39
- say ' end'
40
- say ''
41
- say ''
42
- say ' Happy searching! :)'
43
- say ''
44
- end
45
-
46
-
47
- private
48
-
49
- # Helper method for creating the migration.
50
- def self.next_migration_number(path)
51
- Time.now.utc.strftime("%Y%m%d%H%M%S")
52
- end
53
- end
54
-
55
- end
56
- end
@@ -1,24 +0,0 @@
1
- class InstallPose < ActiveRecord::Migration
2
-
3
- def self.up
4
- create_table "pose_assignments" do |t|
5
- t.integer "word_id", null: false
6
- t.integer "posable_id", null: false
7
- t.string "posable_type", limit: 40, null: false
8
- end
9
-
10
- add_index "pose_assignments", :word_id
11
- add_index "pose_assignments", :posable_id
12
-
13
- create_table "pose_words" do |t|
14
- t.string "text", limit: 80, null: false
15
- end
16
-
17
- add_index "pose_words", :text
18
- end
19
-
20
- def self.down
21
- drop_table 'pose_assignments'
22
- drop_table 'pose_words'
23
- end
24
- end
@@ -1,56 +0,0 @@
1
- require 'rails/generators'
2
- require 'rails/generators/migration'
3
-
4
- module Pose
5
- module Generators
6
-
7
- class RemoveGenerator < Rails::Generators::Base
8
- include Rails::Generators::Migration
9
- source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
10
-
11
- def create_migration_file
12
- say ''
13
- say ' Creating database migration to remove the Pose tables.'
14
- say ''
15
- migration_template 'remove_migration.rb', 'db/migrate/remove_pose.rb'
16
- say ''
17
- end
18
-
19
- def installation_instructions
20
- say ''
21
- say ' All done! You need to do two things now:'
22
- say ''
23
- say ' 1. Run the database migration to remove the tables from your database.'
24
- say ''
25
- say ' rake db:migrate', Thor::Shell::Color::BOLD
26
- say ''
27
- say ''
28
- say ' 2. Remove the posify block from all your models.'
29
- say ' Here is how it looks like:'
30
- say ''
31
- say ' class MyClass < ActiveRecord::Base'
32
- say ' ...'
33
- say ''
34
- say ' posify do', Thor::Shell::Color::BOLD
35
- say ' ...', Thor::Shell::Color::BOLD
36
- say ' end', Thor::Shell::Color::BOLD
37
- say ''
38
- say ' ...'
39
- say ' end'
40
- say ''
41
- say ''
42
- say ' Have an excellent day! :)'
43
- say ''
44
- end
45
-
46
-
47
- private
48
-
49
- # Helper method for creating the migration.
50
- def self.next_migration_number(path)
51
- Time.now.utc.strftime("%Y%m%d%H%M%S")
52
- end
53
- end
54
-
55
- end
56
- end
@@ -1,23 +0,0 @@
1
- class AddPoseTables < ActiveRecord::Migration
2
-
3
- def self.up
4
- drop_table 'pose_assignments'
5
- drop_table 'pose_words'
6
- end
7
-
8
- def self.down
9
- create_table "pose_assignments" do |t|
10
- t.integer "word_id", null: false
11
- t.integer "posable_id", null: false
12
- t.string "posable_type", limit: 60, null: false
13
- end
14
- add_index "pose_assignments", :word_id
15
- add_index "pose_assignments", :posable_id
16
-
17
- create_table "pose_words" do |t|
18
- t.string "text", limit: 80, null: false
19
- end
20
- add_index "pose_words", :text
21
- end
22
- end
23
-
@@ -1,7 +0,0 @@
1
- class PoseUpgrade < ActiveRecord::Migration
2
-
3
- def change
4
- rename_column :pose_assignments, :pose_word_id, :word_id
5
- end
6
-
7
- end
@@ -1,35 +0,0 @@
1
- require 'rails/generators'
2
- require 'rails/generators/migration'
3
-
4
- module Pose
5
- module Generators
6
-
7
- class UpgradeGenerator < Rails::Generators::Base
8
- include Rails::Generators::Migration
9
- source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
10
-
11
- def create_migration_file
12
- say ''
13
- say ' Creating database migration to upgrade your Pose tables.'
14
- say ''
15
- migration_template 'upgrade_migration.rb', 'db/migrate/pose_upgrade.rb'
16
- say ''
17
- end
18
-
19
- def installation_instructions
20
- say ' All done! You need to do is run db:migrate!'
21
- say ''
22
- end
23
-
24
-
25
- private
26
-
27
- # Helper method for creating the migration.
28
- def self.next_migration_number(path)
29
- Time.now.utc.strftime("%Y%m%d%H%M%S")
30
- end
31
- end
32
-
33
- end
34
- end
35
-
data/lib/pose/engine.rb DELETED
@@ -1,5 +0,0 @@
1
- module Pose
2
- class Engine < ::Rails::Engine
3
- isolate_namespace Pose
4
- end
5
- end
data/lib/pose/helpers.rb DELETED
@@ -1,89 +0,0 @@
1
- # Internal helper methods for the Pose module.
2
- # TODO: remove
3
- module Pose
4
- module Helpers
5
- class <<self
6
-
7
- # Returns all strings that are in new_words, but not in existing_words.
8
- # Helper method.
9
- #
10
- # @param [Array<String>] existing_words The words that are already associated with the object.
11
- # @param [Array<String>] new_words The words thet the object should have from now on.
12
- #
13
- # @return [Array<String>] The words that need to be added to the existing_words array.
14
- def get_words_to_add existing_words, new_words
15
- new_words - existing_words.map(&:text)
16
- end
17
-
18
-
19
- # Helper method.
20
- # Returns the id of all word objects that are in existing_words, but not in new_words.
21
- #
22
- # @param [Array<String>] existing_words The words that are already associated with the object.
23
- # @param [Array<String>] new_words The words thet the object should have from now on.
24
- #
25
- # @return [Array<String>] The words that need to be removed from the existing_words array.
26
- def get_words_to_remove existing_words, new_words
27
- existing_words.map do |existing_word|
28
- existing_word unless new_words.include?(existing_word.text)
29
- end.compact
30
- end
31
-
32
-
33
- def is_sql_database?
34
- ['ActiveRecord::ConnectionAdapters::PostgreSQLAdapter',
35
- 'ActiveRecord::ConnectionAdapters::SQLite3Adapter'].include? ActiveRecord::Base.connection.class.name
36
- end
37
-
38
-
39
- # Returns whether the given string is a URL.
40
- #
41
- # @param [String] word The string to check.
42
- #
43
- # @return [Boolean]
44
- def is_url? word
45
- /https?:\/\/(\w)+\.(\w+)/ =~ word
46
- end
47
-
48
-
49
- # Makes the given input an array.
50
- def make_array input
51
- [input].flatten
52
- end
53
-
54
-
55
- # Makes the given input an array.
56
- def make_array input
57
- [input].flatten
58
- end
59
-
60
-
61
- # Simplifies the given word to a generic search form.
62
- #
63
- # @param [String] raw_word The word to make searchable.
64
- #
65
- # @return [String] The stemmed version of the word.
66
- def root_word raw_word
67
- result = []
68
- raw_word_copy = raw_word[0..-1]
69
- raw_word_copy.gsub! '%20', ' '
70
- raw_word_copy.gsub! /[()*<>'",;\?\-\=&%#]/, ' '
71
- raw_word_copy.gsub! /\s+/, ' '
72
- raw_word_copy.split(' ').each do |word|
73
- if Helpers.is_url?(word)
74
- result.concat word.split(/[\.\/\:]/).delete_if(&:blank?)
75
- else
76
- word.gsub! /[\-\/\._:]/, ' '
77
- word.gsub! /\s+/, ' '
78
- word.split(' ').each do |w|
79
- stemmed_word = w.parameterize.singularize
80
- result.concat stemmed_word.split ' '
81
- end
82
- end
83
- end
84
- result.uniq
85
- end
86
-
87
- end
88
- end
89
- end
data/lib/pose/railtie.rb DELETED
@@ -1,19 +0,0 @@
1
- require "rails/railtie"
2
-
3
- module Pose
4
-
5
- class Railtie < Rails::Railtie
6
-
7
- # Add the Pose additions to ActiveRecord::Base once it is loaded.
8
- initializer 'Pose.base_additions' do
9
- ActiveSupport.on_load :active_record do
10
- extend ActiveRecordBaseAdditions
11
- end
12
- end
13
-
14
- # Load the Pose rake tasks.
15
- rake_tasks do
16
- load "tasks/pose_tasks.rake"
17
- end
18
- end
19
- end