docbrown/docs/getting-started/start-app.md
Jacob Herrington 92217be4ed
Add admin overview page (#12726)
* Add admin overview page

* Rename admin_portals spec

* Fix admin nav bug

* Add ahoy tracking to admin overview

* Fix PR Feedback

Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>

* Make decorative element more visible

* Remove inline layout styles

Co-authored-by: Vaidehi Joshi <vaidehi.sj@gmail.com>
2021-03-01 18:59:05 -06:00

131 lines
4.4 KiB
Markdown

---
title: Starting the Application
---
We're a Rails app, and we use [Webpacker][webpacker] to manage some of our
JavaScript.
# Starting the application
Start the application, Webpack, and our job runner [Sidekiq][sidekiq] by
running:
```shell
bin/startup
```
(This just runs `foreman start -f Procfile.dev`, for notes on how to install
Foreman, please see [Other Tools](/installation/others/))
Then point your browser to http://localhost:3000/ to view the site. To log in
use the admin account created by default (see
[Database](/getting-started/db/#default-admin-user))
If you run into issues while trying to run `bin/setup` and the error message
isn't helpful, try running `bin/rails s -p 3000`. For example, you may need to
`yarn install` before starting the app.
If Sidekiq is producing errors similar to
`No such file or directory - [SOME FILE]`, you may need to start Sidekiq by
itself once to help it initialize itself fully. You can use the command
`bundle exec sidekiq` to do this.
If you're working on Forem regularly, you can use `alias start="bin/startup"` to
make this even easier. 😊
If you're using **`pry`** for debugging in Rails, note that using `foreman` and
`pry` together works, but it's not as clean as `bin/rails server`.
Here are some singleton commands you may need, usually in a separate
instance/tab of your shell.
- Running the job Sidekiq server (if using `bin/rails server`) -- this is mostly
for notifications and emails: **`bundle exec sidekiq`**
Current gotchas: potential environment issues with external services need to be
worked out.
# Starting the application (advanced)
To have additional control in your local environment, you might prefer using an
advanced setup to start the application by using [Overmind][overmind].
The prerequisite is to install [Overmind][overmind], a process manager which
takes advantage of [tmux][tmux].
This will allow you to launch all your app's processes in the same terminal,
navigate the logs of each service separately, restart each service separately
and have a better debugging experience.
After installing [Overmind][overmind], launch the application:
```shell
overmind s -f Procfile.dev
```
## Debugging the Rails application
[Overmind][overmind] lets you easily step through the Rails application in a
debugging session.
Using the `pry` gem, you can add a `binding.pry` to set a breakpoint in the
method you're trying to debug; the application will halt its execution there.
You can then connect to the web server by opening a separate terminal window and
typing:
```shell
overmind c web
```
This will open up a [tmux][tmux] window pane at the debugging statement
position, which will look something like this:
```ruby
pry(#<Admin::OverviewController>)> whereami
From: /forem/app/controllers/admin/overview_controller.rb:8 Admin::OverviewController#index:
5: def index
6: a = "Hello debugger"
7: binding.pry
=> 8: end
```
## Inspecting the logs of each service
Overmind launches the various services required for our local setup: `web` (the
Rails web server), `webpacker` (the server managing JavaScript) and `sidekiq`
(the server managing the asynchronous queue).
If, for example, you want to inspect just the Sidekiq logs, you can open a
separate terminal window to look at those logs specifically:
```shell
overmind c sidekiq
```
This will open a `tmux` console, which will allow you to browse _only_ the
Sidekiq logs.
There are also some handy `tmux` shortcuts that you may find useful.
- The shortcut `C-b [` (_Control-b-open square bracket_) activates "scroll
mode", which allows you to use the arrows up and down and inspect the logs.
- The shortcut `q` deactivates "scroll mode".
Please refer to [tmux][tmux] documentation for more information around `tmux`
configuration and for additional shortcuts.
## Resources
Other than the official [Overmind][overmind] and [tmux][tmux] documentation, you
may find the following resources useful:
- [Rails quick tips #6: tmux, tmuxinator and Overmind](https://dev.to/citizen428/rails-quick-tips-6-tmux-tmuxinator-and-overmind-4850)
- [Give Your Terminal Super Powers: tmux Cheatsheet!](https://dev.to/jacobherrington/give-your-terminal-super-powers-tmux-cheatsheet-1p6p)
- [Introducing Overmind and Hivemind](https://evilmartians.com/chronicles/introducing-overmind-and-hivemind)
[sidekiq]: https://github.com/mperham/sidekiq
[webpacker]: https://github.com/rails/webpacker
[overmind]: https://github.com/DarthSim/overmind
[tmux]: https://github.com/tmux/tmux/wiki