protip 0.33.0 → 0.35.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: b00d08f38111e8b0182e50c6f4e452787d0f9168
4
- data.tar.gz: 963dc1bde387ed8308925a2185a4f9b5d5494631
2
+ SHA256:
3
+ metadata.gz: e4f44a0af07ee5f3839ebb17387a687388f9829629017b84d73797d2f2e98bbe
4
+ data.tar.gz: 5495fdb816a03f86b227f67a5b5a2c9f87849bc702c8de9382d887b7eafbbb71
5
5
  SHA512:
6
- metadata.gz: 736fe9fc7445f0fa83b608a142cd74001ef30b96304be7297f1653016fa795668cfc7685f0f4e2ca01047ab14fc033b41425e2f5e2ea0c5db8e9454cf850be31
7
- data.tar.gz: 0ad6ab1ff91ff83179093f5dbdc71a776632c0147687e88819894525a90aaea5cfcf08637663d3927aa46681b89c62f3ae06545b19a96eda5b77da712dc699b8
6
+ metadata.gz: 2ced23785cbd438817f3c07a2cb8e68d2eebcf7deeb126235ca12bbcbcc25432a1e6373985650d8814d27a50ec717b2c7fd403aca77f510089d8be6947ff3748
7
+ data.tar.gz: 87a05ad4ec2e849cdc84ab197e613a04fdcdae609393b4fde5f7d121c1b503670749e8233f65f3bc1a40bc75fb3d31f2652c31f22e88da03af5ab5c877b061aa
data/lib/protip.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'protip/version'
1
2
  require 'protip/client'
2
3
  require 'protip/resource'
3
4
 
data/lib/protip/client.rb CHANGED
@@ -69,27 +69,9 @@ module Protip
69
69
  # @param request [Net::HTTPGenericRequest] the raw request object to send
70
70
  # @return [Net::HTTPResponse] the response for the given request
71
71
  def execute_request(request)
72
- http = nil
73
72
  uri = request.uri
74
- retries = 0
75
- max_retries = 3
76
-
77
- begin
78
- unless http
79
- http = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https', read_timeout: 120)
80
- end
73
+ Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https', read_timeout: 600) do |http|
81
74
  http.request request
82
- rescue Net::OpenTimeout, Net::ReadTimeout
83
- if (retries += 1) <= max_retries
84
- sleep(retries)
85
- retry
86
- else
87
- raise
88
- end
89
- ensure
90
- if http
91
- http.finish
92
- end
93
75
  end
94
76
  end
95
77
  end
@@ -281,7 +281,7 @@ module Protip
281
281
 
282
282
  def method_missing_query(name, *args)
283
283
  field = message.class.descriptor.lookup(name[0, name.length - 1])
284
- raise NoMethodError unless field
284
+ raise NoMethodError.new("No query method found for: #{name}") unless field
285
285
 
286
286
  if nil != Protip::Decorator.enum_for_field(field) && args.length == 1
287
287
  matches?(field, args[0])
@@ -4,9 +4,11 @@
4
4
  require 'google/protobuf'
5
5
 
6
6
  Google::Protobuf::DescriptorPool.generated_pool.build do
7
- add_message "protip.messages.ActiveSupport.TimeWithZone" do
8
- optional :utc_timestamp, :int64, 1
9
- optional :time_zone_name, :string, 2
7
+ add_file("protip/messages/active_support/time_with_zone.proto", :syntax => :proto3) do
8
+ add_message "protip.messages.ActiveSupport.TimeWithZone" do
9
+ optional :utc_timestamp, :int64, 1
10
+ optional :time_zone_name, :string, 2
11
+ end
10
12
  end
11
13
  end
12
14
 
@@ -4,8 +4,10 @@
4
4
  require 'google/protobuf'
5
5
 
6
6
  Google::Protobuf::DescriptorPool.generated_pool.build do
7
- add_message "protip.messages.Array" do
8
- repeated :messages, :bytes, 1
7
+ add_file("protip/messages/array.proto", :syntax => :proto3) do
8
+ add_message "protip.messages.Array" do
9
+ repeated :messages, :bytes, 1
10
+ end
9
11
  end
10
12
  end
11
13
 
@@ -4,10 +4,12 @@
4
4
  require 'google/protobuf'
5
5
 
6
6
  Google::Protobuf::DescriptorPool.generated_pool.build do
7
- add_message "protip.messages.BigDecimalValue" do
8
- optional :numerator, :int64, 1
9
- optional :denominator, :uint64, 2
10
- optional :precision, :uint32, 3
7
+ add_file("protip/messages/big_decimal_value.proto", :syntax => :proto3) do
8
+ add_message "protip.messages.BigDecimalValue" do
9
+ optional :numerator, :int64, 1
10
+ optional :denominator, :uint64, 2
11
+ optional :precision, :uint32, 3
12
+ end
11
13
  end
12
14
  end
13
15
 
@@ -4,183 +4,185 @@
4
4
  require 'google/protobuf'
5
5
 
6
6
  Google::Protobuf::DescriptorPool.generated_pool.build do
7
- add_message "protip.messages.Currency" do
8
- optional :currency_code, :enum, 1, "protip.messages.Currency.CurrencyCode"
9
- end
10
- add_enum "protip.messages.Currency.CurrencyCode" do
11
- value :AED, 0
12
- value :AFN, 1
13
- value :ALL, 2
14
- value :AMD, 3
15
- value :ANG, 4
16
- value :AOA, 5
17
- value :ARS, 6
18
- value :AUD, 7
19
- value :AWG, 8
20
- value :AZN, 9
21
- value :BAM, 10
22
- value :BBD, 11
23
- value :BDT, 12
24
- value :BGN, 13
25
- value :BHD, 14
26
- value :BIF, 15
27
- value :BMD, 16
28
- value :BND, 17
29
- value :BOB, 18
30
- value :BRL, 19
31
- value :BSD, 20
32
- value :BTN, 21
33
- value :BWP, 22
34
- value :BYR, 23
35
- value :BZD, 24
36
- value :CAD, 25
37
- value :CDF, 26
38
- value :CHF, 27
39
- value :CLF, 28
40
- value :CLP, 29
41
- value :CNY, 30
42
- value :COP, 31
43
- value :CRC, 32
44
- value :CUC, 33
45
- value :CUP, 34
46
- value :CVE, 35
47
- value :CZK, 36
48
- value :DJF, 37
49
- value :DKK, 38
50
- value :DOP, 39
51
- value :DZD, 40
52
- value :EGP, 41
53
- value :ERN, 42
54
- value :ETB, 43
55
- value :EUR, 44
56
- value :FJD, 45
57
- value :FKP, 46
58
- value :GBP, 47
59
- value :GEL, 48
60
- value :GHS, 49
61
- value :GIP, 50
62
- value :GMD, 51
63
- value :GNF, 52
64
- value :GTQ, 53
65
- value :GYD, 54
66
- value :HKD, 55
67
- value :HNL, 56
68
- value :HRK, 57
69
- value :HTG, 58
70
- value :HUF, 59
71
- value :IDR, 60
72
- value :ILS, 61
73
- value :INR, 62
74
- value :IQD, 63
75
- value :IRR, 64
76
- value :ISK, 65
77
- value :JMD, 66
78
- value :JOD, 67
79
- value :JPY, 68
80
- value :KES, 69
81
- value :KGS, 70
82
- value :KHR, 71
83
- value :KMF, 72
84
- value :KPW, 73
85
- value :KRW, 74
86
- value :KWD, 75
87
- value :KYD, 76
88
- value :KZT, 77
89
- value :LAK, 78
90
- value :LBP, 79
91
- value :LKR, 80
92
- value :LRD, 81
93
- value :LSL, 82
94
- value :LTL, 83
95
- value :LVL, 84
96
- value :LYD, 85
97
- value :MAD, 86
98
- value :MDL, 87
99
- value :MGA, 88
100
- value :MKD, 89
101
- value :MMK, 90
102
- value :MNT, 91
103
- value :MOP, 92
104
- value :MRO, 93
105
- value :MUR, 94
106
- value :MVR, 95
107
- value :MWK, 96
108
- value :MXN, 97
109
- value :MYR, 98
110
- value :MZN, 99
111
- value :NAD, 100
112
- value :NGN, 101
113
- value :NIO, 102
114
- value :NOK, 103
115
- value :NPR, 104
116
- value :NZD, 105
117
- value :OMR, 106
118
- value :PAB, 107
119
- value :PEN, 108
120
- value :PGK, 109
121
- value :PHP, 110
122
- value :PKR, 111
123
- value :PLN, 112
124
- value :PYG, 113
125
- value :QAR, 114
126
- value :RON, 115
127
- value :RSD, 116
128
- value :RUB, 117
129
- value :RWF, 118
130
- value :SAR, 119
131
- value :SBD, 120
132
- value :SCR, 121
133
- value :SDG, 122
134
- value :SEK, 123
135
- value :SGD, 124
136
- value :SHP, 125
137
- value :SKK, 126
138
- value :SLL, 127
139
- value :SOS, 128
140
- value :SRD, 129
141
- value :SSP, 130
142
- value :STD, 131
143
- value :SVC, 132
144
- value :SYP, 133
145
- value :SZL, 134
146
- value :THB, 135
147
- value :TJS, 136
148
- value :TMT, 137
149
- value :TND, 138
150
- value :TOP, 139
151
- value :TRY, 140
152
- value :TTD, 141
153
- value :TWD, 142
154
- value :TZS, 143
155
- value :UAH, 144
156
- value :UGX, 145
157
- value :USD, 146
158
- value :UYU, 147
159
- value :UZS, 148
160
- value :VEF, 149
161
- value :VND, 150
162
- value :VUV, 151
163
- value :WST, 152
164
- value :XAF, 153
165
- value :XAG, 154
166
- value :XAU, 155
167
- value :XCD, 156
168
- value :XDR, 157
169
- value :XOF, 158
170
- value :XPF, 159
171
- value :YER, 160
172
- value :ZAR, 161
173
- value :ZMK, 162
174
- value :ZMW, 163
175
- value :BTC, 164
176
- value :JEP, 165
177
- value :EEK, 166
178
- value :MTL, 167
179
- value :TMM, 168
180
- value :ZWD, 169
181
- value :ZWL, 170
182
- value :ZWN, 171
183
- value :ZWR, 172
7
+ add_file("protip/messages/currency.proto", :syntax => :proto3) do
8
+ add_message "protip.messages.Currency" do
9
+ optional :currency_code, :enum, 1, "protip.messages.Currency.CurrencyCode"
10
+ end
11
+ add_enum "protip.messages.Currency.CurrencyCode" do
12
+ value :AED, 0
13
+ value :AFN, 1
14
+ value :ALL, 2
15
+ value :AMD, 3
16
+ value :ANG, 4
17
+ value :AOA, 5
18
+ value :ARS, 6
19
+ value :AUD, 7
20
+ value :AWG, 8
21
+ value :AZN, 9
22
+ value :BAM, 10
23
+ value :BBD, 11
24
+ value :BDT, 12
25
+ value :BGN, 13
26
+ value :BHD, 14
27
+ value :BIF, 15
28
+ value :BMD, 16
29
+ value :BND, 17
30
+ value :BOB, 18
31
+ value :BRL, 19
32
+ value :BSD, 20
33
+ value :BTN, 21
34
+ value :BWP, 22
35
+ value :BYR, 23
36
+ value :BZD, 24
37
+ value :CAD, 25
38
+ value :CDF, 26
39
+ value :CHF, 27
40
+ value :CLF, 28
41
+ value :CLP, 29
42
+ value :CNY, 30
43
+ value :COP, 31
44
+ value :CRC, 32
45
+ value :CUC, 33
46
+ value :CUP, 34
47
+ value :CVE, 35
48
+ value :CZK, 36
49
+ value :DJF, 37
50
+ value :DKK, 38
51
+ value :DOP, 39
52
+ value :DZD, 40
53
+ value :EGP, 41
54
+ value :ERN, 42
55
+ value :ETB, 43
56
+ value :EUR, 44
57
+ value :FJD, 45
58
+ value :FKP, 46
59
+ value :GBP, 47
60
+ value :GEL, 48
61
+ value :GHS, 49
62
+ value :GIP, 50
63
+ value :GMD, 51
64
+ value :GNF, 52
65
+ value :GTQ, 53
66
+ value :GYD, 54
67
+ value :HKD, 55
68
+ value :HNL, 56
69
+ value :HRK, 57
70
+ value :HTG, 58
71
+ value :HUF, 59
72
+ value :IDR, 60
73
+ value :ILS, 61
74
+ value :INR, 62
75
+ value :IQD, 63
76
+ value :IRR, 64
77
+ value :ISK, 65
78
+ value :JMD, 66
79
+ value :JOD, 67
80
+ value :JPY, 68
81
+ value :KES, 69
82
+ value :KGS, 70
83
+ value :KHR, 71
84
+ value :KMF, 72
85
+ value :KPW, 73
86
+ value :KRW, 74
87
+ value :KWD, 75
88
+ value :KYD, 76
89
+ value :KZT, 77
90
+ value :LAK, 78
91
+ value :LBP, 79
92
+ value :LKR, 80
93
+ value :LRD, 81
94
+ value :LSL, 82
95
+ value :LTL, 83
96
+ value :LVL, 84
97
+ value :LYD, 85
98
+ value :MAD, 86
99
+ value :MDL, 87
100
+ value :MGA, 88
101
+ value :MKD, 89
102
+ value :MMK, 90
103
+ value :MNT, 91
104
+ value :MOP, 92
105
+ value :MRO, 93
106
+ value :MUR, 94
107
+ value :MVR, 95
108
+ value :MWK, 96
109
+ value :MXN, 97
110
+ value :MYR, 98
111
+ value :MZN, 99
112
+ value :NAD, 100
113
+ value :NGN, 101
114
+ value :NIO, 102
115
+ value :NOK, 103
116
+ value :NPR, 104
117
+ value :NZD, 105
118
+ value :OMR, 106
119
+ value :PAB, 107
120
+ value :PEN, 108
121
+ value :PGK, 109
122
+ value :PHP, 110
123
+ value :PKR, 111
124
+ value :PLN, 112
125
+ value :PYG, 113
126
+ value :QAR, 114
127
+ value :RON, 115
128
+ value :RSD, 116
129
+ value :RUB, 117
130
+ value :RWF, 118
131
+ value :SAR, 119
132
+ value :SBD, 120
133
+ value :SCR, 121
134
+ value :SDG, 122
135
+ value :SEK, 123
136
+ value :SGD, 124
137
+ value :SHP, 125
138
+ value :SKK, 126
139
+ value :SLL, 127
140
+ value :SOS, 128
141
+ value :SRD, 129
142
+ value :SSP, 130
143
+ value :STD, 131
144
+ value :SVC, 132
145
+ value :SYP, 133
146
+ value :SZL, 134
147
+ value :THB, 135
148
+ value :TJS, 136
149
+ value :TMT, 137
150
+ value :TND, 138
151
+ value :TOP, 139
152
+ value :TRY, 140
153
+ value :TTD, 141
154
+ value :TWD, 142
155
+ value :TZS, 143
156
+ value :UAH, 144
157
+ value :UGX, 145
158
+ value :USD, 146
159
+ value :UYU, 147
160
+ value :UZS, 148
161
+ value :VEF, 149
162
+ value :VND, 150
163
+ value :VUV, 151
164
+ value :WST, 152
165
+ value :XAF, 153
166
+ value :XAG, 154
167
+ value :XAU, 155
168
+ value :XCD, 156
169
+ value :XDR, 157
170
+ value :XOF, 158
171
+ value :XPF, 159
172
+ value :YER, 160
173
+ value :ZAR, 161
174
+ value :ZMK, 162
175
+ value :ZMW, 163
176
+ value :BTC, 164
177
+ value :JEP, 165
178
+ value :EEK, 166
179
+ value :MTL, 167
180
+ value :TMM, 168
181
+ value :ZWD, 169
182
+ value :ZWL, 170
183
+ value :ZWN, 171
184
+ value :ZWR, 172
185
+ end
184
186
  end
185
187
  end
186
188
 
@@ -4,13 +4,15 @@
4
4
  require 'google/protobuf'
5
5
 
6
6
  Google::Protobuf::DescriptorPool.generated_pool.build do
7
- add_message "protip.messages.Errors" do
8
- repeated :messages, :string, 1
9
- repeated :field_errors, :message, 2, "protip.messages.FieldError"
10
- end
11
- add_message "protip.messages.FieldError" do
12
- optional :field, :string, 1
13
- optional :message, :string, 2
7
+ add_file("protip/messages/errors.proto", :syntax => :proto3) do
8
+ add_message "protip.messages.Errors" do
9
+ repeated :messages, :string, 1
10
+ repeated :field_errors, :message, 2, "protip.messages.FieldError"
11
+ end
12
+ add_message "protip.messages.FieldError" do
13
+ optional :field, :string, 1
14
+ optional :message, :string, 2
15
+ end
14
16
  end
15
17
  end
16
18
 
@@ -5,9 +5,11 @@ require 'google/protobuf'
5
5
 
6
6
  require 'protip/messages/currency_pb'
7
7
  Google::Protobuf::DescriptorPool.generated_pool.build do
8
- add_message "protip.messages.Money" do
9
- optional :amount_cents, :int64, 1
10
- optional :currency, :message, 2, "protip.messages.Currency"
8
+ add_file("protip/messages/money.proto", :syntax => :proto3) do
9
+ add_message "protip.messages.Money" do
10
+ optional :amount_cents, :int64, 1
11
+ optional :currency, :message, 2, "protip.messages.Currency"
12
+ end
11
13
  end
12
14
  end
13
15
 
@@ -4,9 +4,11 @@
4
4
  require 'google/protobuf'
5
5
 
6
6
  Google::Protobuf::DescriptorPool.generated_pool.build do
7
- add_message "protip.messages.Range" do
8
- optional :begin, :int64, 1
9
- optional :end, :int64, 2
7
+ add_file("protip/messages/range.proto", :syntax => :proto3) do
8
+ add_message "protip.messages.Range" do
9
+ optional :begin, :int64, 1
10
+ optional :end, :int64, 2
11
+ end
10
12
  end
11
13
  end
12
14
 
@@ -5,35 +5,37 @@ require 'google/protobuf'
5
5
 
6
6
  require 'protip/extensions_pb'
7
7
  Google::Protobuf::DescriptorPool.generated_pool.build do
8
- add_message "protip.messages.RepeatedDouble" do
9
- repeated :values, :double, 1
10
- end
11
- add_message "protip.messages.RepeatedFloat" do
12
- repeated :values, :float, 1
13
- end
14
- add_message "protip.messages.RepeatedInt64" do
15
- repeated :values, :int64, 1
16
- end
17
- add_message "protip.messages.RepeatedUInt64" do
18
- repeated :values, :uint64, 1
19
- end
20
- add_message "protip.messages.RepeatedInt32" do
21
- repeated :values, :int32, 1
22
- end
23
- add_message "protip.messages.RepeatedUInt32" do
24
- repeated :values, :uint32, 1
25
- end
26
- add_message "protip.messages.RepeatedBool" do
27
- repeated :values, :bool, 1
28
- end
29
- add_message "protip.messages.RepeatedString" do
30
- repeated :values, :string, 1
31
- end
32
- add_message "protip.messages.RepeatedBytes" do
33
- repeated :values, :bytes, 1
34
- end
35
- add_message "protip.messages.RepeatedEnum" do
36
- repeated :values, :int32, 1
8
+ add_file("protip/messages/repeated_wrappers.proto", :syntax => :proto3) do
9
+ add_message "protip.messages.RepeatedDouble" do
10
+ repeated :values, :double, 1
11
+ end
12
+ add_message "protip.messages.RepeatedFloat" do
13
+ repeated :values, :float, 1
14
+ end
15
+ add_message "protip.messages.RepeatedInt64" do
16
+ repeated :values, :int64, 1
17
+ end
18
+ add_message "protip.messages.RepeatedUInt64" do
19
+ repeated :values, :uint64, 1
20
+ end
21
+ add_message "protip.messages.RepeatedInt32" do
22
+ repeated :values, :int32, 1
23
+ end
24
+ add_message "protip.messages.RepeatedUInt32" do
25
+ repeated :values, :uint32, 1
26
+ end
27
+ add_message "protip.messages.RepeatedBool" do
28
+ repeated :values, :bool, 1
29
+ end
30
+ add_message "protip.messages.RepeatedString" do
31
+ repeated :values, :string, 1
32
+ end
33
+ add_message "protip.messages.RepeatedBytes" do
34
+ repeated :values, :bytes, 1
35
+ end
36
+ add_message "protip.messages.RepeatedEnum" do
37
+ repeated :values, :int32, 1
38
+ end
37
39
  end
38
40
  end
39
41
 
@@ -6,13 +6,15 @@ require 'google/protobuf'
6
6
  require 'protip/messages/repeated_wrappers_pb'
7
7
  require 'protip/messages/wrappers_pb'
8
8
  Google::Protobuf::DescriptorPool.generated_pool.build do
9
- add_message "protip.messages.EnumTest" do
10
- optional :enum, :message, 1, "protip.messages.EnumValue"
11
- optional :repeated_enums, :message, 2, "protip.messages.RepeatedEnum"
12
- end
13
- add_enum "protip.messages.EnumTest.Enum" do
14
- value :ZERO, 0
15
- value :ONE, 1
9
+ add_file("protip/messages/test.proto", :syntax => :proto3) do
10
+ add_message "protip.messages.EnumTest" do
11
+ optional :enum, :message, 1, "protip.messages.EnumValue"
12
+ optional :repeated_enums, :message, 2, "protip.messages.RepeatedEnum"
13
+ end
14
+ add_enum "protip.messages.EnumTest.Enum" do
15
+ value :ZERO, 0
16
+ value :ONE, 1
17
+ end
16
18
  end
17
19
  end
18
20
 
@@ -4,10 +4,12 @@
4
4
  require 'google/protobuf'
5
5
 
6
6
  Google::Protobuf::DescriptorPool.generated_pool.build do
7
- add_message "protip.messages.Date" do
8
- optional :year, :int64, 1
9
- optional :month, :uint32, 2
10
- optional :day, :uint32, 3
7
+ add_file("protip/messages/types.proto", :syntax => :proto3) do
8
+ add_message "protip.messages.Date" do
9
+ optional :year, :int64, 1
10
+ optional :month, :uint32, 2
11
+ optional :day, :uint32, 3
12
+ end
11
13
  end
12
14
  end
13
15
 
@@ -5,8 +5,10 @@ require 'google/protobuf'
5
5
 
6
6
  require 'protip/extensions_pb'
7
7
  Google::Protobuf::DescriptorPool.generated_pool.build do
8
- add_message "protip.messages.EnumValue" do
9
- optional :value, :int32, 1
8
+ add_file("protip/messages/wrappers.proto", :syntax => :proto3) do
9
+ add_message "protip.messages.EnumValue" do
10
+ optional :value, :int32, 1
11
+ end
10
12
  end
11
13
  end
12
14
 
@@ -14,5 +14,7 @@ require 'protip/messages/types_pb'
14
14
  require 'protip/messages/wrappers_pb'
15
15
  require 'protip/messages/active_support/time_with_zone_pb'
16
16
  Google::Protobuf::DescriptorPool.generated_pool.build do
17
+ add_file("protip/messages.proto", :syntax => :proto3) do
18
+ end
17
19
  end
18
20
 
@@ -19,7 +19,6 @@ require 'active_model/dirty'
19
19
 
20
20
  require 'forwardable'
21
21
 
22
- require 'protip'
23
22
  require 'protip/client'
24
23
  require 'protip/error'
25
24
  require 'protip/decorator'
@@ -78,14 +77,14 @@ module Protip
78
77
  end
79
78
 
80
79
  def transformer
81
- @transformer || ::Protip.default_transformer
80
+ defined?(@transformer) ? @transformer : ::Protip.default_transformer
82
81
  end
83
82
 
84
83
  private
85
84
 
86
85
  # Primary entry point for defining resourceful behavior.
87
86
  def resource(actions:, message:, query: nil, nested_resources: {})
88
- raise RuntimeError.new('Only one call to `resource` is allowed') if @message
87
+ raise RuntimeError.new('Only one call to `resource` is allowed') if defined?(@message) && @message
89
88
  validate_actions!(actions)
90
89
  validate_nested_resources!(nested_resources)
91
90
 
@@ -338,6 +337,18 @@ module Protip
338
337
  success
339
338
  end
340
339
 
340
+ class RecordInvalid < StandardError
341
+ end
342
+
343
+ def save!
344
+ success = save
345
+ if !success
346
+ error_messages = errors.full_messages.join(", ")
347
+ raise RecordInvalid.new("Validation failed: #{error_messages}")
348
+ end
349
+ success
350
+ end
351
+
341
352
  def persisted?
342
353
  id != nil
343
354
  end
@@ -1,4 +1,6 @@
1
1
  require 'shellwords'
2
+ require 'bundler/setup'
3
+
2
4
  namespace :protip do
3
5
  desc 'compile a single .proto file to Ruby'
4
6
  task :compile, [:filename, :proto_path, :ruby_path] do |t, args|
@@ -9,7 +11,7 @@ namespace :protip do
9
11
 
10
12
  filename = args[:filename] || raise(ArgumentError.new 'filename argument is required')
11
13
 
12
- command = "grpc_tools_ruby_protoc #{proto_path.map{|p| "--proto_path=#{Shellwords.escape p}"}.join ' '} --ruby_out=#{Shellwords.escape ruby_path} #{Shellwords.escape filename}"
14
+ command = "bundle exec grpc_tools_ruby_protoc #{proto_path.map{|p| "--proto_path=#{Shellwords.escape p}"}.join ' '} --ruby_out=#{Shellwords.escape ruby_path} #{Shellwords.escape filename}"
13
15
  puts command
14
16
  system command
15
17
 
@@ -22,7 +22,7 @@ module Protip
22
22
  if !value.is_a?(::ActiveSupport::TimeWithZone) && (value.is_a?(Time) || value.is_a?(DateTime))
23
23
  value = ::ActiveSupport::TimeWithZone.new(value.to_time.utc, ::ActiveSupport::TimeZone.new('UTC'))
24
24
  end
25
- raise ArgumentError unless value.is_a?(::ActiveSupport::TimeWithZone)
25
+ raise ArgumentError.new("Expected ActiveSupport::TimeWithZone, received #{value.class.name}") unless value.is_a?(::ActiveSupport::TimeWithZone)
26
26
 
27
27
  message_class.new(
28
28
  utc_timestamp: value.to_i,
@@ -32,4 +32,4 @@ module Protip
32
32
  end
33
33
  end
34
34
  end
35
- end
35
+ end
@@ -16,7 +16,7 @@ module Protip
16
16
  end
17
17
 
18
18
  def to_message(object, field)
19
- object = BigDecimal.new(object)
19
+ object = BigDecimal(object)
20
20
  rational = object.to_r
21
21
  field.subtype.msgclass.new(
22
22
  numerator: rational.numerator,
@@ -28,4 +28,4 @@ module Protip
28
28
  end
29
29
  end
30
30
  end
31
- end
31
+ end
@@ -25,7 +25,7 @@ module Protip
25
25
  decorator.assign_attributes(object)
26
26
  decorator.message
27
27
  else
28
- raise ArgumentError
28
+ raise ArgumentError.new("#to_message expected a Hash or an already decorated object, received #{object.class.name} for #{field.type} #{field.name}")
29
29
  end
30
30
  end
31
31
  end
@@ -50,7 +50,7 @@ module Protip
50
50
  ::Date.new(message.year, message.month, message.day)
51
51
  end
52
52
  def to_message(object, field)
53
- raise ArgumentError unless object.is_a?(::Date)
53
+ raise ArgumentError.new("Field #{field.name} expected a date, #{object.class.name} given") unless object.is_a?(::Date)
54
54
  field.subtype.msgclass.new(year: object.year, month: object.month, day: object.day)
55
55
  end
56
56
  end
@@ -77,7 +77,7 @@ module Protip
77
77
  if !object.is_a?(::ActiveSupport::TimeWithZone) && (object.is_a?(Time) || object.is_a?(DateTime))
78
78
  object = ::ActiveSupport::TimeWithZone.new(object.to_time.utc, ::ActiveSupport::TimeZone.new('UTC'))
79
79
  end
80
- raise ArgumentError unless object.is_a?(::ActiveSupport::TimeWithZone)
80
+ raise ArgumentError.new("Expected ActiveSupport::TimeWithZone, received #{object.class.name}") unless object.is_a?(::ActiveSupport::TimeWithZone)
81
81
 
82
82
  field.subtype.msgclass.new(
83
83
  utc_timestamp: object.to_i,
@@ -0,0 +1,3 @@
1
+ module Protip
2
+ VERSION = '0.35.0'
3
+ end
data/test/test_helper.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'minitest/autorun'
2
- require 'mocha/mini_test'
2
+ require 'mocha/minitest'
3
3
  require 'webmock/minitest'
4
4
  require 'minitest/stub/const'
5
-
6
5
  require 'minitest/pride'
6
+ require 'pry-byebug'
7
+ require 'protip'
@@ -46,7 +46,7 @@ describe Protip::Resource::Associations::BelongsToPolymorphicAssociation do
46
46
  Protip::Resource::Associations::BelongsToPolymorphicAssociation.new resource_class,
47
47
  :reference, [rick_ross_association]
48
48
  end
49
- assert_match /requires an association to be defined/, error.message
49
+ assert_match(/requires an association to be defined/, error.message)
50
50
  end
51
51
 
52
52
  it 'raises an error if a belongs-to association is provided for a field outside the oneof' do
@@ -54,7 +54,7 @@ describe Protip::Resource::Associations::BelongsToPolymorphicAssociation do
54
54
  Protip::Resource::Associations::BelongsToPolymorphicAssociation.new resource_class,
55
55
  :reference, [rick_ross_association, other_association]
56
56
  end
57
- assert_match /requires an association to be defined/, error.message
57
+ assert_match(/requires an association to be defined/, error.message)
58
58
  end
59
59
 
60
60
  it 'raises an error if a duplicate belongs-to association is provided' do
@@ -62,7 +62,7 @@ describe Protip::Resource::Associations::BelongsToPolymorphicAssociation do
62
62
  Protip::Resource::Associations::BelongsToPolymorphicAssociation.new resource_class,
63
63
  :reference, [rick_ross_association, rick_ross_association, fetty_wap_association]
64
64
  end
65
- assert_match /Duplicate association/, error.message
65
+ assert_match(/Duplicate association/, error.message)
66
66
  end
67
67
 
68
68
  it 'allows the oneof ID field to be specified' do
@@ -147,4 +147,4 @@ describe Protip::Resource::Associations::BelongsToPolymorphicAssociation do
147
147
  end
148
148
  end
149
149
  end
150
- end
150
+ end
@@ -1043,7 +1043,7 @@ module Protip::ResourceTest # Namespace for internal constants
1043
1043
  send method, :association_name, bad_option: 'bad', &block
1044
1044
  end
1045
1045
  end
1046
- assert_match /bad_option/, error.message
1046
+ assert_match(/bad_option/, error.message)
1047
1047
  end
1048
1048
  end
1049
1049
  end
@@ -27,14 +27,14 @@ describe Protip::Transformers::BigDecimalTransformer do
27
27
  end
28
28
  end
29
29
  describe 'for BigDecimal arguments' do
30
- it_transforms 'integer', BigDecimal.new(104, 1)
31
- it_transforms 'fractions', BigDecimal.new(100.5, 5)
32
- it_transforms 'rational numbers', BigDecimal.new(Rational(2, 3), 3)
30
+ it_transforms 'integer', BigDecimal(104, 1)
31
+ it_transforms 'fractions', BigDecimal(100.5, 5)
32
+ it_transforms 'rational numbers', BigDecimal(Rational(2, 3), 3)
33
33
  end
34
34
 
35
35
  describe 'for non-BigDecimal arguments' do
36
- it_transforms 'integer', 3, BigDecimal.new(3, 1)
37
- it_transforms 'string', '3.3', BigDecimal.new(3.3, 2)
36
+ it_transforms 'integer', 3, BigDecimal(3, 1)
37
+ it_transforms 'string', '3.3', BigDecimal(3.3, 2)
38
38
 
39
39
  # Match standard BigDecimal behavior for floats
40
40
  it 'raises an argument error for floats' do
@@ -45,4 +45,4 @@ describe Protip::Transformers::BigDecimalTransformer do
45
45
  end
46
46
  end
47
47
  end
48
- end
48
+ end
@@ -5,7 +5,7 @@ require 'protip/transformers/default_transformer'
5
5
  describe Protip::Transformers::DefaultTransformer do
6
6
  describe '#initialize' do
7
7
  it 'initializes without errors' do
8
- transformer = Protip::Transformers::DefaultTransformer.new
8
+ Protip::Transformers::DefaultTransformer.new
9
9
  end
10
10
  end
11
- end
11
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: protip
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.33.0
4
+ version: 0.35.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - AngelList
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-11 00:00:00.000000000 Z
11
+ date: 2020-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -16,42 +16,40 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 5.2.0
19
+ version: 4.2.10
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '6.0'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
- version: 5.2.0
29
+ version: 4.2.10
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '6.0'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: activesupport
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - ">="
32
38
  - !ruby/object:Gem::Version
33
- version: 5.2.0
39
+ version: 4.2.10
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '6.0'
34
43
  type: :runtime
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
38
47
  - - ">="
39
48
  - !ruby/object:Gem::Version
40
- version: 5.2.0
41
- - !ruby/object:Gem::Dependency
42
- name: google-protobuf
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '3.0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
49
+ version: 4.2.10
50
+ - - "<"
53
51
  - !ruby/object:Gem::Version
54
- version: '3.0'
52
+ version: '6.0'
55
53
  - !ruby/object:Gem::Dependency
56
54
  name: money
57
55
  requirement: !ruby/object:Gem::Requirement
@@ -72,20 +70,34 @@ dependencies:
72
70
  - - "<"
73
71
  - !ruby/object:Gem::Version
74
72
  version: '7.0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: google-protobuf
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - '='
78
+ - !ruby/object:Gem::Version
79
+ version: 3.9.1
80
+ type: :runtime
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - '='
85
+ - !ruby/object:Gem::Version
86
+ version: 3.9.1
75
87
  - !ruby/object:Gem::Dependency
76
88
  name: grpc-tools
77
89
  requirement: !ruby/object:Gem::Requirement
78
90
  requirements:
79
- - - "~>"
91
+ - - '='
80
92
  - !ruby/object:Gem::Version
81
- version: '1.0'
93
+ version: 1.23.0
82
94
  type: :development
83
95
  prerelease: false
84
96
  version_requirements: !ruby/object:Gem::Requirement
85
97
  requirements:
86
- - - "~>"
98
+ - - '='
87
99
  - !ruby/object:Gem::Version
88
- version: '1.0'
100
+ version: 1.23.0
89
101
  - !ruby/object:Gem::Dependency
90
102
  name: minitest
91
103
  requirement: !ruby/object:Gem::Requirement
@@ -106,84 +118,84 @@ dependencies:
106
118
  requirements:
107
119
  - - "~>"
108
120
  - !ruby/object:Gem::Version
109
- version: '0.5'
121
+ version: '0.6'
110
122
  type: :development
111
123
  prerelease: false
112
124
  version_requirements: !ruby/object:Gem::Requirement
113
125
  requirements:
114
126
  - - "~>"
115
127
  - !ruby/object:Gem::Version
116
- version: '0.5'
128
+ version: '0.6'
117
129
  - !ruby/object:Gem::Dependency
118
130
  name: mocha
119
131
  requirement: !ruby/object:Gem::Requirement
120
132
  requirements:
121
133
  - - "~>"
122
134
  - !ruby/object:Gem::Version
123
- version: '1.1'
135
+ version: '1.11'
124
136
  type: :development
125
137
  prerelease: false
126
138
  version_requirements: !ruby/object:Gem::Requirement
127
139
  requirements:
128
140
  - - "~>"
129
141
  - !ruby/object:Gem::Version
130
- version: '1.1'
142
+ version: '1.11'
131
143
  - !ruby/object:Gem::Dependency
132
144
  name: rake
133
145
  requirement: !ruby/object:Gem::Requirement
134
146
  requirements:
135
- - - "~>"
147
+ - - ">="
136
148
  - !ruby/object:Gem::Version
137
- version: '10.0'
149
+ version: 12.3.3
138
150
  type: :development
139
151
  prerelease: false
140
152
  version_requirements: !ruby/object:Gem::Requirement
141
153
  requirements:
142
- - - "~>"
154
+ - - ">="
143
155
  - !ruby/object:Gem::Version
144
- version: '10.0'
156
+ version: 12.3.3
145
157
  - !ruby/object:Gem::Dependency
146
158
  name: simplecov
147
159
  requirement: !ruby/object:Gem::Requirement
148
160
  requirements:
149
161
  - - "~>"
150
162
  - !ruby/object:Gem::Version
151
- version: '0.10'
163
+ version: '0.18'
152
164
  type: :development
153
165
  prerelease: false
154
166
  version_requirements: !ruby/object:Gem::Requirement
155
167
  requirements:
156
168
  - - "~>"
157
169
  - !ruby/object:Gem::Version
158
- version: '0.10'
170
+ version: '0.18'
159
171
  - !ruby/object:Gem::Dependency
160
- name: pry
172
+ name: pry-byebug
161
173
  requirement: !ruby/object:Gem::Requirement
162
174
  requirements:
163
- - - "~>"
175
+ - - ">="
164
176
  - !ruby/object:Gem::Version
165
- version: '0.10'
177
+ version: '0'
166
178
  type: :development
167
179
  prerelease: false
168
180
  version_requirements: !ruby/object:Gem::Requirement
169
181
  requirements:
170
- - - "~>"
182
+ - - ">="
171
183
  - !ruby/object:Gem::Version
172
- version: '0.10'
184
+ version: '0'
173
185
  - !ruby/object:Gem::Dependency
174
186
  name: webmock
175
187
  requirement: !ruby/object:Gem::Requirement
176
188
  requirements:
177
189
  - - "~>"
178
190
  - !ruby/object:Gem::Version
179
- version: 3.3.0
191
+ version: '3'
180
192
  type: :development
181
193
  prerelease: false
182
194
  version_requirements: !ruby/object:Gem::Requirement
183
195
  requirements:
184
196
  - - "~>"
185
197
  - !ruby/object:Gem::Version
186
- version: 3.3.0
198
+ version: '3'
187
199
  description:
188
200
  email:
189
201
  - team@angel.co
@@ -243,6 +255,7 @@ files:
243
255
  - lib/protip/transformers/enum_transformer.rb
244
256
  - lib/protip/transformers/primitives_transformer.rb
245
257
  - lib/protip/transformers/timestamp_transformer.rb
258
+ - lib/protip/version.rb
246
259
  - test/functional/protip/decorator_test.rb
247
260
  - test/functional/protip/resource_test.rb
248
261
  - test/test_helper.rb
@@ -279,8 +292,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
279
292
  - !ruby/object:Gem::Version
280
293
  version: '0'
281
294
  requirements: []
282
- rubyforge_project:
283
- rubygems_version: 2.5.2.3
295
+ rubygems_version: 3.0.3
284
296
  signing_key:
285
297
  specification_version: 4
286
298
  summary: Resources backed by protobuf messages