utusemi 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/utusemi.rb +5 -0
- data/lib/utusemi/core.rb +29 -35
- data/lib/utusemi/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 80ebe354ddd670b48b24665f4867646aa3dbcbb9
|
4
|
+
data.tar.gz: 5d0c5e1b648dfee60d51f54f27cae5b8408a681a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c81151427b717334d4dccb4f213c175c759bf56edf9d1a41122a0f4759921c7f67a0f97c13800a73a5ec7c61d45b7f662b55d88328a38fcaf415369f339086e2
|
7
|
+
data.tar.gz: 993b5541e62a5f5544a3142e883fb378e782c83a0993908256639cbbf3b5e48b3126d593c381288ada94a90c9ab2e8eaf5c3a82e20f58494654abadba1883efb
|
data/lib/utusemi.rb
CHANGED
@@ -17,6 +17,7 @@ module Utusemi
|
|
17
17
|
this.prepend_to_activerecord_relation
|
18
18
|
this.prepend_to_activerecord_eigenclass
|
19
19
|
this.prepend_to_activerecord_associations_hasmanyassociation
|
20
|
+
this.prepend_to_activerecord_associations_collectionproxy
|
20
21
|
end
|
21
22
|
end
|
22
23
|
|
@@ -54,6 +55,10 @@ module Utusemi
|
|
54
55
|
ActiveRecord::Associations::HasManyAssociation.send(:prepend, Core::ActiveRecord::Associations)
|
55
56
|
end
|
56
57
|
|
58
|
+
def prepend_to_activerecord_associations_collectionproxy
|
59
|
+
ActiveRecord::Associations::CollectionProxy.send(:prepend, Core::ActiveRecord::CollectionProxy) if Rails::VERSION::MAJOR == 3
|
60
|
+
end
|
61
|
+
|
57
62
|
private
|
58
63
|
|
59
64
|
def activerecord_eigenclass
|
data/lib/utusemi/core.rb
CHANGED
@@ -27,6 +27,7 @@ module Utusemi
|
|
27
27
|
utusemi_values[:flag] = obj ? true : false
|
28
28
|
utusemi_values[:type] = obj.to_sym if obj.class.in? [Symbol, String]
|
29
29
|
utusemi_values[:options] = options
|
30
|
+
warning_checker unless Rails.env.production?
|
30
31
|
self
|
31
32
|
end
|
32
33
|
|
@@ -47,8 +48,11 @@ module Utusemi
|
|
47
48
|
utusemi_column_names(index).invert[column_name.to_sym] || column_name
|
48
49
|
end
|
49
50
|
|
50
|
-
def
|
51
|
-
|
51
|
+
def warning_checker
|
52
|
+
utusemi_column_names.each do |new_column_name, origin_column_name|
|
53
|
+
return if new_column_name != origin_column_name
|
54
|
+
Rails.logger.warn "[Utusemi:WARNING] \"#{new_column_name}\" is duplicated in map(:#{utusemi_values[:type]})."
|
55
|
+
end
|
52
56
|
end
|
53
57
|
end
|
54
58
|
|
@@ -77,16 +81,6 @@ module Utusemi
|
|
77
81
|
super.tap { utusemi_columns_mapper if obj.class.in? [Symbol, String] }
|
78
82
|
end
|
79
83
|
|
80
|
-
def utusemi_columns_mapper
|
81
|
-
utusemi_column_names.keys.each do |column_name|
|
82
|
-
# alias_attributeと同じことを、対象カラム名を動的に変更して行う
|
83
|
-
define_getter_method(column_name)
|
84
|
-
define_setter_method(column_name)
|
85
|
-
define_predicate_method(column_name)
|
86
|
-
define_was_method(column_name)
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
84
|
def changed
|
91
85
|
return super unless utusemi_values[:flag]
|
92
86
|
super + super.map { |column_name| unmapped_utusemi_column_name(column_name).to_s }
|
@@ -94,6 +88,17 @@ module Utusemi
|
|
94
88
|
|
95
89
|
private
|
96
90
|
|
91
|
+
def utusemi_columns_mapper
|
92
|
+
utusemi_column_names.each_pair do |new_column_name, origin_column_name|
|
93
|
+
next if new_column_name == origin_column_name
|
94
|
+
# alias_attributeと同じことを、対象カラム名を動的に変更して行う
|
95
|
+
define_getter_method(new_column_name)
|
96
|
+
define_setter_method(new_column_name)
|
97
|
+
define_predicate_method(new_column_name)
|
98
|
+
define_was_method(new_column_name)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
97
102
|
def define_getter_method(column_name)
|
98
103
|
target_column_name = mapped_utusemi_column_name(column_name)
|
99
104
|
define_singleton_method(column_name) { send target_column_name }
|
@@ -148,10 +153,6 @@ module Utusemi
|
|
148
153
|
module QueryMethods
|
149
154
|
include Utusemi::Core::Base
|
150
155
|
|
151
|
-
def utusemi!(obj = nil, options = {})
|
152
|
-
super.tap { warning_checker unless Rails.env.production? }
|
153
|
-
end
|
154
|
-
|
155
156
|
def build_where(opts = :chain, *rest)
|
156
157
|
return super unless utusemi_values[:flag]
|
157
158
|
if utusemi_values[:options][:times]
|
@@ -192,13 +193,6 @@ module Utusemi
|
|
192
193
|
end
|
193
194
|
string
|
194
195
|
end
|
195
|
-
|
196
|
-
def warning_checker
|
197
|
-
utusemi_column_names.each do |old_column_name, new_column_name|
|
198
|
-
return if old_column_name != new_column_name
|
199
|
-
Rails.logger.warn "[Utusemi:WARNING] #{old_column_name} is duplicated in Utusemi::Engine.config.#{utusemi_values[:type]}_columns."
|
200
|
-
end
|
201
|
-
end
|
202
196
|
end
|
203
197
|
|
204
198
|
# Rails 3.x で scope に対してのカラムマッピングが正常に動作するようにするためのもの
|
@@ -213,10 +207,18 @@ module Utusemi
|
|
213
207
|
#
|
214
208
|
module RelationMethod
|
215
209
|
def relation(*args, &block)
|
216
|
-
|
217
|
-
return super unless
|
218
|
-
|
219
|
-
|
210
|
+
utusemi_values = current_scope.try(:utusemi_values) || {}
|
211
|
+
return super unless utusemi_values[:flag]
|
212
|
+
super.utusemi(utusemi_values[:type], utusemi_values[:options])
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
module CollectionProxy
|
217
|
+
def scoped(*args, &block)
|
218
|
+
association = @association
|
219
|
+
utusemi_values = association.truthly_owner.utusemi_values
|
220
|
+
return super unless utusemi_values[:flag]
|
221
|
+
super.utusemi!(association.klass.model_name.singular, utusemi_values[:options])
|
220
222
|
end
|
221
223
|
end
|
222
224
|
|
@@ -343,18 +345,10 @@ module Utusemi
|
|
343
345
|
scope = args.shift
|
344
346
|
check_deplicated_association_warning(association_type, name, scope)
|
345
347
|
utusemi_flag = scope.try(:delete, :utusemi)
|
346
|
-
scope = utusemi_association_scope(association_type, name, scope) if utusemi_flag
|
347
348
|
yield name, scope, *args if !utusemi_flag || !method_defined?(name)
|
348
349
|
define_utusemi_association_reader(name, utusemi_flag => true)
|
349
350
|
end
|
350
351
|
|
351
|
-
def utusemi_association_scope(method_name, name, scope)
|
352
|
-
utusemi_map = Utusemi.config.map(name.to_s.singularize)
|
353
|
-
default_scope = { class_name: utusemi_map.class_name }
|
354
|
-
default_scope[:foreign_key] = utusemi_map.foreign_key if method_name == :belongs_to
|
355
|
-
default_scope.merge(scope)
|
356
|
-
end
|
357
|
-
|
358
352
|
def define_utusemi_association_reader(name, options = {})
|
359
353
|
return if method_defined?("#{name}_with_utusemi")
|
360
354
|
define_method "#{name}_with_utusemi" do |*args|
|
data/lib/utusemi/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: utusemi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- YOSHIDA Hiroki
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|