141 lines
2.4 KiB
Markdown
141 lines
2.4 KiB
Markdown
# asciinema
|
|
|
|
FIXME: description
|
|
|
|
## Developing
|
|
|
|
### Setup
|
|
|
|
When you first clone this repository, run:
|
|
|
|
```sh
|
|
lein setup
|
|
```
|
|
|
|
This will create files for local configuration, and prep your system
|
|
for the project.
|
|
|
|
### Environment
|
|
|
|
To begin developing, start with a REPL.
|
|
|
|
```sh
|
|
lein repl
|
|
```
|
|
|
|
Then load the development environment.
|
|
|
|
```clojure
|
|
user=> (dev)
|
|
:loaded
|
|
```
|
|
|
|
Run `go` to initiate and start the system.
|
|
|
|
```clojure
|
|
dev=> (go)
|
|
:started
|
|
```
|
|
|
|
By default this creates a web server at <http://localhost:3000>.
|
|
|
|
When you make changes to your source files, use `reset` to reload any
|
|
modified files and reset the server.
|
|
|
|
```clojure
|
|
dev=> (reset)
|
|
:reloading (...)
|
|
:resumed
|
|
```
|
|
|
|
### Testing
|
|
|
|
Testing is fastest through the REPL, as you avoid environment startup
|
|
time.
|
|
|
|
```clojure
|
|
dev=> (test)
|
|
...
|
|
```
|
|
|
|
But you can also run tests through Leiningen.
|
|
|
|
```sh
|
|
lein test
|
|
```
|
|
|
|
### Migrations
|
|
|
|
Migrations are handled by [ragtime][]. Migration files are stored in
|
|
the `resources/migrations` directory, and are applied in alphanumeric
|
|
order.
|
|
|
|
To update the database to the latest migration, open the REPL and run:
|
|
|
|
```clojure
|
|
dev=> (migrate)
|
|
Applying 20150815144312-create-users
|
|
Applying 20150815145033-create-posts
|
|
```
|
|
|
|
To rollback the last migration, run:
|
|
|
|
```clojure
|
|
dev=> (rollback)
|
|
Rolling back 20150815145033-create-posts
|
|
```
|
|
|
|
Note that the system needs to be setup with `(init)` or `(go)` before
|
|
migrations can be applied.
|
|
|
|
[ragtime]: https://github.com/weavejester/ragtime
|
|
|
|
### Generators
|
|
|
|
This project has several generator functions to help you create files.
|
|
|
|
To create a new endpoint:
|
|
|
|
```clojure
|
|
dev=> (gen/endpoint "bar")
|
|
Creating file src/foo/endpoint/bar.clj
|
|
Creating file test/foo/endpoint/bar_test.clj
|
|
Creating directory resources/foo/endpoint/bar
|
|
nil
|
|
```
|
|
|
|
To create a new component:
|
|
|
|
```clojure
|
|
dev=> (gen/component "baz")
|
|
Creating file src/foo/component/baz.clj
|
|
Creating file test/foo/component/baz_test.clj
|
|
nil
|
|
```
|
|
|
|
To create a new boundary:
|
|
|
|
```clojure
|
|
dev=> (gen/boundary "quz" foo.component.baz.Baz)
|
|
Creating file src/foo/boundary/quz.clj
|
|
Creating file test/foo/boundary/quz_test.clj
|
|
nil
|
|
```
|
|
|
|
To create a new SQL migration:
|
|
|
|
```clojure
|
|
dev=> (gen/sql-migration "create-users")
|
|
Creating file resources/foo/migrations/20160519143643-create-users.up.sql
|
|
Creating file resources/foo/migrations/20160519143643-create-users.down.sql
|
|
nil
|
|
```
|
|
|
|
## Deploying
|
|
|
|
FIXME: steps to deploy
|
|
|
|
## Legal
|
|
|
|
Copyright © 2017 FIXME
|