Sha256: 3476cbc1d4d480734f791336bd8704cdd7a577643c3703e6b35221dce5149dab
Contents?: true
Size: 1.62 KB
Versions: 2
Compression:
Stored size: 1.62 KB
Contents
# Reek Driven Development ## rake One way to drive quality into your code from the very beginning of a project is to run `reek` as a part of your testing process. For example, you could do that by adding a [Rake Task](Rake-Task.md) to your rakefile, which will make it easy to run `reek` on all your source files whenever you need to. ```Ruby require 'reek/rake/task' Reek::Rake::Task.new do |t| t.fail_on_error = true t.verbose = false t.source_files = 'lib/**/*.rb' end ``` Now the command `reek` will run `reek` on your source code (and in this case, it fails if it finds any smells). For more detailed information about `reek`'s integration with Rake, see [Rake Task](Rake-Task.md) in this wiki. ## reek/spec But there's another way; a much more effective "Reek-driven" approach: add `reek` expectations directly into your Rspec specs. Here's an example taken directly from `reek`'s own source code: ```Ruby it 'contains no code smells' do Dir['lib/**/*.rb'].should_not reek end ``` By requiring "reek/spec":http://reek.rubyforge.org/rdoc/classes/Reek/Spec.html you gain access to the `reek` matcher, which returns true if and only if `reek` finds smells in your code. And if the test fails, the matcher produces an error message that includes details of all the smells it found. Note: if you're on ruby 1.9 and RSpec2 you should include Reek::Spec in the configuration block like so, ```Ruby RSpec.configure do |c| c.include(Reek::Spec) end ``` ## assert If you're not yet into BDD with Rspec, you can still gain the benefits of Reek-driven development using assertions: ```Ruby assert !Dir['lib/**/*.rb'].to_source.smelly? ```
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
reek-2.2.1 | docs/Reek-Driven-Development.md |
reek-2.2.0 | docs/Reek-Driven-Development.md |