Skip to content

Publish as dhq-procodile so we can ship our own releases - #5

Open
facundofarias wants to merge 1 commit into
masterfrom
rename-gem-for-publishing
Open

facundofarias wants to merge 1 commit into
masterfrom
rename-gem-for-publishing

Conversation

@facundofarias

@facundofarias facundofarias commented Sep 29, 2026 •

Copy link
Copy Markdown

Why

We cannot push to the procodile gem name on RubyGems — it belongs to Adam Cooke. That is the actual reason our fixes have been stuck in branches rather than running in production.

Renaming the gem removes the blocker. Gem name and executable name are independent, so this still installs an executable called procodile, and nothing downstream changes:

  • Every Procfile, Procfile.local and Procfile.options is untouched.
  • procodile status | grep general_worker in our orphan-detection scripts still works.
  • devops/procodile-scripts/procodile_startup.sh (cron) still calls bare procodile.
  • procodile-capistrano has no dependency on this gem — it only shells out to the binary, and via a configurable :procodile_binary at that. The deploy path needs no change.
gem install dhq-procodile
procodile --version   # => procodile 1.0.27

Changes

Change Why
s.name → dhq-procodile The name we can actually publish
Drop cert_chain / signing_key They point at Adam Cooke's signing key, which we do not have. gem build could not produce a usable gem while referenced.
Declare logger runtime dep lib/procodile/logger.rb requires it. Still a default gem on Ruby 3.x, but removed from the default set in Ruby 4.0 — the suite already emits the deprecation warning.
required_ruby_version = '>= 2.7' Matches the Ruby versions the CI matrix in #1 actually exercises
Ship MIT-LICENCE + README.md in the gem The license must travel with the package
homepage / source_code_uri / bug_tracker_uri → this fork Issues should reach us, not upstream
authors = ["Adam Cooke", "DeployHQ"], email = support@deployhq.com Credit preserved; support reaches us
*.gem in .gitignore We now build locally

README leads with why the fork exists, credits the original work, and documents the install.

Verification

  • gem build succeeds and packages bin/procodile, MIT-LICENCE, README.md.
  • gem install ./dhq-procodile-1.0.27.gem succeeds; the binary resolves from the renamed gem.
  • procodile --version → procodile 1.0.27.
  • procodile status -r spec/apps/basic parses a real Procfile and correctly reports Procodile supervisor isn't running.
  • Full suite with all four fix branches merged: 51 examples, 0 failures on Ruby 3.4.9.

Version

Stays at 1.0.27, which is what upstream master already declares but never published. Publishing dhq-procodile 1.0.27 keeps the lineage legible.

Licensing

MIT, unchanged. MIT-LICENCE is untouched and now ships with the gem. All credit for the original work is Adam Cooke's.

Not in this PR

  • Publishing to RubyGems (needs an owner + API key decision).
  • Repointing deployhq/Gemfile and the host provisioning at the new gem.
  • Forking or absorbing procodile-capistrano (81 lines, no commit since January 2018).
  • Asking Adam Cooke for co-ownership of the procodile name — worth one email given the aTech/Krystal lineage, but not a blocker.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • The maintained DeployHQ fork is now distributed on RubyGems as dhq-procodile. Install the package and continue using the procodile command-line executable.
  • Documentation
    • Updated the README with the fork’s maintenance and release history, installation instructions, and links to the package and upstream changelog.

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 <app>` parses a real Procfile and reports correctly.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-29T09:58:42.031189Z fb555ee PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Essentials

Run ID: 7060ae70-bb2c-475e-9c4c-a69b196f9955

📥 Commits

Reviewing files that changed from the base of the PR and between 6b86419 and fb555ee.

📒 Files selected for processing (4)
  • .gitignore
  • README.md
  • dhq-procodile.gemspec
  • procodile.gemspec
💤 Files with no reviewable changes (1)
  • procodile.gemspec

Included review availability: This review used your included allowance. 0 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 5 reviews per hour.


Walkthrough

The repository replaces procodile.gemspec with a dhq-procodile gem specification. The README identifies the maintained fork and updates installation and package links. The .gitignore file now excludes *.gem files.

Changes

Gem Packaging

Layer / File(s) Summary
Package identity and metadata
dhq-procodile.gemspec, procodile.gemspec, README.md, .gitignore
Adds the dhq-procodile gem specification and removes the prior specification. The new specification sets Ruby >= 2.7, declares json and logger runtime dependencies, and retains the procodile executable. The README updates package references and describes the fork. .gitignore excludes *.gem files.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Feature

Merge Risk: ⚪ Minimal · up to fb555

The changes prepare the dhq-procodile package while retaining the procodile executable. No actionable merge-blocking risk is established; the change appears ready after normal checks.

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: publishing the gem as dhq-procodile to support independent releases.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fb555eeb79

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread dhq-procodile.gemspec
@@ -0,0 +1,26 @@
require_relative './lib/procodile/version'
Gem::Specification.new do |s|
s.name = "dhq-procodile"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Regenerate the lockfile after renaming the gem

Changing the path gem's name leaves the committed Gemfile.lock declaring procodile! rather than dhq-procodile!, and it also omits the new logger dependency. In environments using Bundler's frozen/deployment mode, bundle install now aborts because the gemspec added dhq-procodile and removed procodile, so the repository cannot be installed or tested until the lockfile is regenerated and committed.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant