activegroonga 0.0.7 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.ja.rdoc +4 -1
- data/README.rdoc +4 -1
- data/Rakefile +18 -4
- data/lib/active_groonga.rb +25 -52
- data/lib/active_groonga/base.rb +164 -1480
- data/lib/active_groonga/callbacks.rb +26 -7
- data/lib/active_groonga/database.rb +55 -0
- data/lib/active_groonga/{dirty.rb → error.rb} +20 -10
- data/lib/active_groonga/locale/en.yml +5 -0
- data/lib/active_groonga/migration.rb +44 -113
- data/lib/active_groonga/migrator.rb +172 -0
- data/lib/active_groonga/persistence.rb +172 -0
- data/lib/active_groonga/railtie.rb +66 -0
- data/lib/active_groonga/railties/configurable.rb +47 -0
- data/lib/active_groonga/railties/groonga.rake +167 -0
- data/lib/active_groonga/result_set.rb +89 -0
- data/lib/active_groonga/schema.rb +54 -188
- data/lib/active_groonga/validations.rb +54 -5
- data/lib/active_groonga/vector.rb +64 -0
- data/lib/active_groonga/version.rb +3 -3
- data/lib/{active_groonga/aggregations.rb → rails/generators/active_groonga.rb} +17 -10
- data/lib/rails/generators/active_groonga/migration/column.rb +101 -0
- data/lib/rails/generators/active_groonga/migration/migration_generator.rb +53 -0
- data/lib/rails/generators/active_groonga/migration/templates/migration.rb +29 -0
- data/lib/rails/generators/active_groonga/model/model_generator.rb +60 -0
- data/lib/rails/generators/active_groonga/model/templates/migration.rb +16 -0
- data/lib/rails/generators/active_groonga/model/templates/model.rb +2 -0
- data/lib/rails/generators/active_groonga/model/templates/module.rb +5 -0
- data/test-unit-notify/COPYING +502 -0
- data/test-unit-notify/Rakefile +47 -0
- data/test-unit-notify/lib/test/unit/notify.rb +127 -0
- data/test-unit/COPYING +56 -0
- data/test-unit/GPL +340 -0
- data/test-unit/PSFL +271 -0
- data/test-unit/Rakefile +18 -5
- data/test-unit/html/bar.svg +153 -0
- data/test-unit/html/developer.svg +469 -0
- data/test-unit/html/favicon.ico +0 -0
- data/test-unit/html/favicon.svg +82 -0
- data/test-unit/html/heading-mark.svg +393 -0
- data/test-unit/html/index.html +235 -13
- data/test-unit/html/index.html.ja +258 -15
- data/test-unit/html/install.svg +636 -0
- data/test-unit/html/logo.svg +483 -0
- data/test-unit/html/test-unit.css +339 -0
- data/test-unit/html/tutorial.svg +559 -0
- data/test-unit/lib/test/unit.rb +29 -43
- data/test-unit/lib/test/unit/assertionfailederror.rb +11 -0
- data/test-unit/lib/test/unit/assertions.rb +202 -20
- data/test-unit/lib/test/unit/autorunner.rb +51 -20
- data/test-unit/lib/test/unit/collector.rb +1 -8
- data/test-unit/lib/test/unit/collector/dir.rb +1 -1
- data/test-unit/lib/test/unit/collector/load.rb +16 -9
- data/test-unit/lib/test/unit/color-scheme.rb +19 -3
- data/test-unit/lib/test/unit/diff.rb +240 -38
- data/test-unit/lib/test/unit/error.rb +4 -0
- data/test-unit/lib/test/unit/failure.rb +31 -5
- data/test-unit/lib/test/unit/notification.rb +8 -4
- data/test-unit/lib/test/unit/omission.rb +51 -3
- data/test-unit/lib/test/unit/pending.rb +4 -0
- data/test-unit/lib/test/unit/priority.rb +2 -3
- data/test-unit/lib/test/unit/testcase.rb +65 -7
- data/test-unit/lib/test/unit/testresult.rb +34 -2
- data/test-unit/lib/test/unit/ui/console/testrunner.rb +197 -45
- data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +14 -0
- data/test-unit/lib/test/unit/ui/tap/testrunner.rb +2 -12
- data/test-unit/lib/test/unit/ui/testrunner.rb +33 -0
- data/test-unit/lib/test/unit/util/backtracefilter.rb +1 -0
- data/test-unit/lib/test/unit/util/output.rb +31 -0
- data/test-unit/lib/test/unit/version.rb +1 -1
- data/test-unit/sample/{tc_adder.rb → test_adder.rb} +3 -1
- data/test-unit/sample/{tc_subtracter.rb → test_subtracter.rb} +3 -1
- data/test-unit/sample/test_user.rb +1 -0
- data/test-unit/test/collector/test-descendant.rb +2 -4
- data/test-unit/test/collector/test-load.rb +121 -8
- data/test-unit/test/collector/test_objectspace.rb +7 -5
- data/test-unit/test/run-test.rb +2 -0
- data/test-unit/test/test-color-scheme.rb +11 -2
- data/test-unit/test/test-diff.rb +48 -7
- data/test-unit/test/test-omission.rb +1 -1
- data/test-unit/test/test-testcase.rb +57 -20
- data/test-unit/test/test_assertions.rb +128 -13
- data/test-unit/test/ui/test_tap.rb +33 -0
- data/test-unit/test/util/test-output.rb +11 -0
- data/test/active-groonga-test-utils.rb +50 -36
- data/test/fixtures/site.rb +2 -0
- data/test/run-test.rb +36 -9
- data/test/test-associations.rb +5 -2
- data/test/test-base.rb +39 -31
- data/test/test-callbacks.rb +13 -3
- data/test/test-persistence.rb +53 -0
- data/{lib/active_groonga/observer.rb → test/test-result-set.rb} +14 -12
- data/test/test-schema.rb +85 -22
- data/{lib/active_groonga/rails_support.rb → test/test-validations.rb} +15 -13
- metadata +85 -52
- data/lib/active_groonga/associations.rb +0 -93
- data/lib/active_groonga/associations/belongs_to_association.rb +0 -25
- data/lib/active_groonga/attribute_methods.rb +0 -36
- data/lib/active_groonga/column.rb +0 -137
- data/lib/active_groonga/dynamic_record_expression_builder.rb +0 -40
- data/lib/active_groonga/reflection.rb +0 -30
- data/lib/active_groonga/schema_dumper.rb +0 -163
- data/lib/active_groonga/tasks.rb +0 -16
- data/lib/active_groonga/tasks/groonga.rake +0 -164
- data/lib/active_groonga/timestamp.rb +0 -30
- data/rails/README +0 -28
- data/rails/init.rb +0 -70
- data/rails_generators/index_table_groonga/USAGE +0 -23
- data/rails_generators/index_table_groonga/index_table_groonga_generator.rb +0 -44
- data/rails_generators/index_table_groonga/templates/migration.rb +0 -12
- data/rails_generators/migration_groonga/USAGE +0 -29
- data/rails_generators/migration_groonga/migration_groonga_generator.rb +0 -19
- data/rails_generators/migration_groonga/templates/migration.rb +0 -11
- data/rails_generators/model_groonga/USAGE +0 -28
- data/rails_generators/model_groonga/model_groonga_generator.rb +0 -45
- data/rails_generators/model_groonga/templates/fixtures.yml +0 -17
- data/rails_generators/model_groonga/templates/migration.rb +0 -16
- data/rails_generators/model_groonga/templates/model.rb +0 -2
- data/rails_generators/model_groonga/templates/unit_test.rb +0 -8
- data/test-unit/html/classic.html +0 -15
- data/test-unit/sample/ts_examples.rb +0 -7
- data/test/test-schema-dumper.rb +0 -48
@@ -1,8 +1,9 @@
|
|
1
|
-
# Copyright (C)
|
1
|
+
# Copyright (C) 2010 Kouhei Sutou <kou@clear-code.com>
|
2
2
|
#
|
3
3
|
# This library is free software; you can redistribute it and/or
|
4
4
|
# modify it under the terms of the GNU Lesser General Public
|
5
|
-
# License
|
5
|
+
# License as published by the Free Software Foundation; either
|
6
|
+
# version 2.1 of the License.
|
6
7
|
#
|
7
8
|
# This library is distributed in the hope that it will be useful,
|
8
9
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
@@ -13,19 +14,20 @@
|
|
13
14
|
# License along with this library; if not, write to the Free Software
|
14
15
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
15
16
|
|
16
|
-
class
|
17
|
-
|
17
|
+
class TestValidations < Test::Unit::TestCase
|
18
|
+
include ActiveGroongaTestUtils
|
18
19
|
|
19
|
-
def
|
20
|
-
|
20
|
+
def test_missing_key
|
21
|
+
empty_site = Site.new
|
22
|
+
assert_false(empty_site.save)
|
23
|
+
assert_equal([message(:key, :blank)],
|
24
|
+
empty_site.errors.to_a)
|
21
25
|
end
|
22
26
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
require 'erb'
|
29
|
-
YAML::load(ERB.new(IO.read(groonga_configuration_file)).result)
|
27
|
+
private
|
28
|
+
def message(key, type)
|
29
|
+
I18n.t(:"errors.format",
|
30
|
+
:attribute => Site.human_attribute_name(key),
|
31
|
+
:message => I18n.t(:"errors.messages.#{type}"))
|
30
32
|
end
|
31
33
|
end
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activegroonga
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 23
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 0
|
9
|
+
- 0
|
10
|
+
version: 1.0.0
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Kouhei Sutou
|
@@ -9,29 +15,41 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
18
|
+
date: 2010-11-26 00:00:00 +09:00
|
13
19
|
default_executable:
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
|
-
name:
|
17
|
-
|
18
|
-
|
19
|
-
|
22
|
+
name: rroonga
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
20
26
|
requirements:
|
21
|
-
- - "
|
27
|
+
- - ">="
|
22
28
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
25
|
-
-
|
26
|
-
|
29
|
+
hash: 31
|
30
|
+
segments:
|
31
|
+
- 1
|
32
|
+
- 0
|
33
|
+
- 4
|
34
|
+
version: 1.0.4
|
27
35
|
type: :runtime
|
28
|
-
|
29
|
-
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: activemodel
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
30
42
|
requirements:
|
31
|
-
- - "
|
43
|
+
- - ">="
|
32
44
|
- !ruby/object:Gem::Version
|
33
|
-
|
34
|
-
|
45
|
+
hash: 5
|
46
|
+
segments:
|
47
|
+
- 3
|
48
|
+
- 0
|
49
|
+
- 1
|
50
|
+
version: 3.0.1
|
51
|
+
type: :runtime
|
52
|
+
version_requirements: *id002
|
35
53
|
description: |-
|
36
54
|
groonga provides both of full text search and column store
|
37
55
|
features. ActiveGroonga + groonga can be used as an
|
@@ -56,50 +74,54 @@ files:
|
|
56
74
|
- README.rdoc
|
57
75
|
- Rakefile
|
58
76
|
- lib/active_groonga.rb
|
59
|
-
- lib/active_groonga/aggregations.rb
|
60
|
-
- lib/active_groonga/associations.rb
|
61
|
-
- lib/active_groonga/associations/belongs_to_association.rb
|
62
|
-
- lib/active_groonga/attribute_methods.rb
|
63
77
|
- lib/active_groonga/base.rb
|
64
78
|
- lib/active_groonga/callbacks.rb
|
65
|
-
- lib/active_groonga/
|
66
|
-
- lib/active_groonga/
|
67
|
-
- lib/active_groonga/dynamic_record_expression_builder.rb
|
79
|
+
- lib/active_groonga/database.rb
|
80
|
+
- lib/active_groonga/error.rb
|
68
81
|
- lib/active_groonga/fixtures.rb
|
82
|
+
- lib/active_groonga/locale/en.yml
|
69
83
|
- lib/active_groonga/migration.rb
|
70
|
-
- lib/active_groonga/
|
71
|
-
- lib/active_groonga/
|
72
|
-
- lib/active_groonga/
|
84
|
+
- lib/active_groonga/migrator.rb
|
85
|
+
- lib/active_groonga/persistence.rb
|
86
|
+
- lib/active_groonga/railtie.rb
|
87
|
+
- lib/active_groonga/railties/configurable.rb
|
88
|
+
- lib/active_groonga/railties/groonga.rake
|
89
|
+
- lib/active_groonga/result_set.rb
|
73
90
|
- lib/active_groonga/schema.rb
|
74
|
-
- lib/active_groonga/schema_dumper.rb
|
75
|
-
- lib/active_groonga/tasks.rb
|
76
|
-
- lib/active_groonga/tasks/groonga.rake
|
77
91
|
- lib/active_groonga/test_case.rb
|
78
92
|
- lib/active_groonga/test_help.rb
|
79
|
-
- lib/active_groonga/timestamp.rb
|
80
93
|
- lib/active_groonga/validations.rb
|
94
|
+
- lib/active_groonga/vector.rb
|
81
95
|
- lib/active_groonga/version.rb
|
96
|
+
- lib/rails/generators/active_groonga.rb
|
97
|
+
- lib/rails/generators/active_groonga/migration/column.rb
|
98
|
+
- lib/rails/generators/active_groonga/migration/migration_generator.rb
|
99
|
+
- lib/rails/generators/active_groonga/migration/templates/migration.rb
|
100
|
+
- lib/rails/generators/active_groonga/model/model_generator.rb
|
101
|
+
- lib/rails/generators/active_groonga/model/templates/migration.rb
|
102
|
+
- lib/rails/generators/active_groonga/model/templates/model.rb
|
103
|
+
- lib/rails/generators/active_groonga/model/templates/module.rb
|
82
104
|
- license/LGPL
|
83
|
-
-
|
84
|
-
-
|
85
|
-
-
|
86
|
-
-
|
87
|
-
-
|
88
|
-
-
|
89
|
-
- rails_generators/migration_groonga/migration_groonga_generator.rb
|
90
|
-
- rails_generators/migration_groonga/templates/migration.rb
|
91
|
-
- rails_generators/model_groonga/USAGE
|
92
|
-
- rails_generators/model_groonga/model_groonga_generator.rb
|
93
|
-
- rails_generators/model_groonga/templates/fixtures.yml
|
94
|
-
- rails_generators/model_groonga/templates/migration.rb
|
95
|
-
- rails_generators/model_groonga/templates/model.rb
|
96
|
-
- rails_generators/model_groonga/templates/unit_test.rb
|
105
|
+
- test-unit-notify/COPYING
|
106
|
+
- test-unit-notify/Rakefile
|
107
|
+
- test-unit-notify/lib/test/unit/notify.rb
|
108
|
+
- test-unit/COPYING
|
109
|
+
- test-unit/GPL
|
110
|
+
- test-unit/PSFL
|
97
111
|
- test-unit/Rakefile
|
98
112
|
- test-unit/TODO
|
99
113
|
- test-unit/bin/testrb
|
100
|
-
- test-unit/html/
|
114
|
+
- test-unit/html/bar.svg
|
115
|
+
- test-unit/html/developer.svg
|
116
|
+
- test-unit/html/favicon.ico
|
117
|
+
- test-unit/html/favicon.svg
|
118
|
+
- test-unit/html/heading-mark.svg
|
101
119
|
- test-unit/html/index.html
|
102
120
|
- test-unit/html/index.html.ja
|
121
|
+
- test-unit/html/install.svg
|
122
|
+
- test-unit/html/logo.svg
|
123
|
+
- test-unit/html/test-unit.css
|
124
|
+
- test-unit/html/tutorial.svg
|
103
125
|
- test-unit/lib/test/unit.rb
|
104
126
|
- test-unit/lib/test/unit/assertionfailederror.rb
|
105
127
|
- test-unit/lib/test/unit/assertions.rb
|
@@ -137,14 +159,14 @@ files:
|
|
137
159
|
- test-unit/lib/test/unit/util/backtracefilter.rb
|
138
160
|
- test-unit/lib/test/unit/util/method-owner-finder.rb
|
139
161
|
- test-unit/lib/test/unit/util/observable.rb
|
162
|
+
- test-unit/lib/test/unit/util/output.rb
|
140
163
|
- test-unit/lib/test/unit/util/procwrapper.rb
|
141
164
|
- test-unit/lib/test/unit/version.rb
|
142
165
|
- test-unit/sample/adder.rb
|
143
166
|
- test-unit/sample/subtracter.rb
|
144
|
-
- test-unit/sample/
|
145
|
-
- test-unit/sample/
|
167
|
+
- test-unit/sample/test_adder.rb
|
168
|
+
- test-unit/sample/test_subtracter.rb
|
146
169
|
- test-unit/sample/test_user.rb
|
147
|
-
- test-unit/sample/ts_examples.rb
|
148
170
|
- test-unit/test/collector/test-descendant.rb
|
149
171
|
- test-unit/test/collector/test-load.rb
|
150
172
|
- test-unit/test/collector/test_dir.rb
|
@@ -167,21 +189,26 @@ files:
|
|
167
189
|
- test-unit/test/test_testresult.rb
|
168
190
|
- test-unit/test/test_testsuite.rb
|
169
191
|
- test-unit/test/testunit-test-util.rb
|
192
|
+
- test-unit/test/ui/test_tap.rb
|
170
193
|
- test-unit/test/ui/test_testrunmediator.rb
|
171
194
|
- test-unit/test/util/test-method-owner-finder.rb
|
195
|
+
- test-unit/test/util/test-output.rb
|
172
196
|
- test-unit/test/util/test_backtracefilter.rb
|
173
197
|
- test-unit/test/util/test_observable.rb
|
174
198
|
- test-unit/test/util/test_procwrapper.rb
|
175
199
|
- test/active-groonga-test-utils.rb
|
176
200
|
- test/fixtures/bookmark.rb
|
201
|
+
- test/fixtures/site.rb
|
177
202
|
- test/fixtures/task.rb
|
178
203
|
- test/fixtures/user.rb
|
179
204
|
- test/run-test.rb
|
180
205
|
- test/test-associations.rb
|
181
206
|
- test/test-base.rb
|
182
207
|
- test/test-callbacks.rb
|
183
|
-
- test/test-
|
208
|
+
- test/test-persistence.rb
|
209
|
+
- test/test-result-set.rb
|
184
210
|
- test/test-schema.rb
|
211
|
+
- test/test-validations.rb
|
185
212
|
has_rdoc: true
|
186
213
|
homepage: http://groonga.rubyforge.org/
|
187
214
|
licenses: []
|
@@ -193,21 +220,27 @@ rdoc_options:
|
|
193
220
|
require_paths:
|
194
221
|
- lib
|
195
222
|
required_ruby_version: !ruby/object:Gem::Requirement
|
223
|
+
none: false
|
196
224
|
requirements:
|
197
225
|
- - ">="
|
198
226
|
- !ruby/object:Gem::Version
|
227
|
+
hash: 3
|
228
|
+
segments:
|
229
|
+
- 0
|
199
230
|
version: "0"
|
200
|
-
version:
|
201
231
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
232
|
+
none: false
|
202
233
|
requirements:
|
203
234
|
- - ">="
|
204
235
|
- !ruby/object:Gem::Version
|
236
|
+
hash: 3
|
237
|
+
segments:
|
238
|
+
- 0
|
205
239
|
version: "0"
|
206
|
-
version:
|
207
240
|
requirements: []
|
208
241
|
|
209
242
|
rubyforge_project: groonga
|
210
|
-
rubygems_version: 1.3.
|
243
|
+
rubygems_version: 1.3.7
|
211
244
|
signing_key:
|
212
245
|
specification_version: 3
|
213
246
|
summary: A library to use groonga with ActiveRecord like API.
|
@@ -1,93 +0,0 @@
|
|
1
|
-
# Copyright (C) 2009 Kouhei Sutou <kou@clear-code.com>
|
2
|
-
#
|
3
|
-
# This library is free software; you can redistribute it and/or
|
4
|
-
# modify it under the terms of the GNU Lesser General Public
|
5
|
-
# License version 2.1 as published by the Free Software Foundation.
|
6
|
-
#
|
7
|
-
# This library is distributed in the hope that it will be useful,
|
8
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
10
|
-
# Lesser General Public License for more details.
|
11
|
-
#
|
12
|
-
# You should have received a copy of the GNU Lesser General Public
|
13
|
-
# License along with this library; if not, write to the Free Software
|
14
|
-
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
15
|
-
|
16
|
-
# This library includes ActiveRecord based codes temporary.
|
17
|
-
# Here is their copyright and license:
|
18
|
-
#
|
19
|
-
# Copyright (c) 2004-2009 David Heinemeier Hansson
|
20
|
-
#
|
21
|
-
# Permission is hereby granted, free of charge, to any person obtaining
|
22
|
-
# a copy of this software and associated documentation files (the
|
23
|
-
# "Software"), to deal in the Software without restriction, including
|
24
|
-
# without limitation the rights to use, copy, modify, merge, publish,
|
25
|
-
# distribute, sublicense, and/or sell copies of the Software, and to
|
26
|
-
# permit persons to whom the Software is furnished to do so, subject to
|
27
|
-
# the following conditions:
|
28
|
-
#
|
29
|
-
# The above copyright notice and this permission notice shall be
|
30
|
-
# included in all copies or substantial portions of the Software.
|
31
|
-
#
|
32
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
33
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
34
|
-
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
35
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
36
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
37
|
-
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
38
|
-
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
39
|
-
|
40
|
-
module ActiveGroonga
|
41
|
-
module Associations
|
42
|
-
class << self
|
43
|
-
def included(base)
|
44
|
-
base.class_eval do
|
45
|
-
include(ActiveRecord::Associations)
|
46
|
-
extend(ClassMethods)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
autoload :BelongsToAssociation, 'active_groonga/associations/belongs_to_association'
|
52
|
-
|
53
|
-
module ClassMethods
|
54
|
-
# from ActiveRecord
|
55
|
-
def belongs_to(association_id, options = {})
|
56
|
-
reflection = create_belongs_to_reflection(association_id, options)
|
57
|
-
|
58
|
-
if reflection.options[:polymorphic]
|
59
|
-
association_accessor_methods(reflection, BelongsToPolymorphicAssociation)
|
60
|
-
else
|
61
|
-
association_accessor_methods(reflection, BelongsToAssociation)
|
62
|
-
association_constructor_method(:build, reflection, BelongsToAssociation)
|
63
|
-
association_constructor_method(:create, reflection, BelongsToAssociation)
|
64
|
-
end
|
65
|
-
|
66
|
-
# Create the callbacks to update counter cache
|
67
|
-
if options[:counter_cache]
|
68
|
-
cache_column = reflection.counter_cache_column
|
69
|
-
|
70
|
-
method_name = "belongs_to_counter_cache_after_create_for_#{reflection.name}".to_sym
|
71
|
-
define_method(method_name) do
|
72
|
-
association = send(reflection.name)
|
73
|
-
association.class.increment_counter(cache_column, send(reflection.primary_key_name)) unless association.nil?
|
74
|
-
end
|
75
|
-
after_create method_name
|
76
|
-
|
77
|
-
method_name = "belongs_to_counter_cache_before_destroy_for_#{reflection.name}".to_sym
|
78
|
-
define_method(method_name) do
|
79
|
-
association = send(reflection.name)
|
80
|
-
association.class.decrement_counter(cache_column, send(reflection.primary_key_name)) unless association.nil?
|
81
|
-
end
|
82
|
-
before_destroy method_name
|
83
|
-
|
84
|
-
module_eval(
|
85
|
-
"#{reflection.class_name}.send(:attr_readonly,\"#{cache_column}\".intern) if defined?(#{reflection.class_name}) && #{reflection.class_name}.respond_to?(:attr_readonly)"
|
86
|
-
)
|
87
|
-
end
|
88
|
-
|
89
|
-
configure_dependency_for_belongs_to(reflection)
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# Copyright (C) 2009 Kouhei Sutou <kou@clear-code.com>
|
2
|
-
#
|
3
|
-
# This library is free software; you can redistribute it and/or
|
4
|
-
# modify it under the terms of the GNU Lesser General Public
|
5
|
-
# License version 2.1 as published by the Free Software Foundation.
|
6
|
-
#
|
7
|
-
# This library is distributed in the hope that it will be useful,
|
8
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
10
|
-
# Lesser General Public License for more details.
|
11
|
-
#
|
12
|
-
# You should have received a copy of the GNU Lesser General Public
|
13
|
-
# License along with this library; if not, write to the Free Software
|
14
|
-
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
15
|
-
|
16
|
-
module ActiveGroonga
|
17
|
-
module Associations
|
18
|
-
class BelongsToAssociation < ActiveRecord::Associations::BelongsToAssociation
|
19
|
-
def find_target
|
20
|
-
@reflection.klass.find(@owner.id,
|
21
|
-
:readonly => @reflection.options[:readonly])
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
# Copyright (C) 2009 Kouhei Sutou <kou@clear-code.com>
|
2
|
-
#
|
3
|
-
# This library is free software; you can redistribute it and/or
|
4
|
-
# modify it under the terms of the GNU Lesser General Public
|
5
|
-
# License version 2.1 as published by the Free Software Foundation.
|
6
|
-
#
|
7
|
-
# This library is distributed in the hope that it will be useful,
|
8
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
10
|
-
# Lesser General Public License for more details.
|
11
|
-
#
|
12
|
-
# You should have received a copy of the GNU Lesser General Public
|
13
|
-
# License along with this library; if not, write to the Free Software
|
14
|
-
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
15
|
-
|
16
|
-
module ActiveGroonga
|
17
|
-
module AttributeMethods
|
18
|
-
def self.included(base)
|
19
|
-
base.module_eval do
|
20
|
-
include ActiveRecord::AttributeMethods
|
21
|
-
extend AttributeMethods::ClassMethods
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
module ClassMethods
|
26
|
-
def instance_method_already_implemented?(method_name)
|
27
|
-
method_name = method_name.to_s
|
28
|
-
return true if method_name =~ /^id(=$|\?$|$)/
|
29
|
-
@_defined_class_methods ||= ancestors.first(ancestors.index(ActiveGroonga::Base)).sum([]) { |m| m.public_instance_methods(false) | m.private_instance_methods(false) | m.protected_instance_methods(false) }.map(&:to_s).to_set
|
30
|
-
@@_defined_activegroonga_methods ||= (ActiveGroonga::Base.public_instance_methods(false) | ActiveGroonga::Base.private_instance_methods(false) | ActiveGroonga::Base.protected_instance_methods(false)).map(&:to_s).to_set
|
31
|
-
raise DangerousAttributeError, "#{method_name} is defined by ActiveGroonga" if @@_defined_activegroonga_methods.include?(method_name)
|
32
|
-
@_defined_class_methods.include?(method_name)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,137 +0,0 @@
|
|
1
|
-
# Copyright (C) 2009 Kouhei Sutou <kou@clear-code.com>
|
2
|
-
#
|
3
|
-
# This library is free software; you can redistribute it and/or
|
4
|
-
# modify it under the terms of the GNU Lesser General Public
|
5
|
-
# License version 2.1 as published by the Free Software Foundation.
|
6
|
-
#
|
7
|
-
# This library is distributed in the hope that it will be useful,
|
8
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
10
|
-
# Lesser General Public License for more details.
|
11
|
-
#
|
12
|
-
# You should have received a copy of the GNU Lesser General Public
|
13
|
-
# License along with this library; if not, write to the Free Software
|
14
|
-
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
15
|
-
|
16
|
-
module ActiveGroonga
|
17
|
-
class Column < ActiveRecord::ConnectionAdapters::Column
|
18
|
-
# Instantiates a new column in the table.
|
19
|
-
#
|
20
|
-
# +column+ is the Groonga::Column.
|
21
|
-
def initialize(column)
|
22
|
-
@column = column
|
23
|
-
@name = column.name.split(/\./, 2)[1]
|
24
|
-
@type = detect_type
|
25
|
-
end
|
26
|
-
|
27
|
-
def id?
|
28
|
-
false
|
29
|
-
end
|
30
|
-
|
31
|
-
def type_cast(value)
|
32
|
-
return nil if value.nil?
|
33
|
-
case type
|
34
|
-
when :references
|
35
|
-
if value.is_a?(ActiveGroonga::Base)
|
36
|
-
value
|
37
|
-
else
|
38
|
-
reference_object_class.find(value)
|
39
|
-
end
|
40
|
-
else
|
41
|
-
super
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def type_cast_code(var_name)
|
46
|
-
case type
|
47
|
-
when :references
|
48
|
-
"#{reference_object_class.name}.find(#{var_name})"
|
49
|
-
else
|
50
|
-
super
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def number?
|
55
|
-
super or type == :unsigned_integer
|
56
|
-
end
|
57
|
-
|
58
|
-
def quote(value)
|
59
|
-
case value
|
60
|
-
when ActiveGroonga::Base
|
61
|
-
Groonga::Record.new(value.class.table, value.id)
|
62
|
-
else
|
63
|
-
value
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def index?
|
68
|
-
@type == :index
|
69
|
-
end
|
70
|
-
|
71
|
-
def index_sources
|
72
|
-
if @column
|
73
|
-
@column.sources
|
74
|
-
else
|
75
|
-
[]
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
def reference_type?
|
80
|
-
@type == :references
|
81
|
-
end
|
82
|
-
|
83
|
-
def reference_object_name
|
84
|
-
return nil unless reference_type?
|
85
|
-
@column.range.name.gsub(/(?:\A<table:|>\z)/, '')
|
86
|
-
end
|
87
|
-
|
88
|
-
def reference_object_class
|
89
|
-
table_name = reference_object_name
|
90
|
-
return nil if table_name.nil?
|
91
|
-
table_name.camelcase.singularize.constantize
|
92
|
-
end
|
93
|
-
|
94
|
-
private
|
95
|
-
def detect_type
|
96
|
-
return :index if @column.is_a?(Groonga::IndexColumn)
|
97
|
-
case @column.range
|
98
|
-
when Groonga::Type
|
99
|
-
case @column.range.id
|
100
|
-
when Groonga::Type::INT32
|
101
|
-
:integer
|
102
|
-
when Groonga::Type::UINT32, Groonga::Type::UINT64
|
103
|
-
:unsigned_integer
|
104
|
-
when Groonga::Type::INT64
|
105
|
-
:decimal
|
106
|
-
when Groonga::Type::FLOAT
|
107
|
-
:float
|
108
|
-
when Groonga::Type::TIME
|
109
|
-
:time
|
110
|
-
when Groonga::Type::SHORT_TEXT
|
111
|
-
:string
|
112
|
-
when Groonga::Type::TEXT, Groonga::Type::LONG_TEXT
|
113
|
-
:text
|
114
|
-
else
|
115
|
-
:string
|
116
|
-
end
|
117
|
-
when Groonga::Table
|
118
|
-
:references
|
119
|
-
else
|
120
|
-
:string
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
class IdColumn < Column
|
126
|
-
def initialize(table)
|
127
|
-
@column = nil
|
128
|
-
@table = table
|
129
|
-
@name = "id"
|
130
|
-
@type = :unsigned_integer
|
131
|
-
end
|
132
|
-
|
133
|
-
def id?
|
134
|
-
true
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|