From fb555eeb79e2d5202529da8cf34c9f517c86e0de Mon Sep 17 00:00:00 2001 From: Facundo Farias Date: Tue, 29 Sep 2026 11:55:02 +0200 Subject: [PATCH] Publish as dhq-procodile so we can ship our own releases We cannot push to the `procodile` gem name on RubyGems, which is what has kept our fixes stuck in branches. Renaming the gem removes that blocker without changing anything for callers: gem name and executable name are independent, so this still installs an executable called `procodile` and every Procfile, shell script, cron job and Capistrano task keeps working untouched. `procodile-capistrano` has no dependency on this gem -- it only shells out to the binary, via a configurable `:procodile_binary` -- so nothing in the deploy path needs to change either. Alongside the rename: - Drop `cert_chain` and `signing_key`. They point at Adam Cooke's gem signing key, which we do not have, so `gem build` could not produce a usable gem while they were referenced. - Declare `logger` as a runtime dependency. lib/procodile/logger.rb requires it, and while it is still a default gem on Ruby 3.x it is being removed from the default set in Ruby 4.0 -- which already emits a deprecation warning on require when running the suite. - Set `required_ruby_version` to '>= 2.7', matching the Ruby versions the CI matrix actually exercises. - Ship MIT-LICENCE and README.md in the gem, so the license travels with the package as MIT requires. - Point homepage, source_code_uri and bug_tracker_uri at this fork, and credit both Adam Cooke and DeployHQ as authors. The README now leads with why this fork exists, credits the original work, and documents the `dhq-procodile` install with its `procodile` executable. Verified: gem builds, installs, and `procodile --version` reports 1.0.27; `procodile status -r ` parses a real Procfile and reports correctly. Co-Authored-By: Claude Opus 5 (1M context) --- .gitignore | 1 + README.md | 19 +++++++++++++++++-- dhq-procodile.gemspec | 26 ++++++++++++++++++++++++++ procodile.gemspec | 18 ------------------ 4 files changed, 44 insertions(+), 20 deletions(-) create mode 100644 dhq-procodile.gemspec delete mode 100644 procodile.gemspec diff --git a/.gitignore b/.gitignore index f1f4956..fc29803 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ test-app/log test-app/pids test-app/procodile.log global.yml +*.gem diff --git a/README.md b/README.md index a290ed1..740ac90 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,20 @@ # Procodile 🐊 +> **This is DeployHQ's maintained fork of [adamcooke/procodile](https://github.com/adamcooke/procodile).** +> +> Upstream has had no release since 1.0.26 (November 2019) and no commit since February 2021. Its `master` carries a version bump to 1.0.27 and a bug fix that were never published to RubyGems, and open pull requests have gone unanswered for years. +> +> We depend on Procodile to run DeployHQ in production, so we maintain it. All credit for the original work goes to Adam Cooke; this fork stays MIT licensed. +> +> **The gem is published as [`dhq-procodile`](https://rubygems.org/gems/dhq-procodile)**, because we do not own the `procodile` name on RubyGems. It still installs an executable called `procodile`, so no Procfile, script, or Capistrano config needs to change: +> +> ``` +> gem install dhq-procodile +> procodile --version +> ``` +> +> Upstream pull requests are left open as a courtesy, but this fork is where changes land. + Running & deploying Ruby apps to places like [Viaduct](https://viaduct.io) & Heroku is really easy but running processes on actual servers is less fun. Procodile aims to take some the stress out of running your Ruby/Rails apps and give you some of the useful process management features you get from the takes of the PaaS providers. Procodile is a bit like [Foreman](https://github.com/ddollar/foreman) but things are designed to run in the background (as well as the foreground if you prefer) and there's a supervisor which keeps an eye on your processes and will respawn them if they die. @@ -8,7 +23,7 @@ Procodile works out of the box with your existing `Procfile`. * [Watch a quick screencast](https://vimeo.com/188041935) * [Read documentation](https://github.com/adamcooke/procodile/wiki) -* [View on RubyGems](https://rubygems.org/gems/procodile) -* [Check the CHANGELOG](https://github.com/adamcooke/procodile/blob/master/CHANGELOG.md) +* [View on RubyGems](https://rubygems.org/gems/dhq-procodile) +* [Check the CHANGELOG](https://github.com/adamcooke/procodile/blob/master/CHANGELOG.md) (upstream) ![Screenshot](https://share.adam.ac/16/cAZRKUM7.png) diff --git a/dhq-procodile.gemspec b/dhq-procodile.gemspec new file mode 100644 index 0000000..f312ebb --- /dev/null +++ b/dhq-procodile.gemspec @@ -0,0 +1,26 @@ +require_relative './lib/procodile/version' +Gem::Specification.new do |s| + s.name = "dhq-procodile" + s.description = %q{A sophisticated process manager for applications running on Linux & macOS. This is DeployHQ's maintained fork of Adam Cooke's procodile, which has had no release since 2019.} + s.summary = %q{This gem will help you run processes from a Procfile on Linux/macOS machines in the background or the foreground. DeployHQ's maintained fork of procodile.} + s.homepage = "https://github.com/deployhq/procodile" + s.version = Procodile::VERSION + s.files = Dir.glob("{lib,bin}/**/*") + ['MIT-LICENCE', 'README.md'] + s.require_paths = ["lib"] + s.authors = ["Adam Cooke", "DeployHQ"] + s.email = ["support@deployhq.com"] + s.licenses = ['MIT'] + # Matches the Ruby versions exercised by .github/workflows/tests.yml + s.required_ruby_version = '>= 2.7' + s.metadata = { + 'source_code_uri' => 'https://github.com/deployhq/procodile', + 'bug_tracker_uri' => 'https://github.com/deployhq/procodile/issues' + } + s.bindir = "bin" + s.executables << 'procodile' + s.add_runtime_dependency 'json' + # `logger` is still a default gem on Ruby 3.x but is being removed from the + # default set in Ruby 4.0, which already warns on require. lib/procodile/logger.rb + # requires it, so declare it rather than relying on it being present. + s.add_runtime_dependency 'logger' +end diff --git a/procodile.gemspec b/procodile.gemspec deleted file mode 100644 index af06847..0000000 --- a/procodile.gemspec +++ /dev/null @@ -1,18 +0,0 @@ -require_relative './lib/procodile/version' -Gem::Specification.new do |s| - s.name = "procodile" - s.description = %q{A sophisticated process manager for applications running on Linux & macOS.} - s.summary = %q{This gem will help you run processes from a Procfile on Linux/macOS machines in the background or the foreground.} - s.homepage = "https://github.com/adamcooke/procodile" - s.version = Procodile::VERSION - s.files = Dir.glob("{lib,bin}/**/*") - s.require_paths = ["lib"] - s.authors = ["Adam Cooke"] - s.email = ["me@adamcooke.io"] - s.licenses = ['MIT'] - s.cert_chain = ['certs/adamcooke.pem'] - s.signing_key = File.expand_path("~/.gem/signing-key.pem") if $0 =~ /gem\z/ - s.bindir = "bin" - s.executables << 'procodile' - s.add_runtime_dependency 'json' -end