每当我为我的Rails应用程序运行rspec测试时,在它真正开始运行测试之前需要很长时间和一天的开销。为什么rspec这么慢?有没有一种方法可以加快Rails的初始加载速度,或者挑出我需要的Rails应用程序部分(例如,仅ActiveRecord内容),这样它就不会完全加载所有内容来运行一些测试? 最佳答案 我绝对建议检查一下spork。http://spork.rubyforge.org/railstutorial专门解决了这个问题,并提供了一种解决方法,让spork在rails3.0中正常运行(截至目前,rails3还没有开箱即
背景:我正在使用EngineYard的RailsInstaller2包,这意味着Ruby1.9.2-p290和Rails3.1.1,在Windows7x64上。问题:在尝试RubyonRailsTutorial时在自动测试和spork按预期工作后,很明显,虽然rspec报告测试在几秒钟内完成,但实际消耗的时间远大于此,接近半分钟,与瞬间相去甚远在截屏视频中观察到的响应。我知道其中大部分可以归因于Rails加载时间(从spork在预加载阶段花费的时间量也可以看出),以及JRuby是如何变慢的(与Linux上的Ruby相比),但每个rspec15+s平均运行(有或没有spork,考虑到加载
我是Ruby&Rails的新手,目前正在研究RailsTutorial.具体来说,我目前正在编写本书中我需要的部分setupSpork.不幸的是当我进入spork我明白了UsingRSpec--RindaRingServerlisteningforconnections...--Startingtofillpool...Waituntilatleastoneslaveisprovidedbeforerunningtests...**CTRL+BREAKtostopSporkandkillallrubyslaveprocesses**Sporkisreadyandlisteningon8
我正在尝试将Cucumber用于Windows上的Rails项目。不幸的是,运行一个场景所花费的时间正在使BDD不可能的。我知道这主要是由于Rails加载所花费的时间在window下。有没有人对我如何加快速度有任何想法。例如,是否可以在Rails控制台内调用Cucumber以避免加载延迟。干杯。 最佳答案 Windows现在被Spork支持了!http://wiki.github.com/timcharper/spork/Spork是一个可以通过DRb调用的测试服务器。在POSIX系统上,Spork使用Kernel.fork。在Wi
如果代码执行redis相关函数,会引发Redis::InheritedError:Triedtouseaconnectionfromachildprocesswithoutreconnecting.YouneedtoreconnecttoRedisafterforking.当redis连接时它会将sporkprocess.pid保存为@pid,然后redis执行它会使用ensure_connected检查连接,这将通过Process.pid!=@pid检查。这两个pid是不同的,所以它会引发Redis::InheritedError。Google一下,Resque.after_fork
如果代码执行redis相关函数,会引发Redis::InheritedError:Triedtouseaconnectionfromachildprocesswithoutreconnecting.YouneedtoreconnecttoRedisafterforking.当redis连接时它会将sporkprocess.pid保存为@pid,然后redis执行它会使用ensure_connected检查连接,这将通过Process.pid!=@pid检查。这两个pid是不同的,所以它会引发Redis::InheritedError。Google一下,Resque.after_fork
我有一个标准的Rails3.2应用程序,但出现了一些奇怪的行为。我可以在不运行spork的情况下运行rspecspec/,并且所有测试都没有问题。然后我启动spork并再次运行规范。这一次,每一个涉及我的邮件程序的测试都会失败,并出现同样的错误:Failures:1)InvitationsControllerGETacceptwithnon-matchingtokenshouldredirecttotherootpathFailure/Error:let!(:invitation){Factory:invitation}NoMethodError:undefinedmethod`inv
我关注了"HowITest"screencastatRailsCasts,但是我遇到了spork的问题$guardGuardisnowwatchingat'/Users/darth/projects/auth-before'StartingSporkforTest::Unit&RSpecCouldn'tfindasupportedtestframeworkthatbeginswith'testunit'Supportedtestframeworks:()Cucumber(*)RSpecLegend:()-notdetectedinproject(*)-detectedUsingRSpe
我在Rails3.0环境中运行rspec。我们刚刚切换到在内存数据库中使用sqlite3进行测试。要使其正常工作,您需要在每次运行时加载模式。这样做的问题是您会从架构加载中获得大量输出。根据this,似乎Spork以某种方式捕获了这个输出。因此,无论您做什么(silence_stream),模式加载的输出仍将继续通过。有没有办法让spork中的这个静音?输出会减慢整个测试周期并使其非常烦人。 最佳答案 这对我有用:ActiveRecord::Schema.verbose=falseload"#{Rails.root}/db/sche
当尝试按照database_cleaner的GitHubpage上的示例进行操作时,我遇到了RSpec的以下错误:ActiveRecord::StatementInvalid:SQLite3::SQLException:cannotstartatransactionwithinatransaction:begintransactionspec_helper.rb中使用的配置是:require'spork'require'database_cleaner'Spork.preforkdo#..snipRSpec.configuredo|config|#..snipconfig.before