ar_protobuf_store 0.2.3 → 1.0.0
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/.travis.yml +0 -1
- data/Appraisals +1 -1
- data/ChangeLog.md +5 -0
- data/gemfiles/rails4.0.0_protobuf.gemfile +8 -0
- data/gemfiles/rails4.0.0_ruby_protobuf.gemfile +8 -0
- data/gemfiles/rails4.1.0_protobuf.gemfile +8 -0
- data/gemfiles/rails4.1.0_ruby_protobuf.gemfile +8 -0
- data/gemfiles/rails4.2.0_protobuf.gemfile +8 -0
- data/gemfiles/rails4.2.0_ruby_protobuf.gemfile +8 -0
- data/gemfiles/rails4.2.6_protobuf.gemfile +8 -0
- data/gemfiles/rails4.2.6_ruby_protobuf.gemfile +8 -0
- data/lib/ar_protobuf_store.rb +6 -5
- data/lib/ar_protobuf_store/codekitchen_protobuf_parser.rb +11 -2
- data/lib/ar_protobuf_store/protobuf_parser.rb +12 -2
- data/lib/ar_protobuf_store/version.rb +1 -1
- data/spec/codekitchen_protobuf_spec.rb +85 -9
- data/spec/localshred_protobuf_spec.rb +86 -9
- data/spec/macks_protobuf_spec.rb +86 -9
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98e9759f6a95859a2855c87b78b2d64e07f5ad51
|
4
|
+
data.tar.gz: dd06b77140489773f24e6f1b38aa1e8213fdcc7c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 07c55b3e1e88d423f33efd5426dd0fafdfe1eb742fa51714d1f2baef0ef9226ad0e3cbd49b5f28980700bdce25f6a4d36e13c471f3e96202419fbdf585bbfb87
|
7
|
+
data.tar.gz: 0852128fcfc9d4786a991ee07836bd753a78ae2d30c841008b117ac74c76d67e6efa6f2be825ca676abf59c2a01ad66f281b91850a88901f969235c8f3a3e6fe
|
data/.travis.yml
CHANGED
data/Appraisals
CHANGED
data/ChangeLog.md
CHANGED
data/lib/ar_protobuf_store.rb
CHANGED
@@ -12,19 +12,20 @@ module ArProtobufStore
|
|
12
12
|
base.extend(ClassMethods)
|
13
13
|
end
|
14
14
|
|
15
|
-
def self.find_parser!(pb_class)
|
15
|
+
def self.find_parser!(pb_class, options={})
|
16
16
|
if defined?(ProtocolBuffers) && ::ProtocolBuffers::Message > pb_class
|
17
|
-
return ArProtobufStore::CodekitchenProtobufParser.new(pb_class)
|
17
|
+
return ArProtobufStore::CodekitchenProtobufParser.new(pb_class, options)
|
18
18
|
elsif defined?(Protobuf) && ::Protobuf::Message > pb_class
|
19
|
-
return ArProtobufStore::ProtobufParser.new(pb_class)
|
19
|
+
return ArProtobufStore::ProtobufParser.new(pb_class, options)
|
20
20
|
else
|
21
21
|
raise "Could not identify protocol buffer library for #{pb_class}"
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
module ClassMethods
|
26
|
-
def protobuf_store(store_attribute, pb_class, options=
|
27
|
-
|
26
|
+
def protobuf_store(store_attribute, pb_class, options=nil)
|
27
|
+
options ||= {}
|
28
|
+
parser = ArProtobufStore.find_parser!(pb_class, options)
|
28
29
|
serialize(store_attribute, parser)
|
29
30
|
protobuf_store_accessor(store_attribute, parser.extract_fields(options[:accessors]))
|
30
31
|
end
|
@@ -2,8 +2,9 @@ module ArProtobufStore
|
|
2
2
|
class CodekitchenProtobufParser
|
3
3
|
def initialize(pb_class, opts = nil)
|
4
4
|
@klass = pb_class
|
5
|
-
@opts =
|
6
|
-
|
5
|
+
@opts = {
|
6
|
+
:default => Proc.new { pb_class.new() }
|
7
|
+
}.merge(opts || {})
|
7
8
|
end
|
8
9
|
|
9
10
|
def load(str)
|
@@ -24,6 +25,14 @@ module ArProtobufStore
|
|
24
25
|
|
25
26
|
def dump(str)
|
26
27
|
str.serialize_to_string
|
28
|
+
rescue Exception
|
29
|
+
if defined?(Rails)
|
30
|
+
Rails.logger.error("Failed to serialize: #{$!}")
|
31
|
+
else
|
32
|
+
puts "Failed to serialize: #{$!}"
|
33
|
+
end
|
34
|
+
|
35
|
+
return nil
|
27
36
|
end
|
28
37
|
|
29
38
|
def extract_fields(accessors = nil)
|
@@ -2,8 +2,10 @@ module ArProtobufStore
|
|
2
2
|
class ProtobufParser
|
3
3
|
def initialize(pb_class, opts = nil)
|
4
4
|
@klass = pb_class
|
5
|
-
@opts = opts
|
6
|
-
@opts
|
5
|
+
@opts = opts || {}
|
6
|
+
@opts = {
|
7
|
+
:default => Proc.new { pb_class.new() }
|
8
|
+
}.merge(opts || {})
|
7
9
|
end
|
8
10
|
|
9
11
|
def load(str)
|
@@ -24,6 +26,14 @@ module ArProtobufStore
|
|
24
26
|
|
25
27
|
def dump(str)
|
26
28
|
str.serialize_to_string
|
29
|
+
rescue Exception
|
30
|
+
if defined?(Rails)
|
31
|
+
Rails.logger.error("Failed to serialize: #{$!}")
|
32
|
+
else
|
33
|
+
puts "Failed to serialize: #{$!}"
|
34
|
+
end
|
35
|
+
|
36
|
+
return nil
|
27
37
|
end
|
28
38
|
|
29
39
|
def extract_fields(accessors = nil)
|
@@ -17,42 +17,118 @@ begin
|
|
17
17
|
teardown_db
|
18
18
|
end
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
extras = Class.new(::ProtocolBuffers::Message) do
|
20
|
+
def pb_class
|
21
|
+
Class.new(::ProtocolBuffers::Message) do
|
23
22
|
optional :uint64, :int_attr, 1
|
24
23
|
optional :string, :str_attr, 2
|
25
24
|
end
|
25
|
+
end
|
26
26
|
|
27
|
+
let :ar_class do
|
28
|
+
# Define everything using anonymous classes to reduce leakage.
|
29
|
+
pb_class = self.pb_class
|
27
30
|
Class.new(::ActiveRecord::Base) do
|
28
31
|
self.table_name = "foos"
|
29
32
|
|
30
33
|
include ArProtobufStore
|
31
34
|
|
32
|
-
protobuf_store :extras,
|
35
|
+
protobuf_store :extras, pb_class
|
33
36
|
end
|
34
|
-
|
37
|
+
end
|
35
38
|
|
36
39
|
describe ArProtobufStore::ClassMethods do
|
37
40
|
it "should allow setting fields individually" do
|
38
|
-
record =
|
41
|
+
record = ar_class.create!
|
39
42
|
record.int_attr = 2
|
40
43
|
record.str_attr = "TEST"
|
41
44
|
record.save
|
42
45
|
expect(record.persisted?).to eq(true)
|
43
46
|
record_id = record.id
|
44
47
|
|
45
|
-
record =
|
48
|
+
record = ar_class.find(record_id)
|
46
49
|
expect(record.int_attr).to eq(2)
|
47
50
|
expect(record.str_attr).to eq("TEST")
|
48
51
|
end
|
49
52
|
|
50
53
|
it "should allow setting fields in constructor" do
|
51
|
-
record =
|
54
|
+
record = ar_class.create!(:int_attr => 2, :str_attr => "TEST")
|
55
|
+
expect(record.persisted?).to eq(true)
|
56
|
+
record_id = record.id
|
57
|
+
|
58
|
+
record = ar_class.find(record_id)
|
59
|
+
expect(record.int_attr).to eq(2)
|
60
|
+
expect(record.str_attr).to eq("TEST")
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should allow required fields" do
|
64
|
+
pb_class = Class.new(::ProtocolBuffers::Message) do
|
65
|
+
optional :uint64, :int_attr, 1
|
66
|
+
required :string, :req_str_attr, 2
|
67
|
+
end
|
68
|
+
ar_class = Class.new(::ActiveRecord::Base) do
|
69
|
+
self.table_name = "foos"
|
70
|
+
|
71
|
+
include ArProtobufStore
|
72
|
+
|
73
|
+
protobuf_store :extras, pb_class
|
74
|
+
end
|
75
|
+
|
76
|
+
# Handle batch create:
|
77
|
+
record = ar_class.create!(:int_attr => 2, req_str_attr: "required")
|
52
78
|
expect(record.persisted?).to eq(true)
|
79
|
+
|
53
80
|
record_id = record.id
|
81
|
+
record = ar_class.find(record_id)
|
82
|
+
expect(record.int_attr).to eq(2)
|
83
|
+
expect(record.req_str_attr).to eq("required")
|
84
|
+
|
85
|
+
# Handle calling setters:
|
86
|
+
record.req_str_attr = "something"
|
87
|
+
record.save!
|
88
|
+
record = ar_class.find(record_id)
|
89
|
+
expect(record.req_str_attr).to eq("something")
|
90
|
+
end
|
54
91
|
|
55
|
-
|
92
|
+
it "should respect nil default value" do
|
93
|
+
pb_class = self.pb_class
|
94
|
+
ar_class = Class.new(::ActiveRecord::Base) do
|
95
|
+
self.table_name = "foos"
|
96
|
+
|
97
|
+
include ArProtobufStore
|
98
|
+
|
99
|
+
protobuf_store :extras, pb_class, :default => nil
|
100
|
+
end
|
101
|
+
|
102
|
+
# Handle batch create:
|
103
|
+
record = ar_class.create!
|
104
|
+
expect(record.persisted?).to eq(true)
|
105
|
+
expect(record.extras).to eq(nil)
|
106
|
+
|
107
|
+
record_id = record.id
|
108
|
+
record = ar_class.find(record_id)
|
109
|
+
expect(record.extras).to eq(nil)
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should respect default proc" do
|
113
|
+
pb_class = self.pb_class
|
114
|
+
ar_class = Class.new(::ActiveRecord::Base) do
|
115
|
+
self.table_name = "foos"
|
116
|
+
|
117
|
+
include ArProtobufStore
|
118
|
+
|
119
|
+
protobuf_store :extras, pb_class, :default => Proc.new { pb_class.new(int_attr: 2) }
|
120
|
+
end
|
121
|
+
|
122
|
+
# Handle batch create:
|
123
|
+
record = ar_class.create!
|
124
|
+
expect(record.persisted?).to eq(true)
|
125
|
+
expect(record.int_attr).to eq(2)
|
126
|
+
|
127
|
+
record.str_attr = "TEST"
|
128
|
+
record.save!
|
129
|
+
|
130
|
+
record_id = record.id
|
131
|
+
record = ar_class.find(record_id)
|
56
132
|
expect(record.int_attr).to eq(2)
|
57
133
|
expect(record.str_attr).to eq("TEST")
|
58
134
|
end
|
@@ -20,42 +20,119 @@ begin
|
|
20
20
|
teardown_db
|
21
21
|
end
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
extras = Class.new(::Protobuf::Message) do
|
23
|
+
def pb_class
|
24
|
+
Class.new(::Protobuf::Message) do
|
26
25
|
optional :uint64, :int_attr, 1
|
27
26
|
optional :string, :str_attr, 2
|
28
27
|
end
|
28
|
+
end
|
29
|
+
|
30
|
+
let :ar_class do
|
31
|
+
# Define everything using anonymous classes to reduce leakage.
|
32
|
+
pb_class = self.pb_class
|
29
33
|
|
30
34
|
Class.new(::ActiveRecord::Base) do
|
31
35
|
self.table_name = "foos"
|
32
36
|
|
33
37
|
include ArProtobufStore
|
34
38
|
|
35
|
-
protobuf_store :extras,
|
39
|
+
protobuf_store :extras, pb_class
|
36
40
|
end
|
37
|
-
|
41
|
+
end
|
38
42
|
|
39
43
|
describe ArProtobufStore::ClassMethods do
|
40
44
|
it "should allow setting fields individually" do
|
41
|
-
record =
|
45
|
+
record = ar_class.create!
|
42
46
|
record.int_attr = 2
|
43
47
|
record.str_attr = "TEST"
|
44
48
|
record.save
|
45
49
|
expect(record.persisted?).to eq(true)
|
46
50
|
record_id = record.id
|
47
51
|
|
48
|
-
record =
|
52
|
+
record = ar_class.find(record_id)
|
49
53
|
expect(record.int_attr).to eq(2)
|
50
54
|
expect(record.str_attr).to eq("TEST")
|
51
55
|
end
|
52
56
|
|
53
57
|
it "should allow setting fields in constructor" do
|
54
|
-
record =
|
58
|
+
record = ar_class.create!(:int_attr => 2, :str_attr => "TEST")
|
59
|
+
expect(record.persisted?).to eq(true)
|
60
|
+
record_id = record.id
|
61
|
+
|
62
|
+
record = ar_class.find(record_id)
|
63
|
+
expect(record.int_attr).to eq(2)
|
64
|
+
expect(record.str_attr).to eq("TEST")
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should allow required fields" do
|
68
|
+
pb_class = Class.new(::Protobuf::Message) do
|
69
|
+
optional :uint64, :int_attr, 1
|
70
|
+
required :string, :req_str_attr, 2
|
71
|
+
end
|
72
|
+
ar_class = Class.new(::ActiveRecord::Base) do
|
73
|
+
self.table_name = "foos"
|
74
|
+
|
75
|
+
include ArProtobufStore
|
76
|
+
|
77
|
+
protobuf_store :extras, pb_class
|
78
|
+
end
|
79
|
+
|
80
|
+
# Handle batch create:
|
81
|
+
record = ar_class.create!(:int_attr => 2, req_str_attr: "required")
|
82
|
+
expect(record.persisted?).to eq(true)
|
83
|
+
|
84
|
+
record_id = record.id
|
85
|
+
record = ar_class.find(record_id)
|
86
|
+
expect(record.int_attr).to eq(2)
|
87
|
+
expect(record.req_str_attr).to eq("required")
|
88
|
+
|
89
|
+
# Handle calling setters:
|
90
|
+
record.req_str_attr = "something"
|
91
|
+
record.save!
|
92
|
+
record = ar_class.find(record_id)
|
93
|
+
expect(record.req_str_attr).to eq("something")
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should respect nil default value" do
|
97
|
+
pb_class = self.pb_class
|
98
|
+
ar_class = Class.new(::ActiveRecord::Base) do
|
99
|
+
self.table_name = "foos"
|
100
|
+
|
101
|
+
include ArProtobufStore
|
102
|
+
|
103
|
+
protobuf_store :extras, pb_class, :default => nil
|
104
|
+
end
|
105
|
+
|
106
|
+
# Handle batch create:
|
107
|
+
record = ar_class.create!
|
55
108
|
expect(record.persisted?).to eq(true)
|
109
|
+
expect(record.extras).to eq(nil)
|
110
|
+
|
56
111
|
record_id = record.id
|
112
|
+
record = ar_class.find(record_id)
|
113
|
+
expect(record.extras).to eq(nil)
|
114
|
+
end
|
57
115
|
|
58
|
-
|
116
|
+
it "should respect default proc" do
|
117
|
+
pb_class = self.pb_class
|
118
|
+
ar_class = Class.new(::ActiveRecord::Base) do
|
119
|
+
self.table_name = "foos"
|
120
|
+
|
121
|
+
include ArProtobufStore
|
122
|
+
|
123
|
+
protobuf_store :extras, pb_class, :default => Proc.new { pb_class.new(int_attr: 2) }
|
124
|
+
end
|
125
|
+
|
126
|
+
# Handle batch create:
|
127
|
+
record = ar_class.create!
|
128
|
+
expect(record.persisted?).to eq(true)
|
129
|
+
expect(record.int_attr).to eq(2)
|
130
|
+
|
131
|
+
record.str_attr = "TEST"
|
132
|
+
record.save!
|
133
|
+
|
134
|
+
record_id = record.id
|
135
|
+
record = ar_class.find(record_id)
|
59
136
|
expect(record.int_attr).to eq(2)
|
60
137
|
expect(record.str_attr).to eq("TEST")
|
61
138
|
end
|
data/spec/macks_protobuf_spec.rb
CHANGED
@@ -23,42 +23,119 @@ begin
|
|
23
23
|
teardown_db
|
24
24
|
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
extras = Class.new(::Protobuf::Message) do
|
26
|
+
def pb_class
|
27
|
+
Class.new(::Protobuf::Message) do
|
29
28
|
optional :uint64, :int_attr, 1
|
30
29
|
optional :string, :str_attr, 2
|
31
30
|
end
|
31
|
+
end
|
32
|
+
|
33
|
+
let :ar_class do
|
34
|
+
# Define everything using anonymous classes to reduce leakage.
|
35
|
+
pb_class = self.pb_class
|
32
36
|
|
33
37
|
Class.new(::ActiveRecord::Base) do
|
34
38
|
self.table_name = "foos"
|
35
39
|
|
36
40
|
include ArProtobufStore
|
37
41
|
|
38
|
-
protobuf_store :extras,
|
42
|
+
protobuf_store :extras, pb_class
|
39
43
|
end
|
40
|
-
|
44
|
+
end
|
41
45
|
|
42
46
|
describe ArProtobufStore::ClassMethods do
|
43
47
|
it "should allow setting fields individually" do
|
44
|
-
record =
|
48
|
+
record = ar_class.create!
|
45
49
|
record.int_attr = 2
|
46
50
|
record.str_attr = "TEST"
|
47
51
|
record.save
|
48
52
|
expect(record.persisted?).to eq(true)
|
49
53
|
record_id = record.id
|
50
54
|
|
51
|
-
record =
|
55
|
+
record = ar_class.find(record_id)
|
52
56
|
expect(record.int_attr).to eq(2)
|
53
57
|
expect(record.str_attr).to eq("TEST")
|
54
58
|
end
|
55
59
|
|
56
60
|
it "should allow setting fields in constructor" do
|
57
|
-
record =
|
61
|
+
record = ar_class.create!(:int_attr => 2, :str_attr => "TEST")
|
62
|
+
expect(record.persisted?).to eq(true)
|
63
|
+
record_id = record.id
|
64
|
+
|
65
|
+
record = ar_class.find(record_id)
|
66
|
+
expect(record.int_attr).to eq(2)
|
67
|
+
expect(record.str_attr).to eq("TEST")
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should allow required fields" do
|
71
|
+
pb_class = Class.new(::Protobuf::Message) do
|
72
|
+
optional :uint64, :int_attr, 1
|
73
|
+
required :string, :req_str_attr, 2
|
74
|
+
end
|
75
|
+
ar_class = Class.new(::ActiveRecord::Base) do
|
76
|
+
self.table_name = "foos"
|
77
|
+
|
78
|
+
include ArProtobufStore
|
79
|
+
|
80
|
+
protobuf_store :extras, pb_class
|
81
|
+
end
|
82
|
+
|
83
|
+
# Handle batch create:
|
84
|
+
record = ar_class.create!(:int_attr => 2, :req_str_attr => "required")
|
85
|
+
expect(record.persisted?).to eq(true)
|
86
|
+
|
87
|
+
record_id = record.id
|
88
|
+
record = ar_class.find(record_id)
|
89
|
+
expect(record.int_attr).to eq(2)
|
90
|
+
expect(record.req_str_attr).to eq("required")
|
91
|
+
|
92
|
+
# Handle calling setters:
|
93
|
+
record.req_str_attr = "something"
|
94
|
+
record.save!
|
95
|
+
record = ar_class.find(record_id)
|
96
|
+
expect(record.req_str_attr).to eq("something")
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should respect nil default value" do
|
100
|
+
pb_class = self.pb_class
|
101
|
+
ar_class = Class.new(::ActiveRecord::Base) do
|
102
|
+
self.table_name = "foos"
|
103
|
+
|
104
|
+
include ArProtobufStore
|
105
|
+
|
106
|
+
protobuf_store :extras, pb_class, :default => nil
|
107
|
+
end
|
108
|
+
|
109
|
+
# Handle batch create:
|
110
|
+
record = ar_class.create!
|
58
111
|
expect(record.persisted?).to eq(true)
|
112
|
+
expect(record.extras).to eq(nil)
|
113
|
+
|
59
114
|
record_id = record.id
|
115
|
+
record = ar_class.find(record_id)
|
116
|
+
expect(record.extras).to eq(nil)
|
117
|
+
end
|
60
118
|
|
61
|
-
|
119
|
+
it "should respect default proc" do
|
120
|
+
pb_class = self.pb_class
|
121
|
+
ar_class = Class.new(::ActiveRecord::Base) do
|
122
|
+
self.table_name = "foos"
|
123
|
+
|
124
|
+
include ArProtobufStore
|
125
|
+
|
126
|
+
protobuf_store :extras, pb_class, :default => Proc.new { pb_class.new(int_attr: 2) }
|
127
|
+
end
|
128
|
+
|
129
|
+
# Handle batch create:
|
130
|
+
record = ar_class.create!
|
131
|
+
expect(record.persisted?).to eq(true)
|
132
|
+
expect(record.int_attr).to eq(2)
|
133
|
+
|
134
|
+
record.str_attr = "TEST"
|
135
|
+
record.save!
|
136
|
+
|
137
|
+
record_id = record.id
|
138
|
+
record = ar_class.find(record_id)
|
62
139
|
expect(record.int_attr).to eq(2)
|
63
140
|
expect(record.str_attr).to eq("TEST")
|
64
141
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ar_protobuf_store
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hsiu-Fan Wang
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -163,12 +163,20 @@ files:
|
|
163
163
|
- ar_protobuf_store.gemspec
|
164
164
|
- gemfiles/rails3.2_protobuf.gemfile
|
165
165
|
- gemfiles/rails3.2_ruby_protobuf.gemfile
|
166
|
+
- gemfiles/rails4.0.0_protobuf.gemfile
|
167
|
+
- gemfiles/rails4.0.0_ruby_protobuf.gemfile
|
166
168
|
- gemfiles/rails4.0_protobuf.gemfile
|
167
169
|
- gemfiles/rails4.0_ruby_protobuf.gemfile
|
170
|
+
- gemfiles/rails4.1.0_protobuf.gemfile
|
171
|
+
- gemfiles/rails4.1.0_ruby_protobuf.gemfile
|
168
172
|
- gemfiles/rails4.1_protobuf.gemfile
|
169
173
|
- gemfiles/rails4.1_ruby_protobuf.gemfile
|
174
|
+
- gemfiles/rails4.2.0_protobuf.gemfile
|
175
|
+
- gemfiles/rails4.2.0_ruby_protobuf.gemfile
|
170
176
|
- gemfiles/rails4.2.5_protobuf.gemfile
|
171
177
|
- gemfiles/rails4.2.5_ruby_protobuf.gemfile
|
178
|
+
- gemfiles/rails4.2.6_protobuf.gemfile
|
179
|
+
- gemfiles/rails4.2.6_ruby_protobuf.gemfile
|
172
180
|
- gemfiles/rails4.2_protobuf.gemfile
|
173
181
|
- gemfiles/rails4.2_ruby_protobuf.gemfile
|
174
182
|
- lib/ar_protobuf_store.rb
|