Bridgetown-basierende Internetauftritte können auf Inhalte der NoSQL-Datenbank ArcadeDB zugreifen.
Über das Bridgetown-ArcadeDB-Plugin können
mit Bridgetown verwaltete Webinhalte auf Datenbankinhalte zugreifen.
Im statischen Modus
liest das Framework die Daten bei der Erstellung der Webseiten aus der Datenbank. Die Internetseite selbst ist
weiterhin statisch. Wenn sich der Datenbankinhalt ändert, muss die Webseite neu erstellt werden.
Im SSR-Modus wird die Datenbank bei jedem Aufruf der Webseite erneut abgefragt und die Webseite dynamisch erstellt.
Setup für eine Bridgetown-Seite
Gemfile
gem 'arcadedb', git: "https://github.com/topofocus/arcadedb"
# optional (Time-grid)
gem 'arcade-time-graph', git: "https://github.com/topofocus/arcade-time-graph"
gem "bridgetown-quick-search", "~> 2.0"
gem 'bridgetown-seo-tag', "~> 6.0.0", git: "https://github.com/bridgetownrb/bridgetown-seo-tag"
gem 'bridgetown-arcade-db', git: "https://github.com/topofocus/bridgetown-arcade-db"
# optional (Graphiken)
gem 'vega'
Config/initializers.rb
init "bridgetown-seo-tag"
only :static, :console do
init "bridgetown-arcade-db"
end
require 'vega'
In der config/initialisers.rb
wird so das ArcadeDB-Plugin ausschließlich für den statischen Modus aktiviert. Für die Wiedergabe dynamischer Inhalte wird zusätzlich ssr
und bridgetown-routes
benötigt, also:
init :ssr
init :"bridgetown-routes"
init :"bridgetown-arcade-db"
Beim Start liest Bridgetown die Datei config/initializers
ein und führt die
dort verzeichneten Befehle aus. Wenn sowohl im statischen Modus als auch mit SSR eine
Datenbankunterstützung aktiviert ist, werden zwei Datenbank-Instanzen initialisiert und der Code wird bei der Initialisierung doppelt ausgeführt.
Das Ruby-Symbol :"bridgetown-arcade-db"
zieht den Aufruf von Bridgetown.initializer
mit dem
Argument :bridgtown-arcade-db
nach sich. Das Plugin ist im Kern das Ergebnis der Ausführung dieser
Methode.
Der Initializer
Bridgetown.initializer :"bridgetown-arcade-db" do |config|
BridgetownArcadeDb.load_models config
ProjectRoot = Pathname.new config.root_dir
Arcade::Init.connect Bridgetown.environment
end
- Zuerst werden über
load_models
Datenbank-Model-Dateien eingebunden. Diese werden üblicherwiese unterhalb des Verzeichnisses/model
angelegt. - Dem Arcade-Gem muss danach mitgeteilt werden, wo es diese Dateien finden kann. Dazu wird das ProjectRoot gesetzt.
- Abschließend ruft der Initializer die
connect
-Methode auf. Welche Datenbank geöffnet werden soll, wird ausconfig/arcade.yml
eingelesen.
Config/arcade.yml
:environment:
:test:
dbname: test
user: root
pass: ***
:development:
dbname: hieronymus
user: root
pass: ***
:production:
dbname: hieronymus
user: root
pass: ***
:admin:
:host: localhost
:port: 2480
:user: root
:pass: ***
:logger: stdout # 'file' or 'stdout'
:namespace: Arcade # Default Namespace
:autoload: true # load model if a link is detected in a record
Üblicherweise gibt eine Bridgetown-Anwendung nur Datenbankinhalte aus. Die Datenbankanwendung
selbst ist getrennt. Bridgetown-Seiten greifen per Frontmatter auf die Model-files zu.
Diese müssen deshalb nach (bridgetown-root)/model
kopiert werden.
Beispiel eines Frontmatters
~~~ruby
c = Arcade::Strategie.find( symbol: 'SPX' ).contracts( shortcut: 'xsp' )
s = Arcade::Support::Spread.new c
{
layout: :home,
title: 'Übersicht',
spread: s,
vega: s.plot_result,
count_of_expiries: site.data[:hieronymus][:expiries]
}
~~~
Hier beginnt der Markdown-Text
<figure>
<%= data.vega %>
<figcaption> Beispiel der Einbindung einer Vega-Graphik </figcaption
</figure>