tomo 1.14.1 → 1.15.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: f16c0351ed9e2f276d92b392f009490cf225c94adf318836a6556b6e92ff913b
4
- data.tar.gz: b10e3f521efba3854ce8985680023d1e0fd79fb6e6be3acfe46e6a37a45cbd45
3
+ metadata.gz: e08c46b7da961cb96428f331a4d87af1fbf268c5a59b1dc129a55e469aca235d
4
+ data.tar.gz: 856bc5e3e24a905d464a50f8af236992aa85d5e8f024a0b17fbb59991db815f5
5
5
  SHA512:
6
- metadata.gz: 880d8a3505f6f5435b2e2af09d967b5121b906f001caf71bb5cf10f43f13f0dc6802b6fb1f4a0335f3ca06ab855b8bf4995f7105b52ea6bf0a277f7f79ffef1c
7
- data.tar.gz: 17fdc0e24d0b08f638bbeeddee49221d77dbd8c7767f3c0a79ce9378bc8c20ac86c997e52ce98267463e015a3559323ee0ff1551225772f53071623f99c29c26
6
+ metadata.gz: 050dfde517f1372eceaa32244e40f61dc689476ee2722b6b0e0cd3b52faa8a78df5c487a3c97753c6cb754696617b0ac4249b71218a7abbaa3f42ae270f902e2
7
+ data.tar.gz: '0589328cb0d63507ca917b69b298a50c0969b517e8eff3ccbab64b37bb18d81cd079f092a3c65b3993b1712a0e63b646a6b16514dd9ea1e12683106b3042f0d8'
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Tomo
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/tomo.svg)](https://rubygems.org/gems/tomo)
4
- [![Circle](https://circleci.com/gh/mattbrictson/tomo/tree/main.svg?style=shield)](https://app.circleci.com/pipelines/github/mattbrictson/tomo?branch=main)
4
+ [![Build Status](https://mattbrictson.semaphoreci.com/badges/tomo/branches/main.svg?style=shields)](https://mattbrictson.semaphoreci.com/projects/tomo)
5
5
  [![Code Climate](https://codeclimate.com/github/mattbrictson/tomo/badges/gpa.svg)](https://codeclimate.com/github/mattbrictson/tomo)
6
6
 
7
7
  Tomo is a friendly command-line tool for deploying Rails apps.
@@ -62,6 +62,8 @@ module Tomo::Plugin::Nodenv
62
62
  version = remote.capture("cat", path, raise_on_error: false).strip
63
63
  return version unless version.empty?
64
64
 
65
+ return "DRY_RUN_PLACEHOLDER" if dry_run?
66
+
65
67
  die <<~REASON
66
68
  Could not guess node version from .node-version file.
67
69
  Use the :nodenv_node_version setting to specify the version of node to install.
@@ -34,10 +34,8 @@ module Tomo::Plugin::Rbenv
34
34
  ruby_version = version_setting || extract_ruby_ver_from_version_file
35
35
 
36
36
  unless ruby_installed?(ruby_version)
37
- logger.info(
38
- "Installing ruby #{ruby_version} -- this may take several minutes"
39
- )
40
- remote.run "CFLAGS=-O3 rbenv install #{ruby_version.shellescape}"
37
+ logger.info("Installing ruby #{ruby_version} -- this may take several minutes")
38
+ remote.run "CFLAGS=-O3 rbenv install #{ruby_version.shellescape} --verbose"
41
39
  end
42
40
  remote.run "rbenv global #{ruby_version.shellescape}"
43
41
  end
data/lib/tomo/ssh.rb CHANGED
@@ -17,13 +17,17 @@ module Tomo
17
17
  options = Options.new(options) unless options.is_a?(Options)
18
18
 
19
19
  Tomo.logger.connect(host)
20
- return Connection.dry_run(host, options) if Tomo.dry_run?
20
+ return build_dry_run_connection(host, options) if Tomo.dry_run?
21
21
 
22
22
  build_connection(host, options)
23
23
  end
24
24
 
25
25
  private
26
26
 
27
+ def build_dry_run_connection(host, options)
28
+ Connection.dry_run(host, options)
29
+ end
30
+
27
31
  def build_connection(host, options)
28
32
  conn = Connection.new(host, options)
29
33
  validator = ConnectionValidator.new(options.executable, conn)
@@ -33,6 +33,7 @@ set env_vars: {
33
33
  RAILS_ENV: "production",
34
34
  RAILS_LOG_TO_STDOUT: "1",
35
35
  RAILS_SERVE_STATIC_FILES: "1",
36
+ RUBY_YJIT_ENABLE: "1",
36
37
  BOOTSNAP_CACHE_DIR: "tmp/bootsnap-cache",
37
38
  DATABASE_URL: :prompt,
38
39
  SECRET_KEY_BASE: :prompt
@@ -44,8 +44,6 @@ module Tomo
44
44
  end
45
45
 
46
46
  def puma_port
47
- return 3000 if ENV["_TOMO_CONTAINER"]
48
-
49
47
  Local.capture("docker port #{container_id} 3000")[/:(\d+)/, 1].to_i
50
48
  end
51
49
 
@@ -88,13 +86,7 @@ module Tomo
88
86
  end
89
87
 
90
88
  def start_container
91
- host_container = ENV["_TOMO_CONTAINER"]
92
- args = "--detach --init #{image_id}"
93
- if host_container
94
- args.prepend("--network=container:#{host_container} ")
95
- else
96
- args.prepend("--publish-all ")
97
- end
89
+ args = "--publish-all --detach --init #{image_id}"
98
90
  Local.capture("docker run #{args}")[/\S+/].tap do
99
91
  # Allow some time for the container to finish booting
100
92
  sleep 0.1
@@ -102,8 +94,6 @@ module Tomo
102
94
  end
103
95
 
104
96
  def find_ssh_port
105
- return 22 if ENV["_TOMO_CONTAINER"]
106
-
107
97
  Local.capture("docker port #{container_id} 22")[/:(\d+)/, 1].to_i
108
98
  end
109
99
 
@@ -20,6 +20,8 @@ module Tomo
20
20
 
21
21
  def result_for(script)
22
22
  match = mocks.find { |regexp, _| regexp.match?(script.to_s) }
23
+ raise "Scripts cannot be mocked during dry_run" if match && Tomo.dry_run?
24
+
23
25
  match&.last || Result.empty_success
24
26
  end
25
27
  end
@@ -78,7 +78,7 @@ module Tomo
78
78
  end
79
79
 
80
80
  def interactive?
81
- Tomo::Console.interactive? && !ENV["_TOMO_CONTAINER"]
81
+ Tomo::Console.interactive?
82
82
  end
83
83
 
84
84
  def wait_for_exit(thread, seconds=nil)
@@ -3,6 +3,12 @@ module Tomo
3
3
  module SSHExtensions
4
4
  private
5
5
 
6
+ def build_dry_run_connection(host, options)
7
+ return super if Testing.ssh_enabled
8
+
9
+ Testing::Connection.new(host, options)
10
+ end
11
+
6
12
  def build_connection(host, options)
7
13
  return super if Testing.ssh_enabled
8
14
 
@@ -17,8 +17,27 @@ touch /var/lib/systemd/linger/deployer
17
17
 
18
18
  # Packages needed for ruby, etc.
19
19
  apt-get -y update
20
- apt-get -y install build-essential pkg-config git-core curl locales \
21
- libffi-dev libreadline-dev libsqlite3-dev libssl-dev libyaml-dev zlib1g-dev
20
+ apt-get -y install autoconf \
21
+ bison \
22
+ build-essential \
23
+ curl \
24
+ git-core \
25
+ libdb-dev \
26
+ libffi-dev \
27
+ libgdbm-dev \
28
+ libgdbm6 \
29
+ libgmp-dev \
30
+ libncurses5-dev \
31
+ libreadline6-dev \
32
+ libsqlite3-dev \
33
+ libssl-dev \
34
+ libyaml-dev \
35
+ locales \
36
+ patch \
37
+ pkg-config \
38
+ rustc \
39
+ uuid-dev \
40
+ zlib1g-dev
22
41
 
23
42
  apt-get -y install tzdata \
24
43
  -o DPkg::options::="--force-confdef" \
data/lib/tomo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Tomo
2
- VERSION = "1.14.1".freeze
2
+ VERSION = "1.15.1".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: 1.14.1
4
+ version: 1.15.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Brictson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-01-01 00:00:00.000000000 Z
11
+ date: 2023-04-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Tomo is a feature-rich deployment tool that contains everything you need
14
14
  to deploy a basic Rails app out of the box. It has an opinionated, production-tested
@@ -189,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
189
189
  - !ruby/object:Gem::Version
190
190
  version: '0'
191
191
  requirements: []
192
- rubygems_version: 3.4.1
192
+ rubygems_version: 3.4.10
193
193
  signing_key:
194
194
  specification_version: 4
195
195
  summary: A friendly CLI for deploying Rails apps ✨