mobility 0.3.6 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGELOG.md +21 -0
- data/Gemfile +11 -9
- data/Gemfile.lock +9 -6
- data/README.md +50 -16
- data/lib/mobility.rb +18 -4
- data/lib/mobility/active_record.rb +14 -7
- data/lib/mobility/active_record/uniqueness_validator.rb +17 -3
- data/lib/mobility/attributes.rb +39 -16
- data/lib/mobility/backends/active_record/column/query_methods.rb +12 -11
- data/lib/mobility/backends/active_record/container.rb +116 -0
- data/lib/mobility/backends/active_record/container/query_methods.rb +31 -0
- data/lib/mobility/backends/active_record/hstore/query_methods.rb +7 -54
- data/lib/mobility/backends/active_record/jsonb/query_methods.rb +5 -55
- data/lib/mobility/backends/active_record/key_value.rb +13 -9
- data/lib/mobility/backends/active_record/key_value/query_methods.rb +6 -6
- data/lib/mobility/backends/active_record/pg_query_methods.rb +115 -0
- data/lib/mobility/backends/active_record/query_methods.rb +4 -3
- data/lib/mobility/backends/active_record/serialized/query_methods.rb +6 -5
- data/lib/mobility/backends/active_record/table.rb +18 -3
- data/lib/mobility/backends/active_record/table/query_methods.rb +25 -14
- data/lib/mobility/backends/container.rb +25 -0
- data/lib/mobility/backends/hash_valued.rb +2 -2
- data/lib/mobility/backends/null.rb +2 -2
- data/lib/mobility/backends/sequel/column.rb +2 -2
- data/lib/mobility/backends/sequel/column/query_methods.rb +2 -2
- data/lib/mobility/backends/sequel/container.rb +99 -0
- data/lib/mobility/backends/sequel/container/query_methods.rb +41 -0
- data/lib/mobility/backends/sequel/hstore/query_methods.rb +17 -3
- data/lib/mobility/backends/sequel/jsonb/query_methods.rb +17 -3
- data/lib/mobility/backends/sequel/key_value.rb +2 -1
- data/lib/mobility/backends/sequel/key_value/query_methods.rb +2 -2
- data/lib/mobility/backends/sequel/pg_hash.rb +4 -7
- data/lib/mobility/backends/sequel/pg_query_methods.rb +85 -0
- data/lib/mobility/backends/sequel/query_methods.rb +4 -3
- data/lib/mobility/backends/sequel/serialized/query_methods.rb +4 -3
- data/lib/mobility/backends/sequel/table.rb +1 -1
- data/lib/mobility/backends/sequel/table/query_methods.rb +2 -2
- data/lib/mobility/backends/serialized.rb +5 -7
- data/lib/mobility/configuration.rb +34 -4
- data/lib/mobility/plugins/active_record/dirty.rb +1 -1
- data/lib/mobility/plugins/fallbacks.rb +20 -6
- data/lib/mobility/sequel/column_changes.rb +2 -5
- data/lib/mobility/sequel/hash_initializer.rb +19 -0
- data/lib/mobility/util.rb +0 -2
- data/lib/mobility/version.rb +1 -1
- metadata +11 -4
- metadata.gz.sig +0 -0
- data/lib/mobility/backends/sequel/postgres_query_methods.rb +0 -41
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'mobility/backends/sequel/
|
1
|
+
require 'mobility/backends/sequel/pg_query_methods'
|
2
2
|
require "mobility/backends/sequel/query_methods"
|
3
3
|
|
4
4
|
Sequel.extension :pg_json, :pg_json_ops
|
@@ -6,12 +6,12 @@ Sequel.extension :pg_json, :pg_json_ops
|
|
6
6
|
module Mobility
|
7
7
|
module Backends
|
8
8
|
class Sequel::Jsonb::QueryMethods < Sequel::QueryMethods
|
9
|
-
include
|
9
|
+
include Sequel::PgQueryMethods
|
10
10
|
|
11
11
|
def initialize(attributes, _)
|
12
12
|
super
|
13
13
|
|
14
|
-
define_query_methods
|
14
|
+
define_query_methods
|
15
15
|
|
16
16
|
attributes.each do |attribute|
|
17
17
|
define_method :"first_by_#{attribute}" do |value|
|
@@ -20,6 +20,20 @@ module Mobility
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def contains_value(key, value, locale)
|
27
|
+
build_op(key).contains({ locale => value }.to_json)
|
28
|
+
end
|
29
|
+
|
30
|
+
def has_locale(key, locale)
|
31
|
+
build_op(key).has_key?(locale)
|
32
|
+
end
|
33
|
+
|
34
|
+
def build_op(key)
|
35
|
+
::Sequel.pg_jsonb_op(key)
|
36
|
+
end
|
23
37
|
end
|
24
38
|
end
|
25
39
|
end
|
@@ -3,6 +3,7 @@ require "mobility/util"
|
|
3
3
|
require "mobility/backends/sequel"
|
4
4
|
require "mobility/backends/key_value"
|
5
5
|
require "mobility/sequel/column_changes"
|
6
|
+
require "mobility/sequel/hash_initializer"
|
6
7
|
require "mobility/sequel/string_translation"
|
7
8
|
require "mobility/sequel/text_translation"
|
8
9
|
|
@@ -82,7 +83,7 @@ Implements the {Mobility::Backends::KeyValue} backend for Sequel models.
|
|
82
83
|
end
|
83
84
|
include callback_methods
|
84
85
|
|
85
|
-
include Mobility::Sequel::ColumnChanges.new(attributes)
|
86
|
+
include Mobility::Sequel::ColumnChanges.new(*attributes)
|
86
87
|
|
87
88
|
private
|
88
89
|
|
@@ -36,11 +36,11 @@ module Mobility
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def define_query_methods(association_name)
|
39
|
-
|
39
|
+
q = self
|
40
40
|
|
41
41
|
%w[exclude or where].each do |method_name|
|
42
42
|
define_method method_name do |*conds, &block|
|
43
|
-
if i18n_keys =
|
43
|
+
if i18n_keys = q.extract_attributes(conds.first)
|
44
44
|
cond = conds.first.dup
|
45
45
|
i18n_nulls = i18n_keys.select { |key| cond[key].nil? }
|
46
46
|
i18n_keys.each { |attr| cond[::Sequel[:"#{attr}_#{association_name}"][:value]] = cond.delete(attr) }
|
@@ -27,11 +27,7 @@ jsonb).
|
|
27
27
|
end
|
28
28
|
|
29
29
|
setup do |attributes|
|
30
|
-
|
31
|
-
define_method :initialize_set do |values|
|
32
|
-
attributes.each { |attribute| self[attribute.to_sym] = {} }
|
33
|
-
super(values)
|
34
|
-
end
|
30
|
+
before_validation = Module.new do
|
35
31
|
define_method :before_validation do
|
36
32
|
attributes.each do |attribute|
|
37
33
|
self[attribute.to_sym].delete_if { |_, v| Util.blank?(v) }
|
@@ -39,8 +35,9 @@ jsonb).
|
|
39
35
|
super()
|
40
36
|
end
|
41
37
|
end
|
42
|
-
include
|
43
|
-
include Mobility::Sequel::
|
38
|
+
include before_validation
|
39
|
+
include Mobility::Sequel::HashInitializer.new(*attributes)
|
40
|
+
include Mobility::Sequel::ColumnChanges.new(*attributes)
|
44
41
|
|
45
42
|
plugin :defaults_setter
|
46
43
|
attributes.each { |attribute| default_values[attribute.to_sym] = {} }
|
@@ -0,0 +1,85 @@
|
|
1
|
+
module Mobility
|
2
|
+
module Backends
|
3
|
+
module Sequel
|
4
|
+
=begin
|
5
|
+
|
6
|
+
Defines query methods for Postgres backends. Including class must define two
|
7
|
+
private methods:
|
8
|
+
|
9
|
+
- a private method +contains_value+ which takes a key (column name), value and
|
10
|
+
locale and returns an SQL expression, and checks that the column has the
|
11
|
+
specified value in the specified locale
|
12
|
+
- a private method +has_locale+ which takes a key (column name) and locale, and
|
13
|
+
returns an SQL expression which checks that the column has a value in the
|
14
|
+
locale
|
15
|
+
|
16
|
+
(The +contains_value+ method is implemented slightly differently for hstore and
|
17
|
+
jsonb columns.)
|
18
|
+
|
19
|
+
=end
|
20
|
+
module PgQueryMethods
|
21
|
+
|
22
|
+
# Create query for conditions and translated keys
|
23
|
+
# @note This is a destructive action, it will alter +cond+.
|
24
|
+
#
|
25
|
+
# @param [Hash] cond Hash of attribute/value pairs
|
26
|
+
# @param [Array] keys Translated attribute names
|
27
|
+
# @param [Boolean] invert Invert query, true for +exclude+, false otherwise
|
28
|
+
# @return [Sequel::SQL::Expression] Query expression
|
29
|
+
def create_query!(cond, keys, invert = false)
|
30
|
+
keys.map { |key|
|
31
|
+
values = cond.delete(key)
|
32
|
+
values = [values] unless values.is_a?(Array)
|
33
|
+
values.map { |value| create_query_op(key, value, invert) }.inject(&:|)
|
34
|
+
}.inject(invert ? :| : :&)
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def define_query_methods
|
40
|
+
%w[exclude or where].each do |method_name|
|
41
|
+
define_query_method(method_name)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def define_query_method(method_name)
|
46
|
+
q = self
|
47
|
+
|
48
|
+
define_method method_name do |*cond, &block|
|
49
|
+
if i18n_keys = q.extract_attributes(cond.first)
|
50
|
+
cond = cond.first
|
51
|
+
|
52
|
+
query = q.create_query!(cond, i18n_keys, method_name == "exclude")
|
53
|
+
if method_name == "or"
|
54
|
+
query = ::Sequel.&(cond, query) unless cond.empty?
|
55
|
+
super(query, &block)
|
56
|
+
else
|
57
|
+
super(cond, &block).where(query)
|
58
|
+
end
|
59
|
+
else
|
60
|
+
super(*cond, &block)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def create_query_op(key, value, invert)
|
66
|
+
locale = Mobility.locale.to_s
|
67
|
+
|
68
|
+
if invert
|
69
|
+
has_locale(key, locale) & ~contains_value(key, value, locale)
|
70
|
+
else
|
71
|
+
value.nil? ? ~has_locale(key, locale) : contains_value(key, value, locale)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def contains_value(_key, _value, _locale)
|
76
|
+
raise NotImplementedError
|
77
|
+
end
|
78
|
+
|
79
|
+
def has_locale(_key, _locale)
|
80
|
+
raise NotImplementedError
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -13,9 +13,10 @@ models. For details see backend-specific subclasses.
|
|
13
13
|
# @param [Array<String>] attributes Translated attributes
|
14
14
|
def initialize(attributes, _)
|
15
15
|
@attributes = attributes.map!(&:to_sym)
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
end
|
17
|
+
|
18
|
+
def extract_attributes(cond)
|
19
|
+
cond.is_a?(Hash) && Util.presence(cond.keys & @attributes)
|
19
20
|
end
|
20
21
|
end
|
21
22
|
end
|
@@ -3,13 +3,14 @@ require "mobility/backends/sequel/query_methods"
|
|
3
3
|
module Mobility
|
4
4
|
module Backends
|
5
5
|
class Sequel::Serialized::QueryMethods < Sequel::QueryMethods
|
6
|
+
include Serialized
|
7
|
+
|
6
8
|
def initialize(attributes, _)
|
7
9
|
super
|
8
|
-
|
9
|
-
cond_checker = Backends::Serialized.attr_checker(attributes_extractor)
|
10
|
+
q = self
|
10
11
|
|
11
12
|
define_method :where do |*cond, &block|
|
12
|
-
|
13
|
+
q.check_opts(cond.first) || super(*cond, &block)
|
13
14
|
end
|
14
15
|
end
|
15
16
|
end
|
@@ -83,7 +83,7 @@ Implements the {Mobility::Backends::Table} backend for Sequel models.
|
|
83
83
|
end
|
84
84
|
include callback_methods
|
85
85
|
|
86
|
-
include Mobility::Sequel::ColumnChanges.new(attributes)
|
86
|
+
include Mobility::Sequel::ColumnChanges.new(*attributes)
|
87
87
|
end
|
88
88
|
|
89
89
|
setup_query_methods(QueryMethods)
|
@@ -35,14 +35,14 @@ module Mobility
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def define_query_methods(association_name, translation_class, **)
|
38
|
-
|
38
|
+
q = self
|
39
39
|
|
40
40
|
# See note in AR Table QueryMethods class about limitations of
|
41
41
|
# query methods on translated attributes when searching on nil values.
|
42
42
|
#
|
43
43
|
%w[exclude or where].each do |method_name|
|
44
44
|
define_method method_name do |*conds, &block|
|
45
|
-
if i18n_keys =
|
45
|
+
if i18n_keys = q.extract_attributes(conds.first)
|
46
46
|
cond = conds.first.dup
|
47
47
|
outer_join = method_name == "or" || i18n_keys.all? { |key| cond[key].nil? }
|
48
48
|
i18n_keys.each { |attr| cond[::Sequel[translation_class.table_name][attr]] = cond.delete(attr) }
|
@@ -60,14 +60,12 @@ Format for serialization. Either +:yaml+ (default) or +:json+.
|
|
60
60
|
lambda { |v| JSON.parse(v, symbolize_names: true) }
|
61
61
|
end
|
62
62
|
end
|
63
|
+
end
|
63
64
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
"You cannot query on mobility attributes translated with the Serialized backend (#{keys.join(", ")})."
|
69
|
-
end
|
70
|
-
end
|
65
|
+
def check_opts(opts)
|
66
|
+
if keys = extract_attributes(opts)
|
67
|
+
raise ArgumentError,
|
68
|
+
"You cannot query on mobility attributes translated with the Serialized backend (#{keys.join(", ")})."
|
71
69
|
end
|
72
70
|
end
|
73
71
|
end
|
@@ -45,12 +45,42 @@ Set each option on the default_options hash instead, like this:
|
|
45
45
|
# @return [Array<Symbol>]
|
46
46
|
attr_accessor :plugins
|
47
47
|
|
48
|
-
#
|
48
|
+
# Generate new fallbacks instance
|
49
|
+
# @note This method will call the proc defined in the variable set by the
|
50
|
+
# +fallbacks_generator=+ setter, passing the first argument to its `call`
|
51
|
+
# method. By default the generator returns an instance of
|
52
|
+
# +I18n::Locale::Fallbacks+.
|
53
|
+
# @param fallbacks [Hash] Fallbacks hash passed to generator
|
49
54
|
# @return [I18n::Locale::Fallbacks]
|
55
|
+
def new_fallbacks(fallbacks = {})
|
56
|
+
@fallbacks_generator.call(fallbacks)
|
57
|
+
end
|
58
|
+
|
59
|
+
# Assign proc which, passed a set of fallbacks, returns a default fallbacks
|
60
|
+
# instance. By default this is a proc which takes fallbacks and returns an
|
61
|
+
# instance of +I18n::Locale::Fallbacks+.
|
62
|
+
# @param [Proc] fallbacks generator
|
63
|
+
attr_writer :fallbacks_generator
|
64
|
+
|
65
|
+
# @deprecated Use {#new_fallbacks} instead.
|
50
66
|
def default_fallbacks(fallbacks = {})
|
51
|
-
|
67
|
+
warn %{
|
68
|
+
WARNING: The default_fallbacks configuration getter has been renamed
|
69
|
+
new_fallbacks to avoid confusion. The original method default_fallbacks will be
|
70
|
+
removed in the next major version of Mobility.
|
71
|
+
}
|
72
|
+
new_fallbacks(fallbacks)
|
73
|
+
end
|
74
|
+
|
75
|
+
# @deprecated Use {#fallbacks_generator=} instead.
|
76
|
+
def default_fallbacks=(fallbacks)
|
77
|
+
warn %{
|
78
|
+
WARNING: The default_fallbacks= configuration setter has been renamed
|
79
|
+
fallbacks_generator= to avoid confusion. The original method
|
80
|
+
default_fallbacks= will be removed in the next major version of Mobility.
|
81
|
+
}
|
82
|
+
self.fallbacks_generator = fallbacks
|
52
83
|
end
|
53
|
-
attr_writer :default_fallbacks
|
54
84
|
|
55
85
|
# Default backend to use (can be symbol or actual backend class)
|
56
86
|
# @return [Symbol,Class]
|
@@ -71,7 +101,7 @@ Set each option on the default_options hash instead, like this:
|
|
71
101
|
def initialize
|
72
102
|
@accessor_method = :translates
|
73
103
|
@query_method = :i18n
|
74
|
-
@
|
104
|
+
@fallbacks_generator = lambda { |fallbacks| I18n::Locale::Fallbacks.new(fallbacks) }
|
75
105
|
@default_accessor_locales = lambda { I18n.available_locales }
|
76
106
|
@default_options = Options[{
|
77
107
|
cache: true,
|
@@ -9,7 +9,7 @@ module Mobility
|
|
9
9
|
Dirty tracking for AR models. See {Mobility::Plugins::ActiveModel::Dirty} for
|
10
10
|
details on usage.
|
11
11
|
|
12
|
-
In addition to methods added by {Mobility::Plugins::ActiveModel::
|
12
|
+
In addition to methods added by {Mobility::Plugins::ActiveModel::Dirty}, the
|
13
13
|
AR::Dirty plugin adds support for the following persistence-specific methods
|
14
14
|
(for a model with a translated attribute +title+):
|
15
15
|
- +saved_changes+
|
@@ -8,12 +8,14 @@ Falls back to one or more alternative locales in case no value is defined for a
|
|
8
8
|
given locale.
|
9
9
|
|
10
10
|
For +fallbacks: true+, Mobility will use the value of
|
11
|
-
{Mobility::Configuration#
|
12
|
-
defaults to an instance of +I18n::Locale::Fallbacks+, but can be
|
13
|
-
(see {Mobility::Configuration}).
|
11
|
+
{Mobility::Configuration#new_fallbacks} for the fallbacks instance. This
|
12
|
+
defaults to an instance of +I18n::Locale::Fallbacks+, but can be
|
13
|
+
configured (see {Mobility::Configuration}).
|
14
14
|
|
15
15
|
If a hash is passed to the +fallbacks+ option, a new fallbacks instance will be
|
16
|
-
created for the model with the hash defining additional fallbacks.
|
16
|
+
created for the model with the hash defining additional fallbacks. To set a
|
17
|
+
default value for this hash, use set the value of `default_options[:fallbacks]`
|
18
|
+
in your Mobility configuration (see below).
|
17
19
|
|
18
20
|
In addition, fallbacks are disabled in certain situation. To explicitly disable
|
19
21
|
fallbacks when reading and writing, you can pass the <tt>fallback: false</tt>
|
@@ -102,6 +104,18 @@ the current locale was +nil+.
|
|
102
104
|
post.title_fr
|
103
105
|
#=> nil
|
104
106
|
|
107
|
+
@example Setting default fallbacks across all models
|
108
|
+
Mobility.configure do |config|
|
109
|
+
# ...
|
110
|
+
config.default_options[:fallbacks] = { :'fr' => 'en' }
|
111
|
+
# ...
|
112
|
+
end
|
113
|
+
|
114
|
+
class Post
|
115
|
+
# Post will fallback from French to English by default
|
116
|
+
translates :title, fallbacks: true
|
117
|
+
end
|
118
|
+
|
105
119
|
=end
|
106
120
|
class Fallbacks < Module
|
107
121
|
# Applies fallbacks plugin to attributes.
|
@@ -133,9 +147,9 @@ the current locale was +nil+.
|
|
133
147
|
|
134
148
|
def convert_option_to_fallbacks(option)
|
135
149
|
if option.is_a?(Hash)
|
136
|
-
Mobility.
|
150
|
+
Mobility.new_fallbacks(option)
|
137
151
|
elsif option == true
|
138
|
-
Mobility.
|
152
|
+
Mobility.new_fallbacks
|
139
153
|
else
|
140
154
|
Hash.new { [] }
|
141
155
|
end
|
@@ -8,17 +8,14 @@ setter method is called.
|
|
8
8
|
=end
|
9
9
|
class ColumnChanges < Module
|
10
10
|
# @param [Array<String>] attributes Backend attributes
|
11
|
-
def initialize(attributes)
|
12
|
-
@attributes = attributes
|
13
|
-
|
11
|
+
def initialize(*attributes)
|
14
12
|
attributes.each do |attribute|
|
15
13
|
define_method "#{attribute}=".freeze do |value, **options|
|
16
14
|
if !options[:super] && send(attribute) != value
|
17
15
|
locale = options[:locale] || Mobility.locale
|
18
16
|
column = attribute.to_sym
|
19
17
|
column_with_locale = :"#{attribute}_#{Mobility.normalize_locale(locale)}"
|
20
|
-
@changed_columns
|
21
|
-
@changed_columns << column if !changed_columns.include?(column)
|
18
|
+
@changed_columns = changed_columns | [column, column_with_locale]
|
22
19
|
end
|
23
20
|
super(value, **options)
|
24
21
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Mobility
|
2
|
+
module Sequel
|
3
|
+
=begin
|
4
|
+
|
5
|
+
Internal class used to initialize column value(s) by default to a hash.
|
6
|
+
|
7
|
+
=end
|
8
|
+
class HashInitializer < Module
|
9
|
+
def initialize(*columns)
|
10
|
+
class_eval <<-EOM, __FILE__, __LINE__ + 1
|
11
|
+
def initialize_set(values)
|
12
|
+
#{columns.map { |c| "self[:#{c}] = {}" }.join(';')}
|
13
|
+
super
|
14
|
+
end
|
15
|
+
EOM
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/mobility/util.rb
CHANGED
data/lib/mobility/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mobility
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Salzberg
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
eGDROPZoL5RXwiOnRbexxa7dcAxMrDfGB/hpiunIPWPsi4n5P7K/6OO/sGVMl9xv
|
31
31
|
SZBPXjzrHdyOFLBYXB+PG7s3F/4=
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date:
|
33
|
+
date: 2018-01-24 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: request_store
|
@@ -184,6 +184,8 @@ files:
|
|
184
184
|
- lib/mobility/backends/active_record.rb
|
185
185
|
- lib/mobility/backends/active_record/column.rb
|
186
186
|
- lib/mobility/backends/active_record/column/query_methods.rb
|
187
|
+
- lib/mobility/backends/active_record/container.rb
|
188
|
+
- lib/mobility/backends/active_record/container/query_methods.rb
|
187
189
|
- lib/mobility/backends/active_record/hstore.rb
|
188
190
|
- lib/mobility/backends/active_record/hstore/query_methods.rb
|
189
191
|
- lib/mobility/backends/active_record/jsonb.rb
|
@@ -191,12 +193,14 @@ files:
|
|
191
193
|
- lib/mobility/backends/active_record/key_value.rb
|
192
194
|
- lib/mobility/backends/active_record/key_value/query_methods.rb
|
193
195
|
- lib/mobility/backends/active_record/pg_hash.rb
|
196
|
+
- lib/mobility/backends/active_record/pg_query_methods.rb
|
194
197
|
- lib/mobility/backends/active_record/query_methods.rb
|
195
198
|
- lib/mobility/backends/active_record/serialized.rb
|
196
199
|
- lib/mobility/backends/active_record/serialized/query_methods.rb
|
197
200
|
- lib/mobility/backends/active_record/table.rb
|
198
201
|
- lib/mobility/backends/active_record/table/query_methods.rb
|
199
202
|
- lib/mobility/backends/column.rb
|
203
|
+
- lib/mobility/backends/container.rb
|
200
204
|
- lib/mobility/backends/hash_valued.rb
|
201
205
|
- lib/mobility/backends/hstore.rb
|
202
206
|
- lib/mobility/backends/jsonb.rb
|
@@ -205,6 +209,8 @@ files:
|
|
205
209
|
- lib/mobility/backends/sequel.rb
|
206
210
|
- lib/mobility/backends/sequel/column.rb
|
207
211
|
- lib/mobility/backends/sequel/column/query_methods.rb
|
212
|
+
- lib/mobility/backends/sequel/container.rb
|
213
|
+
- lib/mobility/backends/sequel/container/query_methods.rb
|
208
214
|
- lib/mobility/backends/sequel/hstore.rb
|
209
215
|
- lib/mobility/backends/sequel/hstore/query_methods.rb
|
210
216
|
- lib/mobility/backends/sequel/jsonb.rb
|
@@ -212,7 +218,7 @@ files:
|
|
212
218
|
- lib/mobility/backends/sequel/key_value.rb
|
213
219
|
- lib/mobility/backends/sequel/key_value/query_methods.rb
|
214
220
|
- lib/mobility/backends/sequel/pg_hash.rb
|
215
|
-
- lib/mobility/backends/sequel/
|
221
|
+
- lib/mobility/backends/sequel/pg_query_methods.rb
|
216
222
|
- lib/mobility/backends/sequel/query_methods.rb
|
217
223
|
- lib/mobility/backends/sequel/serialized.rb
|
218
224
|
- lib/mobility/backends/sequel/serialized/query_methods.rb
|
@@ -242,6 +248,7 @@ files:
|
|
242
248
|
- lib/mobility/sequel.rb
|
243
249
|
- lib/mobility/sequel/backend_resetter.rb
|
244
250
|
- lib/mobility/sequel/column_changes.rb
|
251
|
+
- lib/mobility/sequel/hash_initializer.rb
|
245
252
|
- lib/mobility/sequel/model_translation.rb
|
246
253
|
- lib/mobility/sequel/string_translation.rb
|
247
254
|
- lib/mobility/sequel/text_translation.rb
|
@@ -276,7 +283,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
276
283
|
requirements:
|
277
284
|
- - ">="
|
278
285
|
- !ruby/object:Gem::Version
|
279
|
-
version: 2.2.
|
286
|
+
version: 2.2.9
|
280
287
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
281
288
|
requirements:
|
282
289
|
- - ">="
|