{"adoption": {"forks": 335, "observed_at": "2026-08-28T04:03:16.390296+00:00", "stars": 1024}, "canonical_url": "https://ross.abutalabs.com/products/attachment_fu", "card": {"archived": false, "artifact_type": "plugin", "description": "Treat an ActiveRecord model as a file attachment, storing its patch, size, content type, etc.", "domain": ["web-development", "files", "backend"], "enriched": true, "function": ["file-upload", "image-processing", "orm"], "health_score": 20, "homepage": "http://weblog.techno-weenie.net", "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["technoweenie/attachment_fu"], "name": "technoweenie/attachment_fu", "platform": ["ruby"], "pushed_at": "2017-03-28T00:48:29+00:00", "repo": "technoweenie/attachment_fu", "stars": 1024, "tags": ["rails", "activerecord", "file-attachments", "thumbnails", "amazon-s3", "legacy", "web-server"], "topics": [], "urls": [], "use_cases": ["handle file uploads in a rails app", "attach images to activerecord models", "store uploaded files on amazon s3", "generate thumbnails for uploaded images", "validate upload size and content type", "store file attachments in the database"], "what_it_is": "attachment_fu is a Ruby on Rails plugin that turns ActiveRecord models into file attachments, storing metadata (path, size, content type) in the database. It supports multiple storage backends including the filesystem, database, Amazon S3, and Rackspace Cloud Files, with optional RMagick-based resizing and thumbnailing.", "when_to_avoid": ["you are starting a new Rails project - use Active Storage or CarrierWave instead", "you need modern cloud storage backends, background processing, or active maintenance", "you run a recent Rails version, since this plugin is unmaintained and incompatible"], "when_to_choose": ["you maintain a legacy Rails 2.x-era application already using acts_as_attachment-style plugins", "you need a simple, minimal attachment solution with filesystem or S3 storage in an old Rails codebase"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/attachment_fu", "repo": "technoweenie/attachment_fu", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:16.390296+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:08:15.600815+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3c27cc268d8cac267ed7b43f2bf47a18540343406089b86110ac72695ce9361", "fetched_at": "2026-08-28T04:03:16.390296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/technoweenie/attachment_fu"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:16.390296+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:08:15.600815+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3c27cc268d8cac267ed7b43f2bf47a18540343406089b86110ac72695ce9361", "fetched_at": "2026-08-28T04:03:16.390296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/technoweenie/attachment_fu"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:08:15.600815+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3c27cc268d8cac267ed7b43f2bf47a18540343406089b86110ac72695ce9361", "fetched_at": "2026-08-28T04:03:16.390296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/technoweenie/attachment_fu"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:16.390296+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:16.390296+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:16.390296+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:08:15.600815+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3c27cc268d8cac267ed7b43f2bf47a18540343406089b86110ac72695ce9361", "fetched_at": "2026-08-28T04:03:16.390296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/technoweenie/attachment_fu"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:16.390296+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:16.390296+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:08:15.600815+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3c27cc268d8cac267ed7b43f2bf47a18540343406089b86110ac72695ce9361", "fetched_at": "2026-08-28T04:03:16.390296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/technoweenie/attachment_fu"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:16.390296+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:16.390296+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:16.390296+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:08:15.600815+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3c27cc268d8cac267ed7b43f2bf47a18540343406089b86110ac72695ce9361", "fetched_at": "2026-08-28T04:03:16.390296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/technoweenie/attachment_fu"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:16.390296+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:16.390296+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:08:15.600815+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3c27cc268d8cac267ed7b43f2bf47a18540343406089b86110ac72695ce9361", "fetched_at": "2026-08-28T04:03:16.390296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/technoweenie/attachment_fu"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:08:15.600815+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3c27cc268d8cac267ed7b43f2bf47a18540343406089b86110ac72695ce9361", "fetched_at": "2026-08-28T04:03:16.390296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/technoweenie/attachment_fu"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:08:15.600815+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3c27cc268d8cac267ed7b43f2bf47a18540343406089b86110ac72695ce9361", "fetched_at": "2026-08-28T04:03:16.390296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/technoweenie/attachment_fu"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:08:15.600815+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f3c27cc268d8cac267ed7b43f2bf47a18540343406089b86110ac72695ce9361", "fetched_at": "2026-08-28T04:03:16.390296+00:00", "kind": "readme", "missing": false, "url": "https://github.com/technoweenie/attachment_fu"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 6806, "days_push": 3446, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}