eb86630959
Markdown renderers find it easier to determine where lists start and end when lists are surrounded by new lines. For consistency, also ensure entries in the list are aligned when they span multipls lines.
203 lines
5.9 KiB
Markdown
203 lines
5.9 KiB
Markdown
# Rake tasks for developers
|
|
|
|
## Set up db with developer seeds
|
|
|
|
Note that if your db user does not have advanced privileges you must create the db manually before running this command.
|
|
|
|
```
|
|
bundle exec rake setup
|
|
```
|
|
|
|
The `setup` task is an alias for `gitlab:setup`.
|
|
This tasks calls `db:reset` to create the database, calls `add_limits_mysql` that adds limits to the database schema in case of a MySQL database and finally it calls `db:seed_fu` to seed the database.
|
|
Note: `db:setup` calls `db:seed` but this does nothing.
|
|
|
|
### Automation
|
|
|
|
If you're very sure that you want to **wipe the current database** and refill
|
|
seeds, you could:
|
|
|
|
``` shell
|
|
echo 'yes' | bundle exec rake setup
|
|
```
|
|
|
|
To save you from answering `yes` manually.
|
|
|
|
### Discard stdout
|
|
|
|
Since the script would print a lot of information, it could be slowing down
|
|
your terminal, and it would generate more than 20G logs if you just redirect
|
|
it to a file. If we don't care about the output, we could just redirect it to
|
|
`/dev/null`:
|
|
|
|
``` shell
|
|
echo 'yes' | bundle exec rake setup > /dev/null
|
|
```
|
|
|
|
Note that since you can't see the questions from stdout, you might just want
|
|
to `echo 'yes'` to keep it running. It would still print the errors on stderr
|
|
so no worries about missing errors.
|
|
|
|
### Extra Project seed options
|
|
|
|
There are a few environment flags you can pass to change how projects are seeded
|
|
|
|
- `SIZE`: defaults to `8`, max: `32`. Amount of projects to create.
|
|
- `LARGE_PROJECTS`: defaults to false. If set will clone 6 large projects to help with testing.
|
|
- `FORK`: defaults to false. If set to `true` will fork `torvalds/linux` five times. Can also be set to an existing project full_path and it will fork that instead.
|
|
|
|
### Notes for MySQL
|
|
|
|
Since the seeds would contain various UTF-8 characters, such as emojis or so,
|
|
we'll need to make sure that we're using `utf8mb4` for all the encoding
|
|
settings and `utf8mb4_unicode_ci` for collation. Please check
|
|
[MySQL utf8mb4 support](../install/database_mysql.md#mysql-utf8mb4-support)
|
|
|
|
Make sure that `config/database.yml` has `encoding: utf8mb4`, too.
|
|
|
|
Next, we'll need to update the schema to make the indices fit:
|
|
|
|
``` shell
|
|
sed -i 's/limit: 255/limit: 191/g' db/schema.rb
|
|
```
|
|
|
|
Then run the setup script:
|
|
|
|
``` shell
|
|
bundle exec rake setup
|
|
```
|
|
|
|
To make sure that indices still fit. You could find great details in:
|
|
[How to support full Unicode in MySQL databases](https://mathiasbynens.be/notes/mysql-utf8mb4)
|
|
|
|
## Run tests
|
|
|
|
In order to run the test you can use the following commands:
|
|
|
|
- `rake spec` to run the rspec suite
|
|
- `rake karma` to run the karma test suite
|
|
- `rake gitlab:test` to run all the tests
|
|
|
|
Note: `rake spec` takes significant time to pass.
|
|
Instead of running full test suite locally you can save a lot of time by running
|
|
a single test or directory related to your changes. After you submit merge request
|
|
CI will run full test suite for you. Green CI status in the merge request means
|
|
full test suite is passed.
|
|
|
|
Note: You can't run `rspec .` since this will try to run all the `_spec.rb`
|
|
files it can find, also the ones in `/tmp`
|
|
|
|
To run a single test file you can use:
|
|
|
|
- `bin/rspec spec/controllers/commit_controller_spec.rb` for a rspec test
|
|
|
|
To run several tests inside one directory:
|
|
|
|
- `bin/rspec spec/requests/api/` for the rspec tests if you want to test API only
|
|
|
|
### Speed-up tests, rake tasks, and migrations
|
|
|
|
[Spring](https://github.com/rails/spring) is a Rails application preloader. It
|
|
speeds up development by keeping your application running in the background so
|
|
you don't need to boot it every time you run a test, rake task or migration.
|
|
|
|
If you want to use it, you'll need to export the `ENABLE_SPRING` environment
|
|
variable to `1`:
|
|
|
|
```
|
|
export ENABLE_SPRING=1
|
|
```
|
|
|
|
Alternatively you can use the following on each spec run,
|
|
|
|
```
|
|
bundle exec spring rspec some_spec.rb
|
|
```
|
|
|
|
## Compile Frontend Assets
|
|
|
|
You shouldn't ever need to compile frontend assets manually in development, but
|
|
if you ever need to test how the assets get compiled in a production
|
|
environment you can do so with the following command:
|
|
|
|
```
|
|
RAILS_ENV=production NODE_ENV=production bundle exec rake gitlab:assets:compile
|
|
```
|
|
|
|
This will compile and minify all JavaScript and CSS assets and copy them along
|
|
with all other frontend assets (images, fonts, etc) into `/public/assets` where
|
|
they can be easily inspected.
|
|
|
|
## Generate API documentation for project services (e.g. Slack)
|
|
|
|
```
|
|
bundle exec rake services:doc
|
|
```
|
|
|
|
## Updating Emoji Aliases
|
|
|
|
To update the Emoji aliases file (used for Emoji autocomplete) you must run the
|
|
following:
|
|
|
|
```
|
|
bundle exec rake gemojione:aliases
|
|
```
|
|
|
|
## Updating Emoji Digests
|
|
|
|
To update the Emoji digests file (used for Emoji autocomplete) you must run the
|
|
following:
|
|
|
|
```
|
|
bundle exec rake gemojione:digests
|
|
```
|
|
|
|
This will update the file `fixtures/emojis/digests.json` based on the currently
|
|
available Emoji.
|
|
|
|
## Emoji Sprites
|
|
|
|
Generating a sprite file containing all the Emoji can be done by running:
|
|
|
|
```
|
|
bundle exec rake gemojione:sprite
|
|
```
|
|
|
|
If new emoji are added, the spritesheet may change size. To compensate for
|
|
such changes, first generate the `emoji.png` spritesheet with the above Rake
|
|
task, then check the dimensions of the new spritesheet and update the
|
|
`SPRITESHEET_WIDTH` and `SPRITESHEET_HEIGHT` constants accordingly.
|
|
|
|
## Updating project templates
|
|
|
|
Starting a project from a template needs this project to be exported. On a
|
|
up to date master branch with run:
|
|
|
|
```
|
|
gdk run
|
|
# In a new terminal window
|
|
bundle exec rake gitlab:update_project_templates
|
|
git checkout -b update-project-templates
|
|
git add vendor/project_templates
|
|
git commit
|
|
git push -u origin update-project-templates
|
|
```
|
|
|
|
Now create a merge request and merge that to master.
|
|
|
|
## Generate route lists
|
|
|
|
To see the full list of API routes, you can run:
|
|
|
|
```shell
|
|
bundle exec rake grape:path_helpers
|
|
```
|
|
|
|
For the Rails controllers, run:
|
|
|
|
```shell
|
|
bundle exec rake routes
|
|
```
|
|
|
|
Since these take some time to create, it's often helpful to save the output to
|
|
a file for quick reference.
|