我发现的很多指南都没有使用捆绑包。
这是我用于测试的gemfile的一部分:
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)发生器
如果宝石作为插件安装,将安装生成器......但我认为这只会给应用程序增加膨胀,不同的宝石在不同的操作系统上编译不同。
那么,任何人都有任何指导用于使用rails 2.3.x设置带有捆绑器的rspec吗?
答案 0 :(得分:8)
我现在已经做过几次了;希望这对需要维护Rails 2.3应用程序的任何人都有帮助。这对我所参与的应用程序非常有用,但我欢迎其他人提供其他步骤的贡献。
本指南假定Bundler上的Rails 2.3.x项目
RSpec 2与Rails 2不兼容;使用RSpec 1(docs)。将最新的兼容gem版本放入Gemfile:
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
用于Gemfile中已有的任何宝石。
script/generate rspec
config.gem
行;该应用程序使用bundler。 spork --bootstrap
然后编辑spec / spec_helper.rb并按照说明操作。
将所有商品从spec spec_helper.rb移至prefork
块,但以下情况除外:
Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}
属于each_run
。
安装database_cleaner。在spec / spec_helper.rb中,
在prefork
区块中:
require 'database_cleaner'
在each_run
区块中:
DatabaseCleaner.clean
初始化Guardfile
guard init spork
guard init rspec
修改Guardfile的rspec防护,使用正确的版本和drb(spork):
guard 'rspec', :version => 1, :cli => '--drb --color' do
根据您的项目修改Guardfile
运行rake spec
。你应该没有输出(如果你没有测试)。如果您遇到错误,请解决它们。
运行guard
。没有错误?太棒了,试试吧!
有问题吗?通过运行spec spec
而不是重新运行后卫来更快地重试。
答案 1 :(得分:5)
我们仍然在rails 2.3.8上有一个应用程序,但我们更新它以使用bundler(Gemfile),并且它还有rspec和黄瓜工作。
确保按照捆绑包指南使您的应用正确使用Gemfile的gem加载而不是Rails的默认值:http://gembundler.com/rails23.html
获得preinitializer.rb并更改config / boot.rb正常工作后,您可能需要确保使用正确版本的rspec和黄瓜。
我认为通用gem 'rspec-rails'
可能会尝试为您安装rspec 2,但这只适用于Rails 3(我相信),因此您可能需要明确告诉它使用rspec 1.x。
我们的测试组看起来像这样(虽然我认为其中一些宝石可能比他们需要的更旧,但是我们已经更新它们已经有一段时间了,因为应用程序的rails 3升级正在等待我们也不会担心它现在的样子):
group :test, :cucumber do
gem 'autotest-fsevent'
gem 'test-unit', '~>1.2.3'
gem "hoe", "1.5.1"
gem 'autotest-rails', '4.1.0'
gem 'rspec', '1.3.2'
gem 'rspec-rails', '1.3.4'
gem 'cucumber', '0.10.0'#, '0.9.0'
# Change this shinanigans to 0.4.0 when it gets released ;)
gem 'cucumber-rails', '0.3.2'
gem 'database_cleaner', '0.5.2'
gem 'capybara', '0.3.9'
gem 'launchy'
gem 'dupe', '0.5.1'
gem 'factory_girl', '1.2.4'
gem 'email_spec', '~>0.6.2', :require => false
end
执行此操作并运行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
正如你所看到的,黄瓜和rspec发生器实际上都在那里。
我认为您的问题可能是它正在安装的rspec版本。如果它正在安装rspec版本2,那么它与rails 3相关联,它以不同的方式处理gems中的生成器我相信(我相信它们必须放在不同的目录结构中)。这可能就是你的rails 2.3.x应用程序没有看到它们的原因。
你不必完全遵循我的版本,我不是一个将特定版本放在Gemfile中的粉丝(但根本没有)但是我们最后在这里做了因为a)我们没有完全理解捆绑,和b)我们需要确保我们获得与导轨2.3兼容的宝石。
希望这有帮助!如果您有疑问,请告诉我。
答案 2 :(得分:0)
生成器不存在的原因是当您运行rails generate ...
时,它正在development
环境中执行,而这些gem只在test
环境中加载。
将它们添加到development
和test
环境中。
运行rails generate ... RAILS_ENV=test
(我不肯定这个选项会起作用。)
答案 3 :(得分:0)
在rails 5.1.4中,您可以通过四个简单的步骤来启动和运行RSpec:
group :development, :test do
gem "database_cleaner"
gem "rspec-rails"
end
将以上宝石添加到Gemfile中的:test和:开发组。
从命令行运行bundle install
rails generate rspec:install
,它将创建以下文件:创建.rspec 创建规范 创建spec / spec_helper.rb 创建spec / rails_helper.rb
您可以查看有关详细信息:https://kolosek.com/rails-rspec-setup。