custom_fields 2.3.4 → 2.4.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.textile +1 -1
- data/lib/custom_fields.rb +3 -1
- data/lib/custom_fields/extensions/mongoid/factory.rb +3 -4
- data/lib/custom_fields/extensions/mongoid/fields/i18n.rb +5 -9
- data/lib/custom_fields/extensions/mongoid/relations/referenced/in.rb +0 -6
- data/lib/custom_fields/extensions/mongoid/relations/referenced/many.rb +5 -10
- data/lib/custom_fields/extensions/mongoid/validations/collection_size.rb +1 -1
- data/lib/custom_fields/extensions/mongoid/validations/macros.rb +2 -2
- data/lib/custom_fields/field.rb +3 -2
- data/lib/custom_fields/source.rb +7 -10
- data/lib/custom_fields/types/file.rb +1 -19
- data/lib/custom_fields/types/has_many.rb +2 -17
- data/lib/custom_fields/types/many_to_many.rb +2 -10
- data/lib/custom_fields/types/money.rb +26 -26
- data/lib/custom_fields/types/select.rb +1 -1
- data/lib/custom_fields/version.rb +1 -1
- metadata +27 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0691b611ee56693347828a7d7c2d5e831d4bfdf4
|
4
|
+
data.tar.gz: 58c48324ef9366f1d1a36876bc0239c212bf5378
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 377cdb5985891770d23ec1f76a0bf6a93057c5ef31c5687b0c743b253f591f34ac2c728f26ca7e46ea2634723b2439ad2cbcfd78e5ad310ea50bd307a3fc512b
|
7
|
+
data.tar.gz: cf70d24c170faa1f6c27c864fcf06cf0f2a3ac5ce2bf7accad0d9e1bf22cd6967872a5df2c7bfe546b3cf8f69ae5becfb67c34e03e979ec6742ca9406e3b3532
|
data/README.textile
CHANGED
data/lib/custom_fields.rb
CHANGED
@@ -4,10 +4,12 @@ require 'active_support'
|
|
4
4
|
require 'carrierwave/mongoid'
|
5
5
|
require 'money'
|
6
6
|
|
7
|
+
Money.use_i18n = false
|
8
|
+
|
7
9
|
module CustomFields
|
8
10
|
|
9
11
|
@@options = {
|
10
|
-
reserved_names: Mongoid.destructive_fields + %w(id _id send class),
|
12
|
+
reserved_names: Mongoid.destructive_fields + %w(id _id send class destroy),
|
11
13
|
default_currency: 'EUR'
|
12
14
|
}
|
13
15
|
|
@@ -4,17 +4,16 @@ module Mongoid #:nodoc:
|
|
4
4
|
# Instantiates documents that came from the database.
|
5
5
|
module Factory
|
6
6
|
|
7
|
-
def from_db_with_custom_fields(klass, attributes =
|
7
|
+
def from_db_with_custom_fields(klass, attributes = nil, selected_fields = nil)
|
8
8
|
if klass.with_custom_fields?
|
9
9
|
klass.klass_with_custom_fields(attributes['custom_fields_recipe'])
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
|
+
from_db_without_custom_fields(klass, attributes, selected_fields)
|
12
13
|
end
|
13
14
|
|
14
15
|
# equivalent for "alias_method_chain :from_db, :custom_fields"
|
15
16
|
alias_method :from_db_without_custom_fields, :from_db unless method_defined?(:from_db_without_custom_fields)
|
16
17
|
alias_method :from_db, :from_db_with_custom_fields
|
17
|
-
|
18
18
|
end
|
19
|
-
|
20
19
|
end
|
@@ -20,10 +20,10 @@ module Mongoid #:nodoc
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def self.fallbacks
|
23
|
-
if
|
24
|
-
self.instance.fallbacks
|
25
|
-
elsif ::I18n.respond_to?(:fallbacks)
|
23
|
+
if ::I18n.respond_to?(:fallbacks)
|
26
24
|
::I18n.fallbacks
|
25
|
+
elsif !self.instance.fallbacks.blank?
|
26
|
+
self.instance.fallbacks
|
27
27
|
else
|
28
28
|
nil
|
29
29
|
end
|
@@ -35,11 +35,7 @@ module Mongoid #:nodoc
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def self.fallbacks?
|
38
|
-
!self.instance.fallbacks.blank?
|
39
|
-
end
|
40
|
-
|
41
|
-
def self.clear_fallbacks
|
42
|
-
self.instance.fallbacks.try(:clear)
|
38
|
+
::I18n.respond_to?(:fallbacks) || !self.instance.fallbacks.blank?
|
43
39
|
end
|
44
40
|
|
45
41
|
def self.with_locale(new_locale = nil)
|
@@ -56,4 +52,4 @@ module Mongoid #:nodoc
|
|
56
52
|
|
57
53
|
end
|
58
54
|
|
59
|
-
end
|
55
|
+
end
|
@@ -4,19 +4,13 @@ module Mongoid # :nodoc:
|
|
4
4
|
module Referenced #:nodoc:
|
5
5
|
|
6
6
|
class In < Relations::One
|
7
|
-
|
8
7
|
class << self
|
9
|
-
|
10
8
|
def valid_options_with_parent_class
|
11
9
|
valid_options_without_parent_class.push :custom_fields_parent_klass
|
12
10
|
end
|
13
|
-
|
14
11
|
alias_method_chain :valid_options, :parent_class
|
15
|
-
|
16
12
|
end
|
17
|
-
|
18
13
|
end
|
19
|
-
|
20
14
|
end
|
21
15
|
end
|
22
16
|
end
|
@@ -7,22 +7,17 @@ module Mongoid #:nodoc:
|
|
7
7
|
# one-to-many between documents in different collections.
|
8
8
|
class Many < Relations::Many
|
9
9
|
|
10
|
-
def build_with_custom_fields(attributes = {},
|
11
|
-
if base.respond_to?(:custom_fields_for?) && base.custom_fields_for?(
|
10
|
+
def build_with_custom_fields(attributes = {}, type = nil)
|
11
|
+
if base.respond_to?(:custom_fields_for?) && base.custom_fields_for?(relation_metadata.name)
|
12
12
|
# all the information about how to build the custom class are stored here
|
13
|
-
recipe = base.custom_fields_recipe_for(
|
14
|
-
|
13
|
+
recipe = base.custom_fields_recipe_for(relation_metadata.name)
|
15
14
|
attributes ||= {}
|
16
|
-
|
17
15
|
attributes.merge!(custom_fields_recipe: recipe)
|
18
|
-
|
19
16
|
# build the class with custom_fields for the first time
|
20
|
-
type =
|
17
|
+
type = relation_metadata.klass.klass_with_custom_fields(recipe)
|
21
18
|
end
|
22
|
-
build_without_custom_fields(attributes,
|
23
|
-
|
19
|
+
build_without_custom_fields(attributes, type)
|
24
20
|
end
|
25
|
-
|
26
21
|
alias_method_chain :build, :custom_fields
|
27
22
|
|
28
23
|
# new should point to the new build method
|
@@ -13,7 +13,7 @@ module Mongoid
|
|
13
13
|
#
|
14
14
|
# validates_collection_size_of :addresses, in: 1..10
|
15
15
|
# end
|
16
|
-
class CollectionSizeValidator < LengthValidator
|
16
|
+
class CollectionSizeValidator < Mongoid::Validatable::LengthValidator
|
17
17
|
|
18
18
|
def validate_each_with_collection(record, attribute, value)
|
19
19
|
value = collection_to_size(record, attribute)
|
data/lib/custom_fields/field.rb
CHANGED
@@ -27,7 +27,7 @@ module CustomFields
|
|
27
27
|
validates_presence_of :label, :type
|
28
28
|
validates_exclusion_of :name, in: lambda { |f| CustomFields.options[:reserved_names].map(&:to_s) }
|
29
29
|
validates_inclusion_of :type, in: AVAILABLE_TYPES, allow_blank: true
|
30
|
-
validates_format_of :name, with: /^[a-z]([A-Za-z0-9_]+)
|
30
|
+
validates_format_of :name, with: /^[a-z]([A-Za-z0-9_]+)?$/, multiline: true
|
31
31
|
validate :uniqueness_of_label_and_name
|
32
32
|
|
33
33
|
## callbacks ##
|
@@ -98,7 +98,8 @@ module CustomFields
|
|
98
98
|
end
|
99
99
|
|
100
100
|
def siblings
|
101
|
-
|
101
|
+
# binding.pry
|
102
|
+
self._parent.send(self.relation_metadata.name)
|
102
103
|
end
|
103
104
|
|
104
105
|
end
|
data/lib/custom_fields/source.rb
CHANGED
@@ -36,7 +36,7 @@ module CustomFields
|
|
36
36
|
def klass_with_custom_fields(name)
|
37
37
|
# Rails.logger.debug "[CustomFields] klass_with_custom_fields #{self.send(name).metadata.klass} / #{self.send(name).metadata[:old_klass]}" if defined?(Rails) # DEBUG
|
38
38
|
recipe = self.custom_fields_recipe_for(name)
|
39
|
-
_metadata = self.send(name).
|
39
|
+
_metadata = self.send(name).relation_metadata
|
40
40
|
target = _metadata[:original_klass] || _metadata.klass # avoid to use an already enhanced klass
|
41
41
|
target.klass_with_custom_fields(recipe)
|
42
42
|
end
|
@@ -66,7 +66,7 @@ module CustomFields
|
|
66
66
|
'name' => "#{self.relations[name.to_s].class_name.demodulize}#{self._id}",
|
67
67
|
'rules' => self.ordered_custom_fields(name).map(&:to_recipe),
|
68
68
|
'version' => self.custom_fields_version(name),
|
69
|
-
'model_name' => self.relations[name.to_s].class_name.constantize.model_name
|
69
|
+
'model_name' => self.relations[name.to_s].class_name.constantize.model_name.to_s
|
70
70
|
}
|
71
71
|
end
|
72
72
|
|
@@ -98,13 +98,13 @@ module CustomFields
|
|
98
98
|
def refresh_metadata_with_custom_fields(name)
|
99
99
|
return if !self.persisted? || self.send(:"#{name}_custom_fields").blank? # do not generate a klass without all the information
|
100
100
|
|
101
|
-
old_metadata = self.send(name).
|
101
|
+
old_metadata = self.send(name).relation_metadata
|
102
102
|
|
103
103
|
# puts "old_metadata = #{old_metadata.klass.inspect} / #{old_metadata.object_id.inspect}" # DEBUG
|
104
104
|
|
105
105
|
# puts "[CustomFields] refresh_metadata_with_custom_fields, #{name.inspect}, self = #{self.inspect}"
|
106
106
|
|
107
|
-
self.send(name).
|
107
|
+
self.send(name).__metadata = old_metadata.clone.tap do |metadata|
|
108
108
|
# Rails.logger.debug "[CustomFields] refresh_metadata_with_custom_fields #{metadata.klass}" if defined?(Rails) # DEBUG
|
109
109
|
|
110
110
|
# backup the current klass
|
@@ -172,12 +172,9 @@ module CustomFields
|
|
172
172
|
operations['$set'].merge!({ 'custom_fields_recipe.version' => self.custom_fields_version(name) })
|
173
173
|
collection, selector = self.send(name).collection, self.send(name).criteria.selector
|
174
174
|
|
175
|
-
#
|
176
|
-
|
177
|
-
|
178
|
-
_operations = { "$#{operation_name}" => operations.delete("$#{operation_name}") }
|
179
|
-
collection.find(selector).update _operations, multi: true
|
180
|
-
end
|
175
|
+
# puts "selector = #{selector.inspect}, memo = #{attributes.inspect}" # DEBUG
|
176
|
+
|
177
|
+
collection.find(selector).update operations, multi: true
|
181
178
|
end
|
182
179
|
|
183
180
|
# If the localized attribute has been changed in at least one of the custom fields,
|
@@ -27,11 +27,7 @@ module CustomFields
|
|
27
27
|
end
|
28
28
|
|
29
29
|
if rule['required']
|
30
|
-
|
31
|
-
# but it didn't work well with localized fields.
|
32
|
-
klass.validate do |object|
|
33
|
-
UploaderPresenceValidator.new(object, name).validate
|
34
|
-
end
|
30
|
+
klass.validates_presence_of name
|
35
31
|
end
|
36
32
|
end
|
37
33
|
|
@@ -68,20 +64,6 @@ module CustomFields
|
|
68
64
|
|
69
65
|
end
|
70
66
|
|
71
|
-
class UploaderPresenceValidator
|
72
|
-
|
73
|
-
def initialize(document, name)
|
74
|
-
@document, @name = document, name
|
75
|
-
end
|
76
|
-
|
77
|
-
def validate
|
78
|
-
if @document.send(@name).blank?
|
79
|
-
@document.errors.add(@name, :blank)
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
end
|
84
|
-
|
85
67
|
class FileUploader < ::CarrierWave::Uploader::Base
|
86
68
|
end
|
87
69
|
|
@@ -1,11 +1,7 @@
|
|
1
1
|
module CustomFields
|
2
|
-
|
3
2
|
module Types
|
4
|
-
|
5
3
|
module HasMany
|
6
|
-
|
7
4
|
module Field
|
8
|
-
|
9
5
|
extend ActiveSupport::Concern
|
10
6
|
|
11
7
|
included do
|
@@ -17,15 +13,11 @@ module CustomFields
|
|
17
13
|
def has_many_is_relationship?
|
18
14
|
self.type == 'has_many'
|
19
15
|
end
|
20
|
-
|
21
16
|
end
|
22
|
-
|
23
17
|
end
|
24
18
|
|
25
19
|
module Target
|
26
|
-
|
27
20
|
extend ActiveSupport::Concern
|
28
|
-
|
29
21
|
module ClassMethods
|
30
22
|
|
31
23
|
# Adds a has_many relationship between 2 mongoid models
|
@@ -34,7 +26,7 @@ module CustomFields
|
|
34
26
|
# @param [ Hash ] rule It contains the name of the relation and if it is required or not
|
35
27
|
#
|
36
28
|
def apply_has_many_custom_field(klass, rule)
|
37
|
-
# puts "#{klass.inspect}.has_many #{rule['name'].inspect}, class_name: #{rule['class_name'].inspect}, inverse_of: #{rule['inverse_of']}
|
29
|
+
# puts "#{klass.inspect}.has_many #{rule['name'].inspect}, class_name: #{rule['class_name'].inspect}, inverse_of: #{rule['inverse_of']}" # DEBUG
|
38
30
|
position_name = "position_in_#{rule['inverse_of']}"
|
39
31
|
|
40
32
|
_order_by = rule['order_by'] || position_name.to_sym.asc
|
@@ -48,12 +40,10 @@ module CustomFields
|
|
48
40
|
if order_by
|
49
41
|
list.order_by(order_by)
|
50
42
|
else
|
51
|
-
list.order_by(
|
43
|
+
list.order_by(relation_metadata.order)
|
52
44
|
end
|
53
45
|
end
|
54
|
-
|
55
46
|
alias :ordered :filtered # backward compatibility + semantic purpose
|
56
|
-
|
57
47
|
end
|
58
48
|
|
59
49
|
klass.accepts_nested_attributes_for rule['name'], allow_destroy: true
|
@@ -62,13 +52,8 @@ module CustomFields
|
|
62
52
|
klass.validates_collection_size_of rule['name'], minimum: 1, message: :at_least_one_element, on: :update
|
63
53
|
end
|
64
54
|
end
|
65
|
-
|
66
55
|
end
|
67
|
-
|
68
56
|
end
|
69
|
-
|
70
57
|
end
|
71
|
-
|
72
58
|
end
|
73
|
-
|
74
59
|
end
|
@@ -1,15 +1,10 @@
|
|
1
1
|
module CustomFields
|
2
|
-
|
3
2
|
module Types
|
4
|
-
|
5
3
|
module ManyToMany
|
6
|
-
|
7
4
|
module Field
|
8
|
-
|
9
5
|
extend ActiveSupport::Concern
|
10
6
|
|
11
7
|
included do
|
12
|
-
|
13
8
|
def many_to_many_to_recipe
|
14
9
|
{ 'class_name' => self.class_name, 'inverse_of' => self.inverse_of, 'order_by' => self.order_by }
|
15
10
|
end
|
@@ -17,13 +12,10 @@ module CustomFields
|
|
17
12
|
def many_to_many_is_relationship?
|
18
13
|
self.type == 'many_to_many'
|
19
14
|
end
|
20
|
-
|
21
15
|
end
|
22
|
-
|
23
16
|
end
|
24
17
|
|
25
18
|
module Target
|
26
|
-
|
27
19
|
extend ActiveSupport::Concern
|
28
20
|
|
29
21
|
module ClassMethods
|
@@ -50,7 +42,7 @@ module CustomFields
|
|
50
42
|
else
|
51
43
|
# use the natural order given by the initial array (ex: project_ids).
|
52
44
|
# Warning: it returns an array and not a criteria object meaning it breaks the chain
|
53
|
-
ids = base.send(
|
45
|
+
ids = base.send(relation_metadata.key.to_sym)
|
54
46
|
list.entries.sort { |a, b| ids.index(a.id) <=> ids.index(b.id) }
|
55
47
|
end
|
56
48
|
end
|
@@ -72,4 +64,4 @@ module CustomFields
|
|
72
64
|
|
73
65
|
end
|
74
66
|
|
75
|
-
end
|
67
|
+
end
|
@@ -21,7 +21,7 @@ module CustomFields
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def check_currency
|
24
|
-
::Money::Currency.find(
|
24
|
+
::Money::Currency.find(self.default_currency)
|
25
25
|
end
|
26
26
|
|
27
27
|
end # included
|
@@ -71,18 +71,18 @@ module CustomFields
|
|
71
71
|
klass.field names[:currency_field], type: ::String, localize: false
|
72
72
|
|
73
73
|
# getters and setters
|
74
|
-
klass.send(
|
75
|
-
klass.send(
|
74
|
+
klass.send(:define_method, name) { _get_money(names) }
|
75
|
+
klass.send(:define_method, :"#{name}=") { |value| _set_money(value, names) }
|
76
76
|
|
77
|
-
klass.send(
|
78
|
-
klass.send(
|
77
|
+
klass.send(:define_method, names[:formatted_name_field]) { _get_formatted_money(names) }
|
78
|
+
klass.send(:define_method, :"#{names[:formatted_name_field]}=") { |value| _set_money(value, names) }
|
79
79
|
|
80
|
-
klass.send(
|
81
|
-
klass.send(
|
80
|
+
klass.send(:define_method, names[:allow_currency_from_symbol]) { rule['allow_currency_from_symbol'] }
|
81
|
+
klass.send(:define_method, names[:default_currency]) { rule['default_currency'] }
|
82
82
|
|
83
83
|
# validations
|
84
|
-
klass.validate { _check_money(
|
85
|
-
klass.validates_presence_of(
|
84
|
+
klass.validate { _check_money(names) } if rule['required']
|
85
|
+
klass.validates_presence_of(names[:cents_field], names[:currency_field]) if rule['required']
|
86
86
|
klass.validates_numericality_of names[:cents_field], only_integer: true, if: names[:cents_field]
|
87
87
|
|
88
88
|
end
|
@@ -106,38 +106,38 @@ module CustomFields
|
|
106
106
|
|
107
107
|
protected
|
108
108
|
|
109
|
-
def _set_money_defaults(
|
110
|
-
::Money.assume_from_symbol = self.send(
|
111
|
-
::Money.default_currency = self.send(
|
109
|
+
def _set_money_defaults(names)
|
110
|
+
::Money.assume_from_symbol = self.send(names[:allow_currency_from_symbol])
|
111
|
+
::Money.default_currency = self.send(names[:default_currency])
|
112
112
|
end
|
113
113
|
|
114
|
-
def _get_money(
|
115
|
-
_set_money_defaults(
|
116
|
-
::Money.new(
|
114
|
+
def _get_money(names)
|
115
|
+
_set_money_defaults(names)
|
116
|
+
::Money.new(self.read_attribute(names[:cents_field]), self.read_attribute(names[:currency_field]) || ::Money.default_currency)
|
117
117
|
end
|
118
118
|
|
119
|
-
def _check_money(
|
119
|
+
def _check_money(names)
|
120
120
|
if [nil, ''].include? self.read_attribute.names[:cents_field]
|
121
121
|
raise ArgumentError.new 'Unrecognized amount'
|
122
122
|
end
|
123
|
-
_get_money(
|
123
|
+
_get_money(names)
|
124
124
|
rescue
|
125
|
-
self.errors.add(
|
125
|
+
self.errors.add(names[:name], "#{$!}")
|
126
126
|
false
|
127
127
|
end
|
128
128
|
|
129
|
-
def _set_money(
|
129
|
+
def _set_money(_money, names)
|
130
130
|
return if _money.blank?
|
131
|
-
_set_money_defaults(
|
132
|
-
money = _money.kind_of?(
|
133
|
-
self.write_attribute(
|
134
|
-
self.write_attribute(
|
131
|
+
_set_money_defaults(names)
|
132
|
+
money = _money.kind_of?(Money) ? _money : ::Money.parse(_money)
|
133
|
+
self.write_attribute(names[:cents_field], money.cents)
|
134
|
+
self.write_attribute(names[:currency_field], money.currency.iso_code)
|
135
135
|
rescue
|
136
|
-
self.errors.add(
|
136
|
+
self.errors.add(names[:name], "#{$!}")
|
137
137
|
end
|
138
138
|
|
139
|
-
def _get_formatted_money(
|
140
|
-
_get_money(
|
139
|
+
def _get_formatted_money(names)
|
140
|
+
_get_money(names).format(symbol: self.send(names[:allow_currency_from_symbol]), no_cents_if_whole: true) rescue nil
|
141
141
|
end
|
142
142
|
|
143
143
|
end
|
@@ -67,7 +67,7 @@ module CustomFields
|
|
67
67
|
def apply_select_custom_field(klass, rule)
|
68
68
|
name, base_collection_name = rule['name'], "#{rule['name']}_options".to_sym
|
69
69
|
|
70
|
-
klass.field :"#{name}_id", type:
|
70
|
+
klass.field :"#{name}_id", type: BSON::ObjectId, localize: rule['localized'] || false
|
71
71
|
|
72
72
|
klass.cattr_accessor "_raw_#{base_collection_name}"
|
73
73
|
klass.send :"_raw_#{base_collection_name}=", rule['select_options'].sort { |a, b| a['position'] <=> b['position'] }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: custom_fields
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Didier Lafforgue
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mongoid
|
@@ -16,56 +16,56 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 4.0.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
|
-
version:
|
26
|
+
version: 4.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activesupport
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 4.0.8
|
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
|
-
version:
|
40
|
+
version: 4.0.8
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: carrierwave-mongoid
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: '0.7'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: '0.7'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: money
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 5.1.1
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 5.1.1
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: yard
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,14 +100,28 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '2.
|
103
|
+
version: '2.99'
|
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
|
-
version: '2.
|
110
|
+
version: '2.99'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rspec-its
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 1.0.1
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 1.0.1
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: simplecov
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -235,7 +249,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
235
249
|
version: 1.3.6
|
236
250
|
requirements: []
|
237
251
|
rubyforge_project: nowarning
|
238
|
-
rubygems_version: 2.2.
|
252
|
+
rubygems_version: 2.2.2
|
239
253
|
signing_key:
|
240
254
|
specification_version: 4
|
241
255
|
summary: Custom fields extension for Mongoid
|