{"id":777,"date":"2025-12-11T11:03:29","date_gmt":"2025-12-11T11:03:29","guid":{"rendered":"https:\/\/ruby-doc.org\/blog\/?p=777"},"modified":"2025-12-12T09:06:07","modified_gmt":"2025-12-12T09:06:07","slug":"ai-and-ruby-an-unexpectedly-natural-pairing","status":"publish","type":"post","link":"https:\/\/ruby-doc.org\/blog\/ai-and-ruby-an-unexpectedly-natural-pairing\/","title":{"rendered":"AI and Ruby: An Unexpectedly Natural Pairing"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p>For years, Ruby has enjoyed a reputation as the friendliest language in the room\u2014expressive, elegant, and famously optimized for developer happiness. Artificial intelligence, on the other hand, often feels like the opposite: a world of sprawling datasets, GPU-heavy calculations, and libraries with the charm of a microwave manual. Yet, as AI becomes less about raw computational power and more about weaving intelligent behaviour into everyday software, Ruby has quietly been finding its place in the conversation again.<\/p>\n\n\n\n<p>Before diving into the technical side, it\u2019s worth acknowledging something ironic: we\u2019re living in a time where both developers and readers are asking whether a piece of text was written by a robot. Entire publishing workflows now include a quick pass through an <a href=\"https:\/\/www.zerogpt.com\">AI checker<\/a> simply to confirm that a human had a hand in crafting it. This cultural shift\u2014half curiosity, half caution\u2014has tilted the spotlight back onto programming languages that favour style, clarity, and intention. Ruby fits into that niche perfectly.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Why Ruby Still Matters in an AI-Driven World<\/h3>\n\n\n\n<p>If you only read the headlines, you might assume modern AI work requires Python and nothing else. But Ruby persists for a reason. Teams that rely on Ruby for their main applications\u2014especially Rails-based startups\u2014are increasingly looking for ways to embed machine learning without rebuilding their stack. They want something that feels native, or at least \u201cRuby-ish,\u201d rather than gluing on opaque services with brittle wrappers.<\/p>\n\n\n\n<p>And surprisingly, the ecosystem has been responding.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ruby\u2019s Growing AI Toolkit<\/h3>\n\n\n\n<p>Over the last few years, developers have built a small but capable set of gems that act as the connective tissue between Ruby apps and powerful AI tools:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ruby-OpenAI<\/strong> and <strong>Anthropic<\/strong> clients for working with LLMs.<\/li>\n\n\n\n<li><strong>TensorFlow.rb<\/strong> and <strong>Torch.rb<\/strong>, which bring Ruby interfaces to major ML frameworks.<\/li>\n\n\n\n<li><strong>Rumale<\/strong>, a pure-Ruby machine learning library offering clustering, linear models, and preprocessing utilities.<\/li>\n\n\n\n<li><strong>Red Chainer<\/strong>, a deep-learning library designed to feel idiomatic for Rubyists.<\/li>\n<\/ul>\n\n\n\n<p>No one is pretending Ruby will replace Python for training huge models, but Ruby doesn\u2019t have to win that war. What it\u2019s winning instead is the implementation layer\u2014where model outputs are integrated into real products, where team velocity matters, and where code readability directly affects business outcomes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The Human Touch That Ruby Preserves<\/h3>\n\n\n\n<p>Ruby\u2019s original philosophy\u2014optimized for joy\u2014still echoes even in AI-centric projects. Developers lean toward Ruby precisely when they want to preserve a certain voice and character in the codebase. This becomes crucial when building AI-powered features that need careful human oversight, such as:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Recommendation systems fine-tuned by editors or curators<\/li>\n\n\n\n<li>Automated content pipelines where tone consistency matters<\/li>\n\n\n\n<li>Personalization engines blending machine predictions with handcrafted rules<\/li>\n<\/ul>\n\n\n\n<p>While other languages drift toward utilitarian minimalism, Ruby encourages artisanship. It allows developers to sculpt AI outputs, not just serve them.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">AI as Ruby\u2019s Revival Curve<\/h3>\n\n\n\n<p>Perhaps the most interesting twist is this: AI might become the unexpected reason Ruby stays relevant for another decade. As more companies embed AI in traditional web applications, the need for clear, expressive, maintainable code rises. The language that has always prioritized human readability is suddenly the language perfectly positioned to balance machine intelligence with human sensibility.<\/p>\n\n\n\n<p>Ruby\u2019s strength has never been raw speed\u2014it\u2019s been empathy. And as AI systems grow more powerful, the human layer becomes even more important. Ruby sits confidently in that layer, giving developers a voice in how intelligent features behave, communicate, and evolve.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">A Future Where Ruby and AI Coexist Gracefully<\/h3>\n\n\n\n<p>So no, Ruby won\u2019t be training the next <a href=\"https:\/\/venturebeat.com\/ai\/google-trained-a-trillion-parameter-ai-language-model\">trillion-parameter<\/a> model. But it <em>will<\/em> be the language shaping user experiences around those models. It will be the interpreter between human intention and machine computation. And in that role, Ruby becomes not just relevant, but essential.<\/p>\n\n\n\n<p>AI may be the future, but Ruby ensures that future stays readable, humane, and surprisingly joyful.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>For years, Ruby has enjoyed a reputation as the friendliest language in the room\u2014expressive, elegant, and famously optimized for developer happiness. Artificial intelligence, on the other hand, often feels like the opposite: a world of sprawling datasets, GPU-heavy calculations, and libraries with the charm of a microwave manual. Yet, as AI becomes less about raw [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":782,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-777","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ruby-tips"],"blocksy_meta":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>AI and Ruby: An Unexpectedly Natural Pairing - Ruby-Doc.org<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ruby-doc.org\/blog\/ai-and-ruby-an-unexpectedly-natural-pairing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AI and Ruby: An Unexpectedly Natural Pairing - Ruby-Doc.org\" \/>\n<meta property=\"og:description\" content=\"For years, Ruby has enjoyed a reputation as the friendliest language in the room\u2014expressive, elegant, and famously optimized for developer happiness. Artificial intelligence, on the other hand, often feels like the opposite: a world of sprawling datasets, GPU-heavy calculations, and libraries with the charm of a microwave manual. Yet, as AI becomes less about raw [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ruby-doc.org\/blog\/ai-and-ruby-an-unexpectedly-natural-pairing\/\" \/>\n<meta property=\"og:site_name\" content=\"Ruby-Doc.org\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-11T11:03:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-12T09:06:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ruby-doc.org\/blog\/wp-content\/uploads\/2025\/12\/images-1.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"739\" \/>\n\t<meta property=\"og:image:height\" content=\"415\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Ryan McGregor\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ryan McGregor\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/ai-and-ruby-an-unexpectedly-natural-pairing\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/ai-and-ruby-an-unexpectedly-natural-pairing\\\/\"},\"author\":{\"name\":\"Ryan McGregor\",\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/#\\\/schema\\\/person\\\/db7fcc3c518c40f29f8bf79ffa678dfc\"},\"headline\":\"AI and Ruby: An Unexpectedly Natural Pairing\",\"datePublished\":\"2025-12-11T11:03:29+00:00\",\"dateModified\":\"2025-12-12T09:06:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/ai-and-ruby-an-unexpectedly-natural-pairing\\\/\"},\"wordCount\":651,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/ai-and-ruby-an-unexpectedly-natural-pairing\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/images-1.jpeg\",\"articleSection\":[\"Ruby tips\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/ai-and-ruby-an-unexpectedly-natural-pairing\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/ai-and-ruby-an-unexpectedly-natural-pairing\\\/\",\"url\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/ai-and-ruby-an-unexpectedly-natural-pairing\\\/\",\"name\":\"AI and Ruby: An Unexpectedly Natural Pairing - Ruby-Doc.org\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/ai-and-ruby-an-unexpectedly-natural-pairing\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/ai-and-ruby-an-unexpectedly-natural-pairing\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/images-1.jpeg\",\"datePublished\":\"2025-12-11T11:03:29+00:00\",\"dateModified\":\"2025-12-12T09:06:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/ai-and-ruby-an-unexpectedly-natural-pairing\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/ai-and-ruby-an-unexpectedly-natural-pairing\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/ai-and-ruby-an-unexpectedly-natural-pairing\\\/#primaryimage\",\"url\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/images-1.jpeg\",\"contentUrl\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/images-1.jpeg\",\"width\":739,\"height\":415},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/ai-and-ruby-an-unexpectedly-natural-pairing\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AI and Ruby: An Unexpectedly Natural Pairing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/\",\"name\":\"Ruby-Doc.org\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/#organization\",\"name\":\"Ruby-Doc.org\",\"url\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Ruby-Doc.org_logo_cropped.png\",\"contentUrl\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Ruby-Doc.org_logo_cropped.png\",\"width\":909,\"height\":833,\"caption\":\"Ruby-Doc.org\"},\"image\":{\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/#\\\/schema\\\/person\\\/db7fcc3c518c40f29f8bf79ffa678dfc\",\"name\":\"Ryan McGregor\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f7b4d11da7f55d40163cd9431935ce1148d9bd69c95928064822f7757b6314dd?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f7b4d11da7f55d40163cd9431935ce1148d9bd69c95928064822f7757b6314dd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f7b4d11da7f55d40163cd9431935ce1148d9bd69c95928064822f7757b6314dd?s=96&d=mm&r=g\",\"caption\":\"Ryan McGregor\"},\"url\":\"https:\\\/\\\/ruby-doc.org\\\/blog\\\/author\\\/ryan\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"AI and Ruby: An Unexpectedly Natural Pairing - Ruby-Doc.org","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ruby-doc.org\/blog\/ai-and-ruby-an-unexpectedly-natural-pairing\/","og_locale":"en_US","og_type":"article","og_title":"AI and Ruby: An Unexpectedly Natural Pairing - Ruby-Doc.org","og_description":"For years, Ruby has enjoyed a reputation as the friendliest language in the room\u2014expressive, elegant, and famously optimized for developer happiness. Artificial intelligence, on the other hand, often feels like the opposite: a world of sprawling datasets, GPU-heavy calculations, and libraries with the charm of a microwave manual. Yet, as AI becomes less about raw [&hellip;]","og_url":"https:\/\/ruby-doc.org\/blog\/ai-and-ruby-an-unexpectedly-natural-pairing\/","og_site_name":"Ruby-Doc.org","article_published_time":"2025-12-11T11:03:29+00:00","article_modified_time":"2025-12-12T09:06:07+00:00","og_image":[{"width":739,"height":415,"url":"https:\/\/ruby-doc.org\/blog\/wp-content\/uploads\/2025\/12\/images-1.jpeg","type":"image\/jpeg"}],"author":"Ryan McGregor","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ryan McGregor","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ruby-doc.org\/blog\/ai-and-ruby-an-unexpectedly-natural-pairing\/#article","isPartOf":{"@id":"https:\/\/ruby-doc.org\/blog\/ai-and-ruby-an-unexpectedly-natural-pairing\/"},"author":{"name":"Ryan McGregor","@id":"https:\/\/ruby-doc.org\/blog\/#\/schema\/person\/db7fcc3c518c40f29f8bf79ffa678dfc"},"headline":"AI and Ruby: An Unexpectedly Natural Pairing","datePublished":"2025-12-11T11:03:29+00:00","dateModified":"2025-12-12T09:06:07+00:00","mainEntityOfPage":{"@id":"https:\/\/ruby-doc.org\/blog\/ai-and-ruby-an-unexpectedly-natural-pairing\/"},"wordCount":651,"commentCount":0,"publisher":{"@id":"https:\/\/ruby-doc.org\/blog\/#organization"},"image":{"@id":"https:\/\/ruby-doc.org\/blog\/ai-and-ruby-an-unexpectedly-natural-pairing\/#primaryimage"},"thumbnailUrl":"https:\/\/ruby-doc.org\/blog\/wp-content\/uploads\/2025\/12\/images-1.jpeg","articleSection":["Ruby tips"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ruby-doc.org\/blog\/ai-and-ruby-an-unexpectedly-natural-pairing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ruby-doc.org\/blog\/ai-and-ruby-an-unexpectedly-natural-pairing\/","url":"https:\/\/ruby-doc.org\/blog\/ai-and-ruby-an-unexpectedly-natural-pairing\/","name":"AI and Ruby: An Unexpectedly Natural Pairing - Ruby-Doc.org","isPartOf":{"@id":"https:\/\/ruby-doc.org\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ruby-doc.org\/blog\/ai-and-ruby-an-unexpectedly-natural-pairing\/#primaryimage"},"image":{"@id":"https:\/\/ruby-doc.org\/blog\/ai-and-ruby-an-unexpectedly-natural-pairing\/#primaryimage"},"thumbnailUrl":"https:\/\/ruby-doc.org\/blog\/wp-content\/uploads\/2025\/12\/images-1.jpeg","datePublished":"2025-12-11T11:03:29+00:00","dateModified":"2025-12-12T09:06:07+00:00","breadcrumb":{"@id":"https:\/\/ruby-doc.org\/blog\/ai-and-ruby-an-unexpectedly-natural-pairing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ruby-doc.org\/blog\/ai-and-ruby-an-unexpectedly-natural-pairing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ruby-doc.org\/blog\/ai-and-ruby-an-unexpectedly-natural-pairing\/#primaryimage","url":"https:\/\/ruby-doc.org\/blog\/wp-content\/uploads\/2025\/12\/images-1.jpeg","contentUrl":"https:\/\/ruby-doc.org\/blog\/wp-content\/uploads\/2025\/12\/images-1.jpeg","width":739,"height":415},{"@type":"BreadcrumbList","@id":"https:\/\/ruby-doc.org\/blog\/ai-and-ruby-an-unexpectedly-natural-pairing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ruby-doc.org\/blog\/"},{"@type":"ListItem","position":2,"name":"AI and Ruby: An Unexpectedly Natural Pairing"}]},{"@type":"WebSite","@id":"https:\/\/ruby-doc.org\/blog\/#website","url":"https:\/\/ruby-doc.org\/blog\/","name":"Ruby-Doc.org","description":"","publisher":{"@id":"https:\/\/ruby-doc.org\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ruby-doc.org\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ruby-doc.org\/blog\/#organization","name":"Ruby-Doc.org","url":"https:\/\/ruby-doc.org\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ruby-doc.org\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/ruby-doc.org\/blog\/wp-content\/uploads\/2025\/07\/Ruby-Doc.org_logo_cropped.png","contentUrl":"https:\/\/ruby-doc.org\/blog\/wp-content\/uploads\/2025\/07\/Ruby-Doc.org_logo_cropped.png","width":909,"height":833,"caption":"Ruby-Doc.org"},"image":{"@id":"https:\/\/ruby-doc.org\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/ruby-doc.org\/blog\/#\/schema\/person\/db7fcc3c518c40f29f8bf79ffa678dfc","name":"Ryan McGregor","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f7b4d11da7f55d40163cd9431935ce1148d9bd69c95928064822f7757b6314dd?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f7b4d11da7f55d40163cd9431935ce1148d9bd69c95928064822f7757b6314dd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f7b4d11da7f55d40163cd9431935ce1148d9bd69c95928064822f7757b6314dd?s=96&d=mm&r=g","caption":"Ryan McGregor"},"url":"https:\/\/ruby-doc.org\/blog\/author\/ryan\/"}]}},"_links":{"self":[{"href":"https:\/\/ruby-doc.org\/blog\/wp-json\/wp\/v2\/posts\/777","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ruby-doc.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ruby-doc.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ruby-doc.org\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ruby-doc.org\/blog\/wp-json\/wp\/v2\/comments?post=777"}],"version-history":[{"count":2,"href":"https:\/\/ruby-doc.org\/blog\/wp-json\/wp\/v2\/posts\/777\/revisions"}],"predecessor-version":[{"id":781,"href":"https:\/\/ruby-doc.org\/blog\/wp-json\/wp\/v2\/posts\/777\/revisions\/781"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ruby-doc.org\/blog\/wp-json\/wp\/v2\/media\/782"}],"wp:attachment":[{"href":"https:\/\/ruby-doc.org\/blog\/wp-json\/wp\/v2\/media?parent=777"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ruby-doc.org\/blog\/wp-json\/wp\/v2\/categories?post=777"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ruby-doc.org\/blog\/wp-json\/wp\/v2\/tags?post=777"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}