Cucumber-Rails brings Cucumber to Rails 3.x. For Rails 2.3.x support, see the rails-2.3.x branch.
Before you can use the generator, add the gem to your project's Gemfile as follows:
group :test do gem 'cucumber-rails', :require => false # database_cleaner is not required, but highly recommended gem 'database_cleaner' end
Then install it by running:
Learn about the various options:
rails generate cucumber:install --help
Finally, bootstrap your Rails app, for example:
rails generate cucumber:install
[bundle exec] cucumber
Bugs and feature requests
The only way to have a bug fixed or a new feature accepted is to describe it with a Cucumber feature. Let's say you think you have found a bug in the cucumber:install generator. Fork this project, clone it to your workstation and check out a branch with a descriptive name:
git clone email@example.com:you/cucumber-rails.git git checkout -b bug-install-generator
Start by making sure you can run the existing features. Now, create a feature that demonstrates what's wrong. See the existing features for examples. When you have a failing feature that reproduces the bug, commit, push and send a pull request. Someone from the Cucumber-Rails team will review it and hopefully create a fix.
If you know how to fix the bug yourself, make a second commit (after committing the failing feature) before you send the pull request.
Setting up your environment
I strongly recommend rvm and ruby 1.9.3. When you have that, cd into your cucumber-rails repository and:
gem install bundler bundle install
Running all tests
With all dependencies installed, all specs and features should pass:
One of the features uses MongoDB, which needs to be running in order to make features/mongoid.feature to pass.
Running Appraisal suite
In order to test against multiple versions of key dependencies, the Appraisal is used to generate multiple gemfiles, stored in the
gemfiles/ directory. Normally these will only run on Travis; however, if you want to run the full test suite against all gemfiles, run the following commands:
rake gemfiles:install rake test:all
To run the suite against a named gemfile, use the following:
To remove and rebuild the different gemfiles (for example, to update a rails version or its dependencies), use the following:
To support the multiple-gemfile testing, when adding a new dependency the following rules apply:
- If it's a runtime dependency of the gem, add it to the gemspec
- If it's a primary development dependency, add it to the gemspec
- If it's a dependency of a generated rails app in a test, add it to the Gemfile (for local test runs) and each appraisal section (if necessary).
For example, rspec is a primary development dependency, so it lives in the gemspec. By contrast, coffee-rails is a dependency of apps generated with rails 3.1 and 3.2, so lives in the main Gemfile and the rails 3.1 and 3.2 appraisal sections.