tomo 0.6.0 → 0.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4f17c4f644a912a79bac63de1bf2bd3d27d87e3bbe58ffdb63e1ee1ffaea160c
4
- data.tar.gz: cc22d62f9bd02f647197a7d691c005a5ddf095141f40c12a8af3ea211fd41c04
3
+ metadata.gz: 92b79ae23f462d987b150fe0537a743f087e150b6947780baa77ea4046e7d9b9
4
+ data.tar.gz: 77f301ef039cc4b8e8ed65f4009f0f1e0f3b0edaba7420f7b9994797b78bd53f
5
5
  SHA512:
6
- metadata.gz: 52e06ed4c55e3d1630108802847c04235b1d48ee26225c1e78207931311333c00003c50e5a204aeb2a6752f9013bd3e2610436f2cc65222ea46bdb08513fbeea
7
- data.tar.gz: f898fbf717712c309d5c30431fe6a30c71263c1139a4426ad573e8354506cc69dbfba3b443ff100dd1ce35b67c7c837b17d468698ba12a25762e6455cba07859
6
+ metadata.gz: 312cc7f96ebe0fa19c369fe1bb3ad3c8ea654abfbc8f6d35ec8253f03f8694f4300d6b113d9c17a20ab0473d649b1c0404611f746ffbf563a0c15b8eb35b29e4
7
+ data.tar.gz: 737e7aa7cbffe6a048164a6798fc63847ec32478ea81fe63b78fe62b95970f602c6c888b5087a7c03ffe281807182284e1d46ce8e25eff189bc48591a7c598b4
data/README.md CHANGED
@@ -199,6 +199,20 @@ By default, tomo uses the ["accept-new"](https://www.openssh.com/txt/release-7.6
199
199
  set ssh_strict_host_key_checking: true # or false
200
200
  ```
201
201
 
202
+ #### Why does my deploy hang after starting puma?
203
+
204
+ Puma 4.1.0 [has a bug](https://github.com/puma/puma/issues/1906) where its output isn't properly detached prior to daemonzing. This causes tomo to hang waiting for output. You may see something like this prior to the deploy freezing:
205
+
206
+ ```
207
+ Puma starting in single mode...
208
+ * Version 4.1.0 (ruby 2.6.4-p104), codename: Fourth and One
209
+ * Min threads: 5, max threads: 5
210
+ * Environment: production
211
+ * Daemonizing...
212
+ ```
213
+
214
+ To fix, upgrade to puma 4.1.1 or newer.
215
+
202
216
  ## Support
203
217
 
204
218
  This project is a labor of love and I can only spend a few hours a week maintaining it, at most. If you'd like to help by submitting a pull request, or if you've discovered a bug that needs my attention, please let me know. Check out [CONTRIBUTING.md](https://github.com/mattbrictson/tomo/blob/master/CONTRIBUTING.md) to get started. Happy hacking! —Matt
data/lib/tomo/cli.rb CHANGED
@@ -42,7 +42,7 @@ module Tomo
42
42
  command.parse(argv)
43
43
  rescue Interrupt
44
44
  handle_error(InterruptedError.new, command_name)
45
- rescue StandardError => e
45
+ rescue StandardError, SyntaxError => e
46
46
  handle_error(e, command_name)
47
47
  end
48
48
 
@@ -2,20 +2,31 @@ module Tomo
2
2
  class Configuration
3
3
  module DSL
4
4
  module ErrorFormatter
5
- def self.decorate(error, path, lines)
6
- if error.backtrace[0..1].grep(/^#{Regexp.quote(path)}:/).empty?
7
- return error
5
+ class << self
6
+ def decorate(error, path, lines)
7
+ line_no = find_line_no(path, error.message, *error.backtrace[0..1])
8
+ return error if line_no.nil?
9
+
10
+ error.extend(self)
11
+ error.dsl_lines = lines || []
12
+ error.dsl_path = path
13
+ error.error_line_no = line_no
14
+ error
8
15
  end
9
16
 
10
- error.extend(self)
11
- error.dsl_lines = lines || []
12
- error.dsl_path = path
13
- error
17
+ private
18
+
19
+ def find_line_no(path, *lines)
20
+ lines.find do |line|
21
+ line_no = line[/^#{Regexp.quote(path)}:(\d+):/, 1]
22
+ break line_no.to_i if line_no
23
+ end
24
+ end
14
25
  end
15
26
 
16
27
  include Colors
17
28
 
18
- attr_accessor :dsl_lines, :dsl_path
29
+ attr_accessor :dsl_lines, :dsl_path, :error_line_no
19
30
 
20
31
  def to_console
21
32
  <<~ERROR
@@ -39,16 +50,6 @@ module Tomo
39
50
  HINT
40
51
  end
41
52
 
42
- def error_line_no
43
- @_error_line_no ||= begin
44
- pattern = /^#{Regexp.quote(dsl_path)}:(\d+):/
45
- backtrace.each do |entry|
46
- match = pattern.match(entry)
47
- break match[1].to_i if match
48
- end
49
- end
50
- end
51
-
52
53
  # rubocop:disable Metrics/AbcSize
53
54
  # rubocop:disable Metrics/MethodLength
54
55
  def highlighted_lines
@@ -23,7 +23,7 @@ module Tomo
23
23
  config.working_dir = File.dirname(path)
24
24
  DSL::ConfigFile.new(config).instance_eval(config_rb, path.to_s, 1)
25
25
  end
26
- rescue StandardError => e
26
+ rescue StandardError, SyntaxError => e
27
27
  raise DSL::ErrorFormatter.decorate(e, path, config_rb&.lines)
28
28
  end
29
29
 
@@ -31,9 +31,7 @@ module Tomo::Plugin::Puma
31
31
 
32
32
  remote.chdir(paths.current) do
33
33
  remote.bundle(
34
- "exec", "puma", "--daemon", *control_options,
35
- raw(">"), paths.puma_stdout,
36
- raw("2>"), paths.puma_stderr
34
+ "exec", "puma", "--daemon", *control_options, *output_options
37
35
  )
38
36
  end
39
37
  end
@@ -51,5 +49,12 @@ module Tomo::Plugin::Puma
51
49
  "--control-token", settings[:puma_control_token]
52
50
  ]
53
51
  end
52
+
53
+ def output_options
54
+ options = []
55
+ options << ["--redirect-stdout", paths.puma_stdout] if paths.puma_stdout
56
+ options << ["--redirect-stderr", paths.puma_stderr] if paths.puma_stderr
57
+ options.flatten
58
+ end
54
59
  end
55
60
  end
@@ -10,8 +10,12 @@ module Tomo
10
10
  @token = SecureRandom.hex(8)
11
11
  end
12
12
 
13
+ def in_temp_dir(&block)
14
+ super(token, &block)
15
+ end
16
+
13
17
  def run(*args, raise_on_error: true)
14
- in_temp_dir(token) do
18
+ in_temp_dir do
15
19
  restoring_defaults do
16
20
  capturing_logger_output do
17
21
  handling_exit(raise_on_error) do
data/lib/tomo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Tomo
2
- VERSION = "0.6.0".freeze
2
+ VERSION = "0.7.0".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tomo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Brictson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-02 00:00:00.000000000 Z
11
+ date: 2019-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler