Continuous Integration, and Continuous Deployment for Ruby/Rails¶
Scrutinizer makes testing and analyzing Rails code simple. Before each build, Scrutinizer infers your build configuration
and test commands. This works very well most of the time. If you have a specific set-up that does not follow the
standard practices, you can fine tune your configuration by placing a .scrutinizer.yml
file in your project's
root folder.
Ruby Version¶
We use rbenv to make a range of Ruby versions available in our build environment.
By default, we either use 1.9.3-p448
or 1.8.7-p358
for running your build, whatever seems best.
If you would like to force a specific Ruby version, you can do so in your configuration:
build:
environment:
ruby: 'jruby-1.7.9'
You can learn more about how the configuration file works, and the available Ruby versions and checks in our build environment documentation.
Dependencies¶
Scrutinizer automatically installs your dependencies if you have placed a Gemfile in your project using bundle install
.
If you need to run other commands, you can add them in your configuration:
build:
nodes:
my-tests:
dependencies:
before:
- bundle exec rake assets:precompile
Project Setup/Database¶
We will take care of initializing the database using the standard rake
tasks for setting up and migrating your
database. We provide several databases and queues including MySQL, PostgreSQL, and RabbitMQ
pre-installed, if you like you can also
install custom software in your build environment.
Testing¶
Scrutinizer will automatically try to infer your test commands. We support running tests via Test::Unit
, MiniTest
,
cucumber
, spinach
, rspec
, jasmine
, konacha
and qunit
.
You can override the default test commands in your configuration file:
build:
nodes:
my-tests:
tests:
override:
- ./run-tests.sh
Code Coverage¶
Scrutinizer can automatically process the code coverage of your test runs - whether you only have a single run or run your tests in parallel. When you have set-up the scrutinizer-ocular gem, you can adjust your test command to generate code coverage:
build:
nodes:
tests-with-coverage:
tests:
override:
- command: bundle exec rake test
environment:
'SCRUTINIZER_CC_FILE': 'my-coverage'
coverage:
file: 'my-coverage'
format: 'rb-cc'
If you have multiple commands that generate code coverage data, we will automatically take care of merging it.
Deployment¶
Scrutinizer provides first-class support for deployment. Once all your tests have passed, it will automatically trigger deployment of your code. You can define deploy commands in your configuration file:
build:
nodes:
deploy:
requires:
- branch: master # you can use either the full branch name,
- branch: /feature_.*/ # or a regular rexpression
- node: my-tests # only run if my-tests node has succeeded
commands:
- cap deploy
Automated Reviews¶
Scrutinizer supports a wide-range of automated checks for Ruby code including code rating, code metrics, duplicate code detection, and many more. A basic configuration which enables code rating and duplicate code detection looks like this:
checks:
ruby: true
build:
nodes:
analysis:
tests:
override:
- ruby-scrutinizer-run
Learn more about configuring automated code reviews for Ruby.