blob: edb7e31000b1ad760fb0c05c2fc26a3ae8c3888c [file] [log] [blame] [view]
# Apache Geode Native Client User Guides
This document contains instructions for building and viewing the Apache Geode Native Client User Guides.
<a name="about"></a>
## About
The Geode-Native repository provides the full source for the Apache Geode Native Client User Guides in markdown format (see _geode-project-dir_/geode-docs/CONTRIBUTE.md for more information on how to use markdown in this context). Users can build the markdown into an HTML user guide using [Bookbinder](https://github.com/pivotal-cf/bookbinder) and the instructions below.
Bookbinder is a Ruby gem (available at [rubygems.org](https://rubygems.org/gems/bookbindery/) ) that binds a unified documentation web application from markdown, html, and/or DITA source material. The source material for Bookbinder must be stored either in local directories or in GitHub repositories. Bookbinder runs [Middleman](http://middlemanapp.com/) to produce a Rackup app that can be deployed locally or as a web application.
The User Guide can be produced in two versions: one for the .NET native client, the other for the C++ native client.
## Preview the User Guide
Documentation can be built and previewed using the utility script at {geode-project-dir}/docs/docker. This script uses a Docker image that provides the tools to build and view the guide, including Ruby, Bookbinder, and Rackup.
For the C++ guide:
```
$ cd {geode-native-project-dir}/docs/docker
$ ./preview-user-guide.sh cpp
```
For the .NET guide:
```
$ cd {geode-native-project-dir}/docs/docker
$ ./preview-user-guide.sh dotnet
```
Once the script shows it is listening on a local address, you can use a browser to view the user guide on that address.
For example:
```
$ ./preview-user-guide.sh cpp
...
...
Puma starting in single mode...
* Version 4.3.8 (ruby 2.5.9-p229), codename: Mysterious Traveller
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://0.0.0.0:9292
Use Ctrl-C to stop
```
You will find the user guide at `0.0.0.0:9292`.
Files generated by Bookbinder will be at `{geode-project-dir}/docs/geode-native-book-cpp/final_app` for the C++ guide, and at `{geode-project-dir}/docs/geode-native-book-dotnet/final_app` for the .NET guide.
## Build the User Guide
### Prerequisites
Bookbinder requires Ruby version 2.3.3 or higher.
### Bookbinder Usage
Bookbinder is meant to be used from within a project called a **book**. The book includes a configuration file that describes which documentation repositories to use as source materials. Bookbinder provides a set of scripts to aggregate those repositories and publish them to various locations.
For Geode Native Client, a preconfigured **book** is provided for each user guide (C++ and .NET) in the directories `{geode-native-project-dir}/docs/geode-native-book-cpp` and `{geode-native-project-dir}/docs/geode-native-book-dotnet`. Each book gathers content from the language-specific directory _geode-native-project-dir_/docs/geode-native-docs-cpp or geode-native-docs-dotnet. You can use this configuration to build an HTML version of the Apache Geode Native Client User Guides on your local system.
### Building the Documentation
1. The GemFile in each book directory already defines the gem "bookbindery" dependency. Make sure you are in the `_geode-native-project-dir_/docs/geode-native-book-cpp` or `_geode-native-project-dir_/docs/geode-native-book-dotnet` (depending if you want to build the C++ or .NET user guide respectively) directory and enter:
For the C++ guide:
```bash
$ cd docs/geode-native-book-cpp
$ bundle install
```
For the .NET guide:
```bash
$ cd docs/geode-native-book-dotnet
$ bundle install
```
Note: You will not have to run bundle install on subsequent builds.
2. To build the documentation locally using the installed config.yml file, enter:
```
$ bundle exec bookbinder bind local
```
Bookbinder converts the markdown source into HTML, which it puts in the `final_app` directory.
3. To start a local website of the Apache Geode Native Client User Guide, you have to execute Rackup from the `final_app` directory:
For C++ guide:
```bash
$ cd docs/geode-native-book-cpp/final_app
$ bundle exec rackup
```
For .NET guide:
```bash
$ cd docs/geode-native-book-dotnet/final_app
$ bundle exec rackup
```
You can now view the local documentation at `http://localhost:9292`.