# Specs - Rubinius
Rubinius is an implementation of the Ruby programming language. The Rubinius bytecode virtual machine is written in C++. The bytecode compiler is written in pure Ruby. The vast majority of the core library is also written in Ruby, with some supporting primitives that interact with the VM directly.
Author: Less Than Three. <3. http://less.thanthree.com

1.2.3

## Specs

This topic has missing or partial documentation. Please help us improve it.

See How-To - Write Documentation

O projeto Rubinius usa especificações executáveis no estilo TDD/BDD para impulsionar o desenvolvimento. Diretório ‘spec’ é conceitualmente dividida em duas partes:

1. Todos os arquivos em ‘./spec/ruby’ descrevem o comportamento de MatzRuby.
2. E todos os outros arquivos dentro do diretório ‘./spec’ descrevem o comportamento de Rubinius.

The specs at ./spec/ruby are a copy of RubySpec at a particular revision. These are regularly imported from the RubySpec project and failing specs are tagged so that the CI process always runs a known good set of specs. This enables easily confirming that changes to Rubinius code do not cause regressions.

Pode encontrar mais informações sobre a organização das specs e os guias no Projeto RubySpec.

Use o seguinte workflow ao adicionar specs e código no Rubinius:

1. Write failing specs for some aspect of Ruby behavior. Commit the specs in a separate commit to the appropriate files under ./spec/ruby.
2. Add Rubinius code to make the specs pass. Again, commit these changes in a separate commit from the spec changes.
3. Run the `rake` command to ensure that all the CI specs pass.

The changes to files in ./spec/ruby are regularly pushed to the RubySpec project. Also, current changes to RubySpec from committers to other Ruby implementations are regularly updated in the ./spec/ruby directories. When the specs are updated from RubySpec, the CI tags are also updated.