README.md
# 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.