Ruby on rails 如何使用rails 2.3.8和bundler设置rspec?

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

我找到的很多指南都不使用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 "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项目

  • 去掉项目中的任何旧rspec插件(如果有的话)。RSpec位可能隐藏在:
    • 耙子
    • lib/tasks/rspec.rake
    • 供应商/插件/rspec
    • (你能找到的任何其他东西)
  • RSpec 2与Rails 2不兼容;使用rspec1()。将最新的兼容gem版本放入gem文件:

    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

  • 确保lib/tasks/rspec.rake和spec/spec_helper.rb不存在
  • 编写脚本/生成rspec
  • 删除添加到config/environments/test.rb的
    config.gem
    行;该应用程序使用bundler
  • spork——引导

    然后编辑spec/spec_helper.rb并按照说明操作

    将stock spec_helper.rb中的所有内容移动到
    prefork
    块中,除了:

    Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}
    
    属于每次运行的

  • 安装数据库清理器。在spec/spec_helper.rb中

    prefork
    块中:

    require 'database_cleaner'
    
    DatabaseCleaner.clean
    
    每次运行
    块中:

    require 'database_cleaner'
    
    DatabaseCleaner.clean
    
  • 初始化Guardfile

    • guard init spork
    • guard init rspec
    • 修改Guardfile的rspec guard以使用正确的版本和drb(spork):

    • 根据项目的需要修改Guardfile

  • 运行rake spec。您应该没有输出(如果没有测试)。如果出现错误,请解决它们

  • 运行
    guard
    。没有错误?太好了,开始测试吧

    问题?通过运行
    spec
    而不是重新运行guard,可以更快地重试


  • 在rails 5.1.4中,您可以通过四个简单的步骤启动并运行RSpec:

    group :development, :test do
      gem "database_cleaner"
      gem "rspec-rails"
    end
    
  • 将上述gem添加到Gemfile中的:test和:development组

  • 从命令行运行
    bundle安装

  • 从命令行运行
    rails generate rspec:install
    ,它将创建以下文件:
  • create.rspec 创建规范 创建等级库/spec\u helper.rb 创建等级库/rails\u helper.rb

  • 配置spec_helper.rb和rails_helper.rb

  • 您可以在以下位置查看更多详细信息:。

    我正在使用rails 2.3.8,所以我尝试了以下方法:bundle exec script/generate rspec rails\u ENV=test。。。仍然说找不到rspec生成器。您捆绑了什么版本的rspec?