pbbuilder 0.13.0 → 0.13.2

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
2
  SHA256:
3
- metadata.gz: 4e4a4d405e3fe428fa8de8ba8609f62211a0224d76fe13bc32d7caf2a07e089c
4
- data.tar.gz: 35cf4c2ed96cbb643dfb22db3de4d6ff035cc420f78806489d329b42fd14f88e
3
+ metadata.gz: 4ece867edfd6c367638386b6ff729160fc48869e95da675c27dcf863e114bb0f
4
+ data.tar.gz: 2ca090784cbbd677cb428f7aefe74acf350e06331f234fba62fc65266284cd46
5
5
  SHA512:
6
- metadata.gz: 5aa3d1b2e64745042fdc1e828ee295d9e14c9891ab3a826d7af64563451b31e2dff28b744419cbb54db31e564dff5e960a2270ab98f480baeca4aeee71373e5e
7
- data.tar.gz: 26d816822376f1857cd517c81ac88df26f2cf52cc0aa82dc602249e67f33a446bd8c10aec1cff544638484cb58c03121f15145af7f4ea3af05c13d45f770e29d
6
+ metadata.gz: 8a0128aef94081281e0c8430aa4779864c5571f1d3a4e9d7d4af9f12134fce29fdea37464228b4b21cd4739c06cf8f971d8bb4d4084038acea78cbcfc7f5783b
7
+ data.tar.gz: 92a957df036ae419b6734747d503fa348462156aa369c707d270125a1d17b3fc107b92905550a594415d6c514664da066be4fcc46be27c391d532939e3f55182
data/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file.
3
3
 
4
4
  This format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
5
5
 
6
+ ## 0.13.2 2023.02.3
7
+ ### Fixed
8
+ - In case ActiveSupport::Cache::FileStore in Rails is used as a cache, File.atomic_write can have a race condition and fail to rename temporary file. We're attempting to recover from that, by catching this specific error and returning a value.
9
+
10
+ ## 0.13.1 2023.01.24
11
+ ### Added
12
+ - #merge! to support boolean values
13
+
6
14
  ## 0.13.0 2023.01.18
7
15
  ### Added
8
16
  - #merge! method added for PbbuilderTemplate class
@@ -108,11 +108,22 @@ class PbbuilderTemplate < Pbbuilder
108
108
  # @param key string
109
109
  # @params options hash
110
110
  #
111
- # @return string
111
+ # @return string contents of a cache
112
112
  def _write_fragment_cache(key, options = nil)
113
- @context.controller.instrument_fragment_cache :_write_fragment, key do
113
+ @context.controller.instrument_fragment_cache :write_fragment, key do
114
114
  yield.tap do |value|
115
- ::Rails.cache.write(key, value, options)
115
+ begin
116
+ ::Rails.cache.write(key, value, options)
117
+ rescue SystemCallError
118
+ # In case ActiveSupport::Cache::FileStore in Rails is used as a cache,
119
+ # File.atomic_write can have a race condition and fail to rename temporary
120
+ # file. We're attempting to recover from that, by catching this specific
121
+ # error and returning a value.
122
+ #
123
+ # @see https://github.com/rails/rails/pull/44151
124
+ # @see https://github.com/rails/rails/blob/main/activesupport/lib/active_support/core_ext/file/atomic.rb#L50
125
+ value
126
+ end
116
127
  end
117
128
  end
118
129
  end
data/lib/pbbuilder.rb CHANGED
@@ -111,11 +111,11 @@ class Pbbuilder
111
111
  #
112
112
  # @param object [Hash]
113
113
  def merge!(object)
114
- ::Kernel.raise ::MergeError.build(target!, object) unless object.class == ::Hash
114
+ ::Kernel.raise Pbbuilder::MergeError.build(target!, object) unless object.class == ::Hash
115
115
 
116
116
  object.each_key do |key|
117
- if object[key].empty?
118
- ::Kernel.raise ::MergeError.build(target!, object)
117
+ if object[key].respond_to?(:empty?) && object[key].empty?
118
+ ::Kernel.raise Pbbuilder::MergeError.build(target!, object)
119
119
  end
120
120
 
121
121
  if object[key].class == ::String
@@ -124,6 +124,9 @@ class Pbbuilder
124
124
  elsif object[key].class == ::Array
125
125
  # pb.tags ['test', 'ok']
126
126
  @message[key.to_s].replace object[key]
127
+ elsif object[key].class == ::TrueClass || object[key].class == ::FalseClass
128
+ # pb.boolean true || false
129
+ @message[key.to_s] = object[key]
127
130
  elsif ( obj = object[key]).class == ::Hash
128
131
  # pb.field_name do
129
132
  # pb.tags ["ok", "cool"]
data/pbbuilder.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "pbbuilder"
3
- spec.version = "0.13.0"
3
+ spec.version = "0.13.2"
4
4
  spec.authors = ["Bouke van der Bijl"]
5
5
  spec.email = ["bouke@cheddar.me"]
6
6
  spec.homepage = "https://github.com/cheddar-me/pbbuilder"
@@ -85,6 +85,11 @@ class PbbuilderTemplateTest < ActiveSupport::TestCase
85
85
  assert_equal("suslik", result.name)
86
86
  end
87
87
 
88
+ test "boolean support in merge! method" do
89
+ assert(render('pb.merge! "boolean_me" => true').boolean_me)
90
+ refute(render('pb.merge! "boolean_me" => false').boolean_me)
91
+ end
92
+
88
93
  test "support for merge! method in a block" do
89
94
  result = render(<<-PBBUILDER)
90
95
  pb.best_friend do
@@ -115,10 +120,10 @@ class PbbuilderTemplateTest < ActiveSupport::TestCase
115
120
  result = nil
116
121
 
117
122
  assert_nothing_raised do
118
- result = render(<<-JBUILDER)
123
+ result = render(<<-PBBUILDER)
119
124
  pb.name "suslik"
120
125
  pb.cache! "nothing" do; end
121
- JBUILDER
126
+ PBBUILDER
122
127
  end
123
128
 
124
129
  assert_equal "suslik", result["name"]
@@ -192,7 +197,7 @@ class PbbuilderTemplateTest < ActiveSupport::TestCase
192
197
  end
193
198
 
194
199
  test "conditional object fragment caching" do
195
- render(<<-JBUILDER)
200
+ render(<<-PBBUILDER)
196
201
  pb.cache_if! true, "cache-key" do
197
202
  pb.name "Hit"
198
203
  end
@@ -200,9 +205,9 @@ class PbbuilderTemplateTest < ActiveSupport::TestCase
200
205
  pb.cache_if! false, "cache-key" do
201
206
  pb.last_name "Hit"
202
207
  end
203
- JBUILDER
208
+ PBBUILDER
204
209
 
205
- result = render(<<-JBUILDER)
210
+ result = render(<<-PBBUILDER)
206
211
  pb.cache_if! true, "cache-key" do
207
212
  pb.name "Miss"
208
213
  end
@@ -210,7 +215,7 @@ class PbbuilderTemplateTest < ActiveSupport::TestCase
210
215
  pb.cache_if! false, "cache-key" do
211
216
  pb.last_name "Miss"
212
217
  end
213
- JBUILDER
218
+ PBBUILDER
214
219
 
215
220
  assert_equal "Hit", result["name"]
216
221
  assert_equal "Miss", result["last_name"]
data/test/test_helper.rb CHANGED
@@ -22,13 +22,14 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
22
22
  add_file("pbbuilder.proto", syntax: :proto3) do
23
23
  add_message "pbbuildertest.Person" do
24
24
  optional :name, :string, 1
25
- optional :last_name, :string, 8
26
25
  repeated :friends, :message, 2, "pbbuildertest.Person"
27
26
  optional :best_friend, :message, 3, "pbbuildertest.Person"
28
27
  repeated :nicknames, :string, 4
29
28
  optional :field_mask, :message, 5, "google.protobuf.FieldMask"
30
29
  map :favourite_foods, :string, :string, 6
31
30
  repeated :tags, :string, 7
31
+ optional :last_name, :string, 8
32
+ optional :boolean_me, :bool, 9
32
33
  end
33
34
  end
34
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pbbuilder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.13.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bouke van der Bijl
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-18 00:00:00.000000000 Z
11
+ date: 2023-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-protobuf