Skip to content

Expand Quick Start guide with web scraping example and bundle setup - #153

Merged
id774 merged 2 commits into
masterfrom
claude/automatic-ruby-deps-docs-lt7ysr
Aug 17, 2026
Merged

Expand Quick Start guide with web scraping example and bundle setup#153
id774 merged 2 commits into
masterfrom
claude/automatic-ruby-deps-docs-lt7ysr

Conversation

@id774

@id774 id774 commented Aug 17, 2026

Copy link
Copy Markdown
Owner

This PR significantly expands the Quick Start documentation and related guides to provide a more comprehensive first-run experience, particularly for users working with source checkouts.

Summary

The changes transform the Quick Start from a minimal example using only built-in dependencies into a complete walkthrough that includes installing optional gems and demonstrates the full workflow of setting up a Recipe with plugin dependencies. A new detailed section in DEPLOYMENT.md explains how to determine and install the gems a Recipe needs.

Key Changes

Documentation Updates:

  • QUICKSTART.md: Completely restructured to use a new web2markdown.yml Recipe that scrapes four public index pages (Python, Rust, Go, and JPCERT/CC) instead of just fetching an RSS feed. The guide now includes explicit steps for identifying and installing required gems (nokogiri, activerecord, sqlite3), with emphasis on understanding why a Recipe needs the sum of all its plugins' dependencies.
  • DEPLOYMENT.md: Added comprehensive new section "Working out what a Recipe needs, in a checkout" with a detailed worked example showing how to map plugins to their dependencies, select Bundler groups, and troubleshoot common issues. Also added "Why bundle exec, and why gem install is not enough here" explaining the distinction between gem installation and bundle resolution in checkouts.
  • README.md: Updated references to reflect the new Quick Start approach and clarified the relationship between Recipes, plugins, and optional dependencies.

Code/Config Updates:

  • config/feed2markdown.yml: Updated comment to reference the Quick Start as a general first-run guide rather than a specific example.
  • plugins/publish/markdown.rb: Clarified that the plugin is designed to work without optional dependencies, making it suitable for basic installations.
  • spec/config/feed2markdown_spec.rb: Updated test descriptions to clarify that feed2markdown.yml is a shipped example that requires no optional gems, distinguishing it from the new Quick Start Recipe.

Key Documentation Insights:

  • Emphasizes that plugins are loaded sequentially, so missing gems for later plugins are only discovered mid-run
  • Explains the critical difference between gem install (RubyGems) and bundle group selection in checkouts
  • Provides troubleshooting guidance for distinguishing between gems installed outside the bundle vs. groups selected but not installed
  • Clarifies that PublishMarkdown needs no optional gems despite being used in the example, teaching users to consult the dependency table rather than guess from plugin functionality

Notable Details

  • The new web scraping example uses CustomFeedWeb to demonstrate HTML parsing, StoreDigest for deduplication, and PublishMarkdown for output
  • Extensive guidance on using bundle config, bundle show, and bundle exec ruby to verify bundle state
  • Clear distinction between selecting all optional gems (with plugins) for development vs. only Recipe-needed gems for production use

https://claude.ai/code/session_019fgz9HsShz5W9ytoVms5BH

claude added 2 commits August 17, 2026 10:25
A Recipe needs the sum of what its plugins need, and in a source checkout
that sum is a list of Bundler groups rather than a list of gems. Nothing
said so end to end: the table listed each plugin's group, and an operator
running a three-plugin Recipe still had to discover, one failed run at a
time, that `html` alone gets past CustomFeedWeb and stops at StoreDigest.

doc/DEPLOYMENT.md takes one Recipe -- CustomFeedWeb, StoreDigest and
PublishMarkdown -- from written to running in seven steps beside the table
it reads from, and adds why a checkout resolves through the bundle at all,
what the missing-gem message does and does not mean there, which commands
answer "what does this bundle hold", and when to select `plugins` rather
than the groups a Recipe names.

The other three documents gain a pointer each and no second copy.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019fgz9HsShz5W9ytoVms5BH
The old first run was chosen so that nothing had to be installed for it,
which taught the one thing a second Recipe immediately un-teaches: almost
every useful Recipe names a plugin with an optional gem, and working out
which gems from which plugins is the step that stops a first run half way
through. Teaching it in step 4 of the guide, on a Recipe that needs it, is
better than leaving it to be discovered.

The Recipe is CustomFeedWeb, StoreDigest and PublishMarkdown over four
public index pages: no account, no credential and no service, but two
optional gems, arrived at by reading the Recipe plugin by plugin against
the table in doc/DEPLOYMENT.md. The checkout section is then the same step
done with Bundler groups, and doc/DEPLOYMENT.md keeps the reasoning that
belongs to a checkout.

Consistency, since "the Quick Start needs no optional gem" was an
assertion made in several places: README's summary of it, the note in
PLUGINS.md 6.7 and in publish/markdown.rb explaining why PublishMarkdown
carries its own HTML reduction, the spec that guards the shipped
feed2markdown example, and RELEASING's smoke test, which tests an
installed gem with no optional dependency and is described as that now.
No behaviour changes, so no Updated:: line moves.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019fgz9HsShz5W9ytoVms5BH
@id774
id774 merged commit e47731a into master Aug 17, 2026
8 checks passed
@id774
id774 deleted the claude/automatic-ruby-deps-docs-lt7ysr branch August 17, 2026 10:42
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.

2 participants