utusemi 0.0.2 → 0.0.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0de35704b1f48b29fd9b17d6cfcde7b3a4b58dae
4
- data.tar.gz: c45997636abef147456bce3644560253359aed76
3
+ metadata.gz: 80ebe354ddd670b48b24665f4867646aa3dbcbb9
4
+ data.tar.gz: 5d0c5e1b648dfee60d51f54f27cae5b8408a681a
5
5
  SHA512:
6
- metadata.gz: aa10b9e42f0b726d46e0cce55d93fecaede375ef93783dd70d3c6a26b7fda39a4ec25a46f899c4c104dffd7743d69f208c1e1079ec8fdca1752c2ae6ff1cfeb5
7
- data.tar.gz: 274d391ef5645427c30ff4c8911c3b4978c953842161be256ed88dd085974fb1cf5b6c761bb38437b90480dffe0286020be859249b25b0813bc8254b7c37e458
6
+ metadata.gz: c81151427b717334d4dccb4f213c175c759bf56edf9d1a41122a0f4759921c7f67a0f97c13800a73a5ec7c61d45b7f662b55d88328a38fcaf415369f339086e2
7
+ data.tar.gz: 993b5541e62a5f5544a3142e883fb378e782c83a0993908256639cbbf3b5e48b3126d593c381288ada94a90c9ab2e8eaf5c3a82e20f58494654abadba1883efb
@@ -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
@@ -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 eigenclass
51
- class << self; self; end
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
- return super unless current_scope
217
- return super unless current_scope.utusemi_values
218
- return super unless current_scope.utusemi_values[:flag]
219
- super.utusemi(current_scope.utusemi_values[:type], utusemi_values[:options])
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|
@@ -1,3 +1,3 @@
1
1
  module Utusemi
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
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.2
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-15 00:00:00.000000000 Z
11
+ date: 2014-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord