Rake tasks for developers

Setup 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

Thesetuptask is an alias forgitlab:setup. This tasks callsdb:resetto create the database, callsadd_limits_mysqlthat adds limits to the database schema in case of a MySQL database and finally it callsdb:seed_futo seed the database. Note:db:setupcallsdb:seedbut this does nothing.

Automation

If you're very sure that you want towipe the current databaseand refill seeds, you could:

echo'yes'| bundleexecrake setup

To save you from answeringyesmanually.

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:

echo'yes'| bundleexecrake setup>/dev/null

Note that since you can't see the questions from stdout, you might just want toecho 'yes'to keep it running. It would still print the errors on stderr so no worries about missing errors.

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 usingutf8mb4for all the encoding settings andutf8mb4_unicode_cifor collation. Please checkMySQL utf8mb4 support

Make sure thatconfig/database.ymlhasencoding: utf8mb4, too.

接下来,我们将需要更新的模式使indices fit:

sed-i's/limit: 255/limit: 191/g'db/schema.rb

Then run the setup script:

bundleexecrake setup

To make sure that indices still fit. You could find great details in:How to support full Unicode in MySQL databases

Run tests

In order to run the test you can use the following commands:

  • rake spinachto run the spinach suite
  • rake specto run the rspec suite
  • rake karmato run the karma test suite
  • rake gitlab:testto run all the tests

Note: Bothrake spinachandrake spectakes 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 runrspec .since this will try to run all the_spec.rbfiles it can find, also the ones in/tmp

To run a single test file you can use:

  • bin/rspec spec/controllers/commit_controller_spec.rbfor a rspec test
  • bin/spinach features/project/issues/milestones.featurefor a spinach test

To run several tests inside one directory:

  • bin/rspec spec/requests/api/for the rspec tests if you want to test API only
  • bin/spinach features/profile/for the spinach tests if you want to test only profile pages

Speed-up tests, rake tasks, and migrations

Springis 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 theENABLE_SPRINGenvironment variable to1:

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 =生产NODE_ENV =生产包的前女友ec 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/assetswhere 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 filefixtures/emojis/digests.jsonbased 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 theemoji.pngspritesheet with the above Rake task, then check the dimensions of the new spritesheet and update theSPRITESHEET_WIDTHandSPRITESHEET_HEIGHTconstants 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 windowbundle exec rake gitlab:update_project_templatesgit checkout -b update-project-templatesgit add vendor/project_templatesgit commitgit push -u origin update-project-templates

Now create a merge request and merge that to master.

Baidu
map