Socket
Book a DemoInstallSign in
Socket

fabula

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fabula

0.4.2
bundlerRubygems
Version published
Maintainers
1
Created
Source

NAME

ro

INSTALL

as a gem

  ~> gem install ro

SYNOPSIS

keep all your content in git as god intended.

even images.

fuck wordpress.

TL;DR;

ro is the world's tiniest, simplest, zero-config, and most bestest headless CMS.

it keeps your content in an on disk bundle that will make sense to an 11 year

it depends on nothing but GitHub itself for the storage, management, and delivery of rich web content and assets.

Storage

ro keeps your structured web content in a super sane structure, that keeps assets close to its related content, allows for structured data to be kept along side markdown/html content, and which supports source code as a first class citizen.

For example, given:

    ~> tree ro/data

    # ro/data
    # └── posts
    #     ├── first-post
    #     │   ├── attributes.yml
    #     │   └── body.md
    #     │   ├── blurb.erb.md
    #     │   ├── assets
    #     │   │   ├── foo.jpg

ro will provide an interface logically consistent with:

    node.attributes        #=> any/all the data loaded from 'attributes.yml'
    node.attributes.body   #=> an HTML representation of 'body.md' 
    node.attributes.blurb  #=> an HTML representation of 'blurb.md' 
    node.attributes.assets #=> list of assets with url and path info

To learn more, clone this repo, bundle install, and fire up a console to check play with this idea:

eg: given this node

    ~> ro console

    ro[./ro/data]:001:0> ro.posts.first_post.title
    => "First Post"

    ro[./ro/data]:002:0> ro.collections.posts.first_post.assets.first.url
    => "/ro/posts/first-post/assets/foo.jpg"

    ro[./ro/data]:003:0> ro.collections.posts.first_post.body.slice(0,42)
    => "<div class='ro markdown'>\n  <ul>\n  <li>one"

Management

Managing ro is as simple as using the built-in GitHub Markdown editor. The file system layout, which supports relative asset urls, means the built-in editor preview renders just fine. Of course, you are free to manage content programatically as well. Either way, updates to the the content will result in an automated API build of a static API which is then deployed to GitHub Pages.

This is made possible by certain design decisions ro has made, specifically allowing assets/ to be stored and rendered relative to their parent content.

Of course, you have all the power of git so other methods of managing the content are available, programtic, locally in vs-code, etc. You have lots of simply options, none of which require drivers or databases, and all of which provide perfect history over your valuable web content and assets.

A word on managing assets, if you plan to have many large images, you probably want to enable GitLFS on your content repository, ro plays perfectly with it.

Delivery

Delivery of ro content, to remote clients, is via http+json. To output your content as json, you simply need to run

    ~>  ro build

		ro.build: public/ro -> public/api/ro
		ro.build: public/api/ro/posts/first_post/index.json
		ro.build: public/api/ro/posts/second_post/index.json
		ro.build: public/api/ro/posts/third_post/index.json
		ro.build: public/api/ro/posts/index/0.json
		ro.build: public/api/ro/posts/index.json
		ro.build: public/api/ro/index/0.json
		ro.build: public/api/ro/index.json
		ro.build: public/api/ro/index.html
		ro.build: public/ro -> public/api/ro in 0.08s

During the build, assets are expanded to be the full URL of the final deployment destination. This is done via the RO_URL environment variable, and automatically with a pre-build GitHub Action that will deploy your content via GitHub Pages. See https://github.com/ahoward/ro/blob/main/.github/workflows/gh-pages.yml#L55 for more details.

You can view sample output from this Action, deployed to GH Pages here: https://ahoward.github.io/ro

USAGE

WRITE-ME // #TODO

API // Javascript

WRITE-ME // #TODO

CLI

WRITE-ME // #TODO

Programatic // Ruby

WRITE-ME // #TODO

Via Repository

WRITE-ME // #TODO

  • note on http vs https

SAMPLES

<========< samples/a.rb >========>

  ~ > cat samples/a.rb
    require 'ro'
    
    p 42
  ~ > ruby samples/a.rb
    42

FAQs

Package last updated on 01 Jan 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.