flatware 2.2.0 → 2.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cf9e819cd4142e9648a8dbe098afc8077e5a6dc64e58dc1fe1a025efc081a105
4
- data.tar.gz: 947a36ace6700bb8280af4626d80199b186120e6a835802e064d13cfbe16fba0
3
+ metadata.gz: 278612d774eb619a0548544e33650c8f73b4fa1b88de900027aba730a46c51bd
4
+ data.tar.gz: a1ac3e33ff822f2cac88fe24914d1034bffd40872ca0e10791e8019a60f64d68
5
5
  SHA512:
6
- metadata.gz: abfe9079d1576452f489eb16300934838d7efef290523af3369918f1e99efc30608f8faa93f20f096710551d03fb892647ee2891e0767a300086345abf3e022b
7
- data.tar.gz: 55f1933b44ebc6783598acb067ca7c33a42a2d7bbbf49310aa46dadefcfdf9e215b66aa08e2948792660aacb84c0a0fd9c3a509c2d84e0627522cff8d334977f
6
+ metadata.gz: 48e11bc65e1e0423567b21175a313766aeb1949aa3f7f168e005c3657f9a189da5003aea4c8f50230969875dc6363fe5e8eacebb0c594d4fdea28c3775082791
7
+ data.tar.gz: 1f6abcc7d6b8d1e29e8c588e27dd077b8af754fb7c3b057f648d595974591c5069f147fe6b3f43768655add6553a090b240312180773f58db5d0b23f74e76cdc
data/README.md CHANGED
@@ -106,6 +106,11 @@ Flatware has a couple lifecycle callbacks that you can use to avoid booting your
106
106
  over again on every core. One way to take advantage of this via a `spec/flatware_helper.rb` file like so:
107
107
 
108
108
  ```ruby
109
+ ##
110
+ # uncomment if you get a segmentation fault from the "pg" gem
111
+ # @see https://github.com/ged/ruby-pg/issues/311#issuecomment-1609970533
112
+ # ENV["PGGSSENCMODE"] = "disable"
113
+
109
114
  Flatware.configure do |conf|
110
115
  conf.before_fork do
111
116
  require 'rails_helper'
@@ -114,6 +119,11 @@ Flatware.configure do |conf|
114
119
  end
115
120
 
116
121
  conf.after_fork do |test_env_number|
122
+ ##
123
+ # uncomment if you're using SimpleCov and have started it in `rails_helper` as suggested here:
124
+ # @see https://github.com/simplecov-ruby/simplecov/tree/main?tab=readme-ov-file#use-it-with-any-framework
125
+ # SimpleCov.at_fork.call(test_env_number)
126
+
117
127
  config = ActiveRecord::Base.connection_db_config.configuration_hash
118
128
 
119
129
  ActiveRecord::Base.establish_connection(
@@ -126,6 +136,15 @@ end
126
136
  ```
127
137
  Now when I run `bundle exec flatware rspec -r ./spec/flatware_helper` My app only boots once, rather than once per core.
128
138
 
139
+ ## SimpleCov
140
+
141
+ If you're using SimpleCov, follow [their directions](https://github.com/simplecov-ruby/simplecov/tree/main?tab=readme-ov-file#use-it-with-any-framework) to install. When you have it working as desired for serial runs, add
142
+ `SimpleCov.at_fork.call(test_env_number)` to flatware's `after_fork` hook. You should now get the same coverage stats from parallel and serial runs.
143
+
144
+ ## Segmentation faults in the PG gem
145
+
146
+ If you get a segmentation fault on start you may need to add `ENV["PGGSSENCMODE"] = "disable"` to the top of your flatware helper.
147
+
129
148
  ## Design Goals
130
149
 
131
150
  ### Maintainable
@@ -170,3 +189,10 @@ Do whatever you want. I'd love to help make sure Flatware meets your needs.
170
189
  [![Hashrocket logo](https://hashrocket.com/hashrocket_logo.svg)](https://hashrocket.com)
171
190
 
172
191
  Flatware is supported by the team at [Hashrocket](https://hashrocket.com), a multidisciplinary design & development consultancy. If you'd like to [work with us](https://hashrocket.com/contact-us/hire-us) or [join our team](https://hashrocket.com/contact-us/jobs), don't hesitate to get in touch.
192
+
193
+
194
+ # TODO:
195
+
196
+ possible simplecov fixes
197
+
198
+ 1. seems like we won't get the same results as serial rspec runs unless we start simplecov after fork. And if we do that, I think a process needs to claim to be the last one for simplecov to run the merge.
data/lib/flatware/cli.rb CHANGED
@@ -55,7 +55,8 @@ module Flatware
55
55
 
56
56
  def start_sink(jobs:, workers:, formatter:)
57
57
  $0 = 'flatware sink'
58
- Process.setpgrp
58
+ try_setpgrp
59
+
59
60
  passed = Sink.start_server(
60
61
  jobs: jobs,
61
62
  formatter: Flatware::Broadcaster.new([formatter]),
@@ -65,6 +66,12 @@ module Flatware
65
66
  exit passed ? 0 : 1
66
67
  end
67
68
 
69
+ def try_setpgrp
70
+ Process.setpgrp
71
+ rescue Errno::EPERM => e
72
+ Flatware.log 'continuing after: Process.setpgrp:', e.message
73
+ end
74
+
68
75
  def workers
69
76
  options[:workers]
70
77
  end
@@ -3,11 +3,11 @@ module Flatware
3
3
  attr_reader :class, :message, :cause
4
4
  attr_accessor :backtrace
5
5
 
6
- def initialize(klass, message, backtrace, cause = '')
6
+ def initialize(klass, message, backtrace, cause = nil)
7
7
  @class = serialized(klass)
8
8
  @message = message
9
9
  @backtrace = backtrace
10
- @cause = cause
10
+ @cause = cause && SerializedException.from(cause)
11
11
  end
12
12
 
13
13
  def self.from(exception)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Flatware
4
- VERSION = '2.2.0'
4
+ VERSION = '2.2.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flatware
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Dunn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-14 00:00:00.000000000 Z
11
+ date: 2024-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor