locomotivecms/steam

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# Steam

The rendering stack used by both Wagon and Engine. It includes:

- the rack stack to pages and already precompiled assets (through webpack, vite or other).
- the liquid drops/filters/tags libs to parse and render liquid templates.
- a Filesystem adapter which reads the source of a site written for Wagon.
- a MongoDB adapter which reads an existing site hosted by the Locomotive Engine.

**Note:** Steam passes all the specifications of both Wagon and Engine.

## Installation [WIP]

```bash
gem install puma
gem install locomotivecms_steam
```

## Usage

### Command line:

*Warning*: For now, Steam is not aimed to be run standalone. The following is just a proof of concept.

Display all the options:

```bash
steam --help
```

Render a local Wagon site:

```bash
steam --path=<PATH to a Wagon site>
```

Render a Engine site:

```bash
steam --database=<NAME of the MongoDB database used by the Engine> --assets-path=<PATH to the public folder of the Locomotive>
```

Once launched, open your browser

```bash
open localhost:8080
```

### Inside Engine / Wagon:

[https://github.com/locomotivecms/engine/blob/master/lib/locomotive/steam_adaptor.rb](https://github.com/locomotivecms/engine/blob/master/lib/locomotive/steam_adaptor.rb)
[https://github.com/locomotivecms/engine/blob/master/spec/dummy/config/routes.rb](https://github.com/locomotivecms/engine/blob/master/spec/dummy/config/routes.rb#L12)

[https://github.com/locomotivecms/wagon/blob/master/lib/locomotive/wagon/commands/serve_command.rb](https://github.com/locomotivecms/wagon/blob/master/lib/locomotive/wagon/commands/serve_command.rb#L65)
[https://github.com/locomotivecms/wagon/blob/master/lib/locomotive/wagon/commands/serve_command.rb](https://github.com/locomotivecms/wagon/blob/master/lib/locomotive/wagon/commands/serve_command.rb#L138)

## TODO

see the list in the issues section.

## Contributing

1. Fork it ( http://github.com/<my-github-username>/locomotivecms/steam )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request

## Running test with docker

A docker configuration is included in this repository, you can run all the tests with the following procedure

First run a bash shell inside the container

```
docker-compose run steam gosu ubuntu bash
```

Now you are inside the container you can

Init the database with demo data

```
rake mongodb:test:seed
```

Run all the test with

```
rake spec
```

Run specific test with rspec

```
rspec spec/unit/middlewares/locale_spec.rb

```

Note: you do not need to prefix with bundle exec as the docky-ruby image already add it automatically

## License

Copyright (c) 2010-2024 NoCoffee. MIT Licensed, see MIT-LICENSE for details.