# Steroids

## Steroids bootstrap

Steroids Bootstrap is a small engine that can be used to scan the classpath and automatically load steroids modules. Bootstrap provides opinionated *convention over configuration* runtime simplifying the wiring between common components used in Rhiot-based applications.

In order to start using bootstrap, add the following Maven dependency to your project:

io.rhiotrhiot-steroids${rhiot.version}

Avaliable for rhiot.version >= 0.1.2

And then add the following code to your project:

```
import io.rhiot.steroids.bootstrap.Bootstrap;
...
Bootstrap bootstrap = new Bootstrap().start();
... // Do your stuff
bootstrap.stop();
```

You can also use our main class (which is particularly useful when working with the fat jars):

```
import io.rhiot.steroids.bootstrap.Bootstrap;
...
Bootstrap.main();
```

### Injecting MongoDB client

Steroids come with the MongoDB module that can be used to simplify access to the MongoDB database. In order to take the advantage from it, import the `rhiot-mongodb` module into your project:

io.rhiotrhiot-mongodb${rhiot.version}

Avaliable for rhiot.version >= 0.1.1

In order to inject the MongoDb client into your code, use the `Mongos.discoverMongo()` method:

```
import io.rhiot.mongodb.Mongos;
...
MongoClient mongo = Mongos.discoverMongo();
```

If `MONGODB_SERVICE_HOST` environment variable (or system property) is not specified, the `Mongos` will try to connect to the `mongodb` and `localhost` hosts respectively, using default MongoDB port (`27017`) or the one specified by the `MONGODB_SERVICE_HOST` environment variable (or system property).

By default MongoDB client will be configured to timeout the connection attempt after 1 second (yes, we like to fail fast). You can change timeout value by setting `MONGODB_CONNECT_TIMEOUT` the environment variable (or system property) to the desired number of timeout miliseconds. For example to set the connection timeout to 30 seconds you can use the following code:

```
System.setProperty("MONGODB_CONNECT_TIMEOUT", TimeUnit.SECONDS.toMillis(30) + "");
MongoClient mongo = Mongos.discoverMongo();
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://rhiot.gitbook.io/rhiotdocumentation/index-4.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
