Alex Rivera | Logout

rake cucumber and rake spec always use "develop" environment

Asked 2011-03-28T17:45:20.373
11

My rake tasks for running Cucumber and RSpec tests are always using my development environment.

Here are the relevant config files:

RAILS_ROOT/config/environments/cucumber.rb

# Edit at your own peril - it's recommended to regenerate this file
# in the future when you upgrade to a newer version of Cucumber.

# IMPORTANT: Setting config.cache_classes to false is known to
# break Cucumber's use_transactional_fixtures method.
# For more information see https://rspec.lighthouseapp.com/projects/16211/tickets/165
config.cache_classes = true

# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true

# Show full error reports and disable caching
config.action_controller.consider_all_requests_local = true
config.action_controller.perform_caching             = false

# Disable request forgery protection in test environment
config.action_controller.allow_forgery_protection    = false

# Tell Action Mailer not to deliver emails to the real world.
# The :test delivery method accumulates sent emails in the
# ActionMailer::Base.deliveries array.
config.action_mailer.delivery_method = :test

# config.gem 'cucumber-rails',   :lib => false, :version => '>=0.3.2' unless File.directory?(File.join(Rails.root, 'vendor/plugins/cucumber-rails'))
# config.gem 'database_cleaner', :lib => false, :version => '>=0.5.0' unless File.directory?(File.join(Rails.root, 'vendor/plugins/database_cleaner'))
# config.gem 'capybara',         :lib => false, :version => '>=0.3.5' unless File.directory?(File.join(Rails.root, 'vendor/plugins/capybara'))
# config.gem 'rspec',            :lib => false, :version => '>=1.3.0' unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec'))
# config.gem 'rspec-rails',      :lib => false, :version => '>=1.3.2' unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec-rails'))

RAILS_ROOT/config

Edit
Report

1 Answer

1

Not only config files are relevant to setting up rails environment.

Check your lib/tasks/cucumber.rake file and if it doesn't contain it already add one of the following lines to it depending on your rails version (I added it after 'begin' line):

ENV["RAILS_ENV"] ||= 'cucumber' #for rails2

Rails.env ||= ActiveSupport::StringInquirer.new('cucumber') #for rails3

Notice that if you set environment to development in application.rb directly for example, then your tests will run in development.

Also there's another way to set environment to cucumber. If you're running rails with Passenger and Apache for example, then it is possible to run cucumber test in cucumber environment by adding "RailsEnv cucumber" line to your virtualhost configuration.

answered 2012-08-01T21:56:18.413

Your Answer