Как мне установить rspec с рельсами 2.3.8 и bundler? - PullRequest
3 голосов
/ 06 марта 2012

Многие из найденных мной руководств не используют упаковщик.

это часть гемфайла, которую я использую для тестов:

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) генератор

Генераторы

были бы установлены, если бы гемы были установлены как плагины ... но я думаю, что это просто добавляет раздувание к приложению, и разные гемы компилируются по-разному в разных ОС.

Итак, у кого-нибудь есть руководства по настройке rspec с помощью bundler with rails 2.3.x?

Ответы [ 4 ]

8 голосов
/ 19 февраля 2013

Настройка RSpec, Guard и Spork в проекте Rails 2

Я сделал это несколько раз сейчас; надеюсь, это будет полезно всем, кому нужно поддерживать приложения Rails 2.3. Это отлично работает для приложений, над которыми я работал, но я приветствую комментарии других, которые предлагают дополнительные шаги.

В этом руководстве предполагается использование проекта Rails 2.3.x в Bundler

  1. Избавьтесь от любых старых плагинов rspec, которые есть в вашем проекте, если они есть. Биты RSpec могут скрываться в:
    • Rakefile
    • Библиотека / задачи / rspec.rake
    • производитель / плагины / RSpec
    • (все, что вы можете найти)
  2. RSpec 2 не совместим с Rails 2; используйте RSpec 1 ( документы ). Поместите в Gemfile самые последние совместимые версии 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.

  3. Установите комплект. Используйте bundle update для любых драгоценных камней, которые уже были в вашем Gemfile.

  4. Убедитесь, что lib / tasks / rspec.rake и spec / spec_helper.rb не существуют.
  5. script/generate rspec
  6. Удалите строку config.gem, которая была добавлена ​​в config / environment / test.rb; приложение использует упаковщик.
  7. spork --bootstrap

    Затем отредактируйте spec / spec_helper.rb и следуйте инструкциям.

    Переместите все из фондового spec_helper.rb в блок prefork, кроме:

    Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}
    

    принадлежит each_run.

  8. Установить database_cleaner. В spec / spec_helper.rb,

    В блоке prefork:

    require 'database_cleaner'
    

    В блоке each_run:

    DatabaseCleaner.clean
    
  9. Инициализация Guardfile

    • guard init spork
    • guard init rspec
    • Измените защиту rspec Guardfile, чтобы использовать правильную версию и drb (spork):

      guard 'rspec', :version => 1, :cli => '--drb --color' do
      
    • Измените Guardfile в соответствии с вашим проектом

  10. Выполнить rake spec. Вы не должны получать никаких результатов (если у вас нет тестов). Если вы получаете ошибки, устраните их.

  11. Выполнить guard. Нет ошибок? Отлично, проверь!

    Проблемы? Попробуйте еще раз быстрее, запустив spec spec вместо перезапуска охраны.

5 голосов
/ 14 марта 2012

У нас все еще есть приложение на рельсах 2.3.8, но мы обновили его, чтобы оно использовало упаковщик (Gemfile), и оно также работает с rspec и cucumber.

Убедитесь, что вы следуете руководству по сборщику, чтобы сделатьваше приложение правильно использует загрузку гемов Gemfile вместо значений по умолчанию Rails: http://gembundler.com/rails23.html

После того, как вы получите preinitializer.rb и измените config / boot.rb, работающий правильно, вам может потребоваться убедиться, что выиспользуя правильные версии rspec и cucumber.

Я думаю, что просто gem 'rspec-rails' может попробовать установить rspec 2 для вас, но это работает только на Rails 3 (я полагаю), поэтому вам, возможно, придется специально сказатьчтобы использовать rspec 1.x.

Наша тестовая группа выглядит следующим образом (хотя я думаю, что некоторые из этих драгоценных камней могут быть старше, чем они должны быть, прошло некоторое время, так как мы обновили их со времен рельсов 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

Как вы можете видеть, генераторы cucumber и rspec действительно доступны там.

Я думаю, что ваша проблема может быть в версии rspec, которую он устанавливает,Если он устанавливает rspec версии 2, то это связано с rails 3, который по-разному обрабатывает генераторы в гемах (я считаю, что их нужно поместить в другую структуру каталогов).Возможно, именно поэтому ваше приложение rails 2.3.x их не видит.

Вам не обязательно точно следовать моим версиям, я не фанат (вообще) помещать конкретные версии в Gemfileно мы закончили тем, что делали это здесь еще в далеком прошлом, потому что а) мы не до конца понимали упаковщик и б) нам нужно было убедиться, что мы получаем rails 2.3-совместимые гемы.

Надеюсь, это поможет!Дайте мне знать, если у вас есть вопросы.

0 голосов
/ 21 февраля 2018

В rails 5.1.4 вам есть четыре простых шага, чтобы настроить RSpec:

group :development, :test do
  gem "database_cleaner"
  gem "rspec-rails"
end
  1. Добавьте вышеуказанные гемы в группы разработки: test и: в вашем Gemfile.

  2. запустить bundle install из командной строки

  3. запустите rails generate rspec:install из командной строки, он создаст следующие файлы:

создать .rspec создать спецификацию создать spec / spec_helper.rb создать spec / rails_helper.rb

  1. настроить spec_helper.rb и rails_helper.rb

Более подробную информацию вы можете посмотреть на: https://kolosek.com/rails-rspec-setup.

0 голосов
/ 08 марта 2012

Причина, по которой генераторы не существуют, заключается в том, что при запуске rails generate ... он выполняется в среде development, в то время как эти гемы загружаются только в среде test.

Вариант 1

Добавьте их в среды development и test.

Вариант 2

Выполнить rails generate ... RAILS_ENV=test

(я не уверен, что эта опция будет работать.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...