custom_fields 2.3.4 → 2.4.0.rc1
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 +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
|