diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 0000000..9346eb0 --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,45 @@ +# Simple workflow for deploying static content to GitHub Pages +name: Deploy to GitHub Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ["master", "main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Pages + uses: actions/configure-pages@v5 + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + # Upload the docs folder + path: './docs' + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..fee57c8 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,671 @@ + + + + + + GitStore - Versioned Data Store for Ruby + + + + + + + +
+ +
+ +
+
+
+ ✨ Open Source Ruby Gem +

Git as Your Data Store

+

GitStore implements a versioned data store based on Git. Store object hierarchies as nested hashes, enjoy automatic versioning, and leverage Git's powerful features for your data.

+ +
+
+ +
+
+
+

Why GitStore?

+

Powerful features that make data management simple and reliable

+
+
+
+
+ + + +
+

Version Control Built-in

+

Every change is automatically tracked with Git's powerful versioning. Roll back to any point in time with ease.

+
+
+
+ + + +
+

Transaction Support

+

Atomic operations ensure data integrity. Changes either succeed completely or are rolled back entirely.

+
+
+
+ + + +
+

Nested Data Structures

+

Store complex object hierarchies as nested hashes, automatically mapped to the git directory structure.

+
+
+
+ + + + +
+

Custom Serialization

+

YAML, JSON, and custom handlers for any file format. Extend easily with your own serialization logic.

+
+
+
+ + + +
+

In-Memory Operations

+

Data is loaded into memory for fast access. Commit changes directly to the repository without intermediate files.

+
+
+
+ + + +
+

Concurrent Access

+

File locking ensures safe concurrent access from multiple processes or threads.

+
+
+
+
+ +
+
+
+
+

Simple and Intuitive API

+

GitStore provides a hash-like interface for storing and retrieving data. Files are automatically serialized based on their extension, and all changes are committed to the Git repository.

+
    +
  • + + + + Hash-like access to data +
  • +
  • + + + + Auto-serialization by file extension +
  • +
  • + + + + Built-in transaction support +
  • +
+
+
+
# Initialize a store
+require 'git_store'
+
+store = GitStore.new('/path/to/repo')
+
+# Store objects using paths
+store['users/alice.yml'] = { 
+  name: 'Alice',
+  email: 'alice@example.com'
+}
+
+store['config/settings.yml'] = {
+  theme: 'dark',
+  language: 'en'
+}
+
+# Commit changes
+store.commit 'Added user and config'
+
+# Use transactions for safety
+store.transaction do
+  store['pages/home.yml'] = page_data
+  store['pages/about.yml'] = about_data
+end
+
+
+
+
+ +
+
+
+

Get Started in Minutes

+

Install GitStore and start versioning your data with Git

+
+
+
+
1
+

Install the Gem

+ gem install git_store +
+
+
2
+

Initialize a Repository

+ git init my_data_store +
+
+
3
+

Start Using GitStore

+ store = GitStore.new('.') +
+
+
+
+
+ + + +