Ruby on rails 如何使用rails 2.3.8和bundler设置rspec?
我找到的很多指南都不使用bundler 这是我用于测试的GEM文件的一部分:Ruby on rails 如何使用rails 2.3.8和bundler设置rspec?,ruby-on-rails,testing,Ruby On Rails,Testing,我找到的很多指南都不使用bundler 这是我用于测试的GEM文件的一部分: group :test do gem "cucumber" gem "cucumber-rails" gem "launchy" gem "hpricot" gem "gherkin" gem "capybara" gem "rspec" gem "rack" gem "rspec-rails" gem "webrat" gem
group :test do
gem "cucumber"
gem "cucumber-rails"
gem "launchy"
gem "hpricot"
gem "gherkin"
gem "capybara"
gem "rspec"
gem "rack"
gem "rspec-rails"
gem "webrat"
gem "database_cleaner"
gem "factory_girl"
gem "shoulda", :require => nil
gem "shoulda-matchers", :git => "https://github.com/thoughtbot/shoulda-matchers"
gem "cobravsmongoose"
gem "rcov"
gem "ZenTest"
gem "autotest-growl"
gem "inherited_resources", "1.0.2"
gem "responders", "0.4.2"
end
但即便如此,发电机也永远不存在。
这样做:编写脚本/生成rspec
不工作,(找不到rspec)生成器
如果gems是作为插件安装的,那么发电机将被安装。。。但我认为这只会增加应用程序的膨胀,不同的gem在不同的操作系统上编译的方式也不同
因此,任何人都有使用bundler和rails 2.3.x设置rspec的指南吗?生成器不存在的原因是,当您运行
rails generate…
时,它在开发
环境中执行,而这些gem只在测试
环境中加载
选择1
将它们添加到开发
和测试
环境中
选择2
运行rails生成。。。RAILS_ENV=测试
(我不确定这个选项是否有效。)我们在rails 2.3.8上仍然有一个应用程序,但我们将其更新为使用bundler(Gemfile),并且它的rspec和cucumber也可以工作 请确保遵循bundler指南,以确保应用程序正确使用Gemfile的gem加载,而不是Rails的默认加载: 在获得preinitializer.rb并更改config/boot.rb后,可能需要确保使用了正确版本的rspec和cucumber 我认为generic
gem'rspecrails'
可能会尝试为您安装rspec2,但这只适用于Rails3(我相信),所以您可能需要特别告诉它使用rspec1.x
我们的测试组看起来是这样的(虽然我认为其中一些gem可能比它们需要的更老,但自从rails 3升级应用程序待定以来,我们已经更新了很久了,我们现在不太担心它的外观):
执行此操作后,运行bundle install
,我可以键入命令script/generate--help
,该命令在输出中包含以下内容:
Installed Generators
Rubygems: business_time_config, cucumber, culerity, dupe, email_spec, feature, integration_spec, paperclip, rspec, rspec_controller, rspec_model, rspec_scaffold
Builtin: controller, helper, integration_test, mailer, metal, migration, model, observer, performance_test, plugin, resource, scaffold, session_migration
如您所见,cucumber和rspec生成器实际上在那里可用
我想你的问题可能是它正在安装的rspec版本。如果它安装的是rspec版本2,那么它将绑定到rails 3,我认为它以不同的方式处理gems中的生成器(我认为它们必须放在不同的目录结构中)。这可能就是为什么你的rails 2.3.x应用程序看不到它们的原因
你不必完全遵循我的版本,我(根本)不喜欢将特定版本放在Gemfile中,但我们最终还是在这里这么做了,因为a)我们没有完全理解bundler,b)我们需要确保获得与rails 2.3兼容的Gem
希望这有帮助!如果您有任何疑问,请告诉我。在Rails 2项目中设置RSpec、Guard和Spork
我已经做过几次了;希望这将有助于任何需要维护Rails2.3应用程序的人。这对于我所开发的应用程序来说非常有效,但我欢迎其他人提出更多建议
本指南假设捆绑机上有Rails 2.3.x项目
- 耙子
- lib/tasks/rspec.rake
- 供应商/插件/rspec
- (你能找到的任何其他东西)
group :test, :development do
gem 'test-unit', '1.2.3', :require => false # for rspec
gem 'rspec', '~> 1.2', :require => false
gem 'rspec-rails', '~> 1.2', :require => false
gem 'guard', :require => false
gem 'spork', '~> 0.8.0', :require => false
gem 'guard-rspec', :require => false
gem 'guard-spork', :require => false
gem 'growl', :require => false # notifications; optional
gem 'rb-fsevent', :require => false # for OSX; optional
gem 'listen', '>= 0.5.1', :require => false
gem 'machinist', '~> 2.0', :require => false
gem 'database_cleaner', '~> 0.9.1', :require => false
end
:require=>false
选项是可选的,但是如果应用程序不必在SpecHelper.rb需要时加载测试库,它可以帮助应用程序在开发中更快地启动bundle update
更新您的gem文件中已有的任何gem编写脚本/生成rspec
config.gem
行;该应用程序使用bundlerspork——引导
然后编辑spec/spec_helper.rb并按照说明操作
将stock spec_helper.rb中的所有内容移动到prefork
块中,除了:
Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}
属于每次运行的
prefork
块中:
require 'database_cleaner'
DatabaseCleaner.clean
在每次运行
块中:
require 'database_cleaner'
DatabaseCleaner.clean
guard init spork
guard init rspec
- 修改Guardfile的rspec guard以使用正确的版本和drb(spork):
- 根据项目的需要修改Guardfile
guard
。没有错误?太好了,开始测试吧
问题?通过运行spec
而不是重新运行guard,可以更快地重试在rails 5.1.4中,您可以通过四个简单的步骤启动并运行RSpec:
group :development, :test do
gem "database_cleaner"
gem "rspec-rails"
end
bundle安装
rails generate rspec:install
,它将创建以下文件:您可以在以下位置查看更多详细信息:。我正在使用rails 2.3.8,所以我尝试了以下方法:bundle exec script/generate rspec rails\u ENV=test。。。仍然说找不到rspec生成器。您捆绑了什么版本的rspec?