[rspec-users] undefined method `use_transactional_fixtures=' on windows with spec_server
David Chelimsky
dchelimsky at gmail.com
Tue Oct 20 20:17:12 EDT 2009
On Tue, Oct 20, 2009 at 1:44 PM, mikev <mike.vogel at emc.com> wrote:
> Any suggestions for what to check when running on windows with:
> rspec (1.2.9)
> rspec-rails (1.2.9)
> rails 2.3.3
> ruby 1.8.6
> spec_server
>
FYI - spec_server is removed from rspec-rails as of 1.2.9 and is no longer
being maintained by me. If anyone is interested in taking over maintenance,
it's up on github in a separate repo and freely available for forking:
http://github.com/dchelimsky/spec_server
Cheers,
David
>
> Run autospec with --drb option and get the following exception. Run
> autospec or 'spec spec' works fine.
>
> /spec/spec_helper.rb:19: undefined method
> `use_transactional_fixtures=' for #<Spec::Runner::Configuration:
> 0xe1e0934> (NoMethodError)
>
> spec_helper.rb contains:
>
> # This file is copied to ~/spec when you run 'ruby script/generate
> rspec'
> # from the project root directory.
> ENV["RAILS_ENV"] ||= 'test'
> require File.expand_path(File.join(File.dirname
> (__FILE__),'..','config','environment'))
> require 'spec/autorun'
> require 'spec/rails'
>
> # Uncomment the next line to use webrat's matchers
> #require 'webrat/integrations/rspec-rails'
>
> # Requires supporting files with custom matchers and macros, etc,
> # in ./support/ and its subdirectories.
> Dir[File.expand_path(File.join(File.dirname
> (__FILE__),'support','**','*.rb'))].each {|f| require f}
>
> Spec::Runner.configure do |config|
> # If you're not using ActiveRecord you should remove these
> # lines, delete config/database.yml and disable :active_record
> # in your config/boot.rb
> config.use_transactional_fixtures = true
> config.use_instantiated_fixtures = false
> config.fixture_path = RAILS_ROOT + '/spec/fixtures/'
> ...
>
>
> spec_server contains was copied from
> http://github.com/dchelimsky/spec_server:
>
> #!/usr/bin/env ruby
> gem 'test-unit', '1.2.3' if RUBY_VERSION.to_f >= 1.9
>
> puts "Loading Rails environment"
> ENV["RAILS_ENV"] ||= 'test'
> require File.expand_path(File.dirname(__FILE__) + "/../config/
> environment") unless defined?(RAILS_ROOT)
>
> require 'optparse'
>
> if Rails::VERSION::STRING >= '2.2' &&
> Rails.configuration.cache_classes
> raise <<-MESSAGE
>
> #{'*'*65}
>
> Rails.configuration.cache_classes == true
> This means that spec_server won't reload your classes when
> you change them, which defeats the purpose of spec_server.
> Please set 'config.cache_classes = false' (it's probably
> set to true in config/environments/test.rb) and give it
> another try.
>
> #{'*'*65}
> MESSAGE
> end
>
> require 'drb/drb'
> require 'rbconfig'
>
> # This is based on Florian Weber's TDDMate
> module Spec
> module Rails
> class SpecServer
> class << self
> def restart_test_server
> puts "restarting"
> config = ::Config::CONFIG
> ruby = File::join(config['bindir'], config
> ['ruby_install_name']) + config['EXEEXT']
> command_line = [ruby, $0, ARGV].flatten.join(' ')
> exec(command_line)
> end
>
> def daemonize(pid_file = nil)
> return yield if $DEBUG
> pid = Process.fork{
> Process.setsid
> Dir.chdir(RAILS_ROOT)
> trap("SIGINT"){ exit! 0 }
> trap("SIGTERM"){ exit! 0 }
> trap("SIGHUP"){ restart_test_server }
> File.open("/dev/null"){|f|
> STDERR.reopen f
> STDIN.reopen f
> STDOUT.reopen f
> }
> run
> }
> puts "spec_server launched (PID: %d)" % pid
> File.open(pid_file,"w"){|f| f.puts pid } if pid_file
> exit! 0
> end
>
> def run
> trap("USR2")
> { ::Spec::Rails::SpecServer.restart_test_server } if
> Signal.list.has_key?("USR2")
> DRb.start_service("druby://
> 127.0.0.1:8989", ::Spec::Rails::SpecServer.new)
> DRb.thread.join
> end
> end
>
> def run(argv, stderr, stdout)
> $stdout = stdout
> $stderr = stderr
>
> ::Rails::Configuration.extend Module.new {def cache_classes;
> false; end}
>
> ::ActiveSupport.const_defined?(:Dependencies) ?
> ::ActiveSupport::Dependencies.mechanism = :load :
> ::Dependencies.mechanism = :load
>
> require 'action_controller/dispatcher'
> dispatcher = ::ActionController::Dispatcher.new($stdout)
>
> if ::ActionController::Dispatcher.respond_to?
> (:reload_application)
> ::ActionController::Dispatcher.reload_application
> else
> dispatcher.reload_application
> end
>
> if Object.const_defined?(:Fixtures) && Fixtures.respond_to?
> (:reset_cache)
> Fixtures.reset_cache
> end
>
> unless Object.const_defined?(:ApplicationController)
> %w(application_controller.rb application.rb).each do |name|
> require_dependency(name) if File.exists?("#{RAILS_ROOT}/
> app/controllers/#{name}")
> end
> end
> load "#{RAILS_ROOT}/spec/spec_helper.rb"
>
> if in_memory_database?
> load "#{RAILS_ROOT}/db/schema.rb"
> ActiveRecord::Migrator.up('db/migrate')
> end
>
> ::Spec::Runner::CommandLine.run(
> ::Spec::Runner::OptionParser.parse(
> argv,
> $stderr,
> $stdout
> )
> )
>
> if ::ActionController::Dispatcher.respond_to?
> (:cleanup_application)
> ::ActionController::Dispatcher.cleanup_application
> else
> dispatcher.cleanup_application
> end
>
> end
>
> def in_memory_database?
> ENV["RAILS_ENV"] == "test" and
> ::ActiveRecord::Base.connection.class.to_s ==
> "ActiveRecord::ConnectionAdapters::SQLite3Adapter" and
> ::Rails::Configuration.new.database_configuration['test']
> ['database'] == ':memory:'
> end
> end
> end
> end
>
> options = Hash.new
> parser = OptionParser.new
> parser.on("-d", "--daemon") {|ignore| options[:daemon] = true }
> parser.on("-p", "--pid PIDFILE"){|pid| options[:pid] = pid }
> parser.parse!(ARGV)
>
> if options[:daemon]
> ::Spec::Rails::SpecServer.daemonize(options[:pid])
> else
> ::Spec::Rails::SpecServer.run
> end
>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20091020/ee62c023/attachment.html>
More information about the rspec-users
mailing list