rails3 вопрос rspec - PullRequest
       37

rails3 вопрос rspec

3 голосов
/ 12 сентября 2010

Я пробую рельсы3.Я использую сайт railstutorial , чтобы узнать больше о rails3;учебник очень хорош для начала (у меня минимальный опыт работы с rails2).

У меня проблема с rspec, которая в настоящее время блокирует мой прогресс.Я видел, что в руководстве рекомендуется использовать гем rspec2.0.0.beta.18;Вместо этого я установил rspec2.0.0.beta.20 gem, используя

bundle install

Однако я нахожу проблемы с этой версией rspec. Мой rspec для Integration_test выглядит так::

Failures:
  1) LayoutLinks should have a About page at '/about'
     Failure/Error: Unable to find matching line from backtrace
     stack level too deep
     # /home/arun/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/forwardable.rb:185

(ПРИМЕЧАНИЕ. Те, кто смотрел на главу 5 , не будут иметь проблем с пониманием контекста.)

Если я изменюВерсия rspec до 2.0.0.beta.18 в Gemfile и запуска rspec Я получаю следующую ошибку

arun@ubuntu-world:~/Project/Rails/rails3/sample_app$ rspec spec/
/home/arun/.rvm/gems/ruby-1.9.2-p0/gems/bundler-1.0.0/lib/bundler/runtime.rb:27:in `block in setup': You have already activated rspec-core 2.0.0.beta.20, but your Gemfile requires rspec-core 2.0.0.beta.18. Consider using bundle exec. (Gem::LoadError)
        from /home/arun/.rvm/gems/ruby-1.9.2-p0/gems/bundler-1.0.0/lib/bundler/spec_set.rb:12:in `block in each'
        from /home/arun/.rvm/gems/ruby-1.9.2-p0/gems/bundler-1.0.0/lib/bundler/spec_set.rb:12:in `each'
        from /home/arun/.rvm/gems/ruby-1.9.2-p0/gems/bundler-1.0.0/lib/bundler/spec_set.rb:12:in `each'
        from /home/arun/.rvm/gems/ruby-1.9.2-p0/gems/bundler-1.0.0/lib/bundler/runtime.rb:17:in `setup'
        from /home/arun/.rvm/gems/ruby-1.9.2-p0/gems/bundler-1.0.0/lib/bundler.rb:100:in `setup'
        from /home/arun/Project/Rails/rails3/sample_app/config/boot.rb:8:in `<top (required)>'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from /home/arun/Project/Rails/rails3/sample_app/config/application.rb:1:in `<top (required)>'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from /home/arun/Project/Rails/rails3/sample_app/config/environment.rb:2:in `<top (required)>'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from /home/arun/Project/Rails/rails3/sample_app/spec/spec_helper.rb:3:in `<top (required)>'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from /home/arun/Project/Rails/rails3/sample_app/spec/requests/layout_links_spec.rb:1:in `<top (required)>'
        from /home/arun/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.0.0.beta.20/lib/rspec/core/configuration.rb:302:in `load'
        from /home/arun/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.0.0.beta.20/lib/rspec/core/configuration.rb:302:in `block in load_spec_files'
        from /home/arun/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.0.0.beta.20/lib/rspec/core/configuration.rb:302:in `map'
        from /home/arun/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.0.0.beta.20/lib/rspec/core/configuration.rb:302:in `load_spec_files'
        from /home/arun/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.0.0.beta.20/lib/rspec/core/command_line.rb:18:in `run'
        from /home/arun/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.0.0.beta.20/lib/rspec/core/runner.rb:46:in `run_in_process'
        from /home/arun/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.0.0.beta.20/lib/rspec/core/runner.rb:37:in `run'
        from /home/arun/.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.0.0.beta.20/lib/rspec/core/runner.rb:10:in `block in autorun'

Ответы [ 7 ]

2 голосов
/ 12 ноября 2010

У меня такая же проблема. В конце главы 5 все тесты из / spec / запросы / layout_links_spec.rb завершаются с той же ошибкой (тесты контроллера работают нормально):

Failure/Error: Unable to find matching line from backtrace 
stack level too deep
# C:/Ruby192/lib/ruby/1.9.1/forwardable.rb:185

После небольшого устранения неполадок в файле / spec / запросы / layout_links_spec.rb выясняется, что использование response в этом контексте и вызывает проблему. Например, нет ошибки, если файл выглядит следующим образом:

require 'spec_helper'

describe "LayoutLinks" do

    it "should run tests properly from this file" do
        get '/'
    end
end

Но файл, скопированный из учебника, гласит:

require 'spec_helper'

describe "LayoutLinks" do

  it "should have a Home page at '/'" do
    get '/'
    response.should have_selector('title', :content => "Home")
  end

  it "should have a Contact page at '/contact'" do
    get '/contact'
    response.should have_selector('title', :content => "Contact")
  end

  it "should have an About page at '/about'" do
    get '/about'
    response.should have_selector('title', :content => "About")
  end

  it "should have a Help page at '/help'" do
    get '/help'
    response.should have_selector('title', :content => "Help")
  end
end

Ошибка выдается, как только response называется

Это на Windows 7 (я пытался настроить Ruby, Git, Vim и другие инструменты разработки на системном уровне, а не в Cygwin).

Rspeicher - после шагов RailsTutorial.org файл / config / rout.rb выглядит примерно так:

SampleApp::Application.routes.draw do
 get "users/new"

 match '/signup', :to => 'users#new'

 match '/contact', :to => 'pages#contact'
 match '/about', :to => 'pages#about'
 match '/help', :to => 'pages#help'

 root :to => 'pages#home'
end

Как говорит Арун, все это работает так, как задумано в браузере, поэтому проблема, кажется, где-то внутри rspec или ruby. Я полагаю, это не проблема, если ruby ​​установлен под Cygwin. Я надеялся, что мне не придется возвращаться к чистой среде Cygwin, тем более что мои файлы webroot и проекта уже управляются вне виртуальной структуры папок Unix Cygwin.

1 голос
/ 23 октября 2010

Rspec отлично работал для 11 глав учебника Хартла. Но каким-то образом я испортил свой gemfille, и у меня возникла та же проблема с rspec «слишком глубокие уровни стека», и я не смог ее решить путем «установки пакета». Так я взбесился и сделал

windows> gem uninstall rspec rspec-rails rspec-expectations rspec-mock rspec-core

(все версии). «список драгоценных камней» показал, что они действительно исчезли. Затем я выполнил

> bundle install
...
Using rspec-core (2.0.0.beta.22)
Using rspec-expectations (2.0.0.beta.22)
Using rspec-mocks (2.0.0.beta.22)
Using rspec (2.0.0.beta.22)
Using rspec-rails (2.0.0.beta.22)
...

Что есть в моем Gemfile. Тем не менее, 'gem list -d rspec' по-прежнему показывает установленные гемы -no- rspec или rspec-xxx и проблемы с rspec-core ...

> rails g rspec:install       *#for good measure*
...
> rspec -v
C:/Ruby192/lib/ruby/1.9.1/rubygems.rb:762:in `report_activate_error': Could not 
find RubyGem rspec-core (>= 0) (Gem::LoadError)

Но «список комплектов» говорит, что он установлен. Так как мне заставить работать rspec снова?


UPDATE

Я исправил проблему, но сначала мои самые скромные извинения Арун Кумар за то, что он задал ему вопрос и встал между ним и ответом. Я думал, что моя проблема была похожа, и что мой «ответ» будет в конце.

Прежде всего, я должен был сделать

> gem install rspec -v 2.0.0.beta.22
> gem install rspec-rails -v 2.0.0.beta.22

вместо того, чтобы ожидать, что упаковщик сделает это. пакет не кажется надежным здесь. Это заставило мои вызовы rspec работать снова, но мне все еще приходилось иметь дело с «слишком большими уровнями стека». Это было исправлено обновлением rspec и rspec-rails до версии 2.0.1 (от David Chelimski: http://www.ruby -forum.com / topic / 282245 ). Снова изменить мой Gemfile и вызвать bundle-install не получилось. Мне пришлось удалить все пять гемов rspec-xxx, как указано выше, и вручную сделать

> gem install rspec -v 2.0.1
> gem install rspec-rails -v 2.0.1

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

0 голосов
/ 04 июля 2013

Вы также можете попробовать запустить

bundle exec rake db:test:prepare
0 голосов
/ 14 ноября 2010

Это определенно не имеет ничего общего с Windows или любым окружением, которое у вас там есть.Я испытываю то же самое с моим Mac.

мой routes.rb файл (из того же учебника) выглядит так:

SampleApp::Application.routes.draw do

  resources :users

  match '/signup', :to => 'users#new'
  match '/contact', :to => 'pages#contact'
  match '/about', :to => 'pages#about'
  match '/help', :to => 'pages#help'

end
0 голосов
/ 29 сентября 2010

Вам нужно удалить один из драгоценных камней с помощью утилиты удаления gem:

$ gem uninstall rspec-core -v 2.0.0.beta.20

Вы также можете использовать список камней для просмотракакие версии драгоценных камней вы установили.

0 голосов
/ 14 сентября 2010

Я снова запустил "bundle install", и когда я смотрю на Gemfile и Gemfile.lock, я нахожу нужные гемы в комплекте, использую ли я 2.0.0.beta.18 или 2.0.0.beta.20.

rout.rb отображает / о некоторых конкретных действиях, принадлежащих конкретному контроллеру. Я также получаю правильную страницу, когда захожу на страницу в своем браузере; поэтому я не думаю, что это может быть проблемой. (К сожалению, у меня сейчас нет с собой кода, и я не могу вставить его здесь)

Ниже приведена ошибка, которую я не могу понять

arun@ubuntu-world:~/Project/Rails/rails3/sample_app$ rspec spec/
/home/arun/.rvm/gems/ruby-1.9.2-p0/gems/bundler-1.0.0/lib/bundler/runtime.rb:27:in `block in setup': You have already activated rspec-core 2.0.0.beta.20, but your Gemfile requires rspec-core 2.0.0.beta.18. Consider using bundle exec. (Gem::LoadError)

Я знаю, что такое bundle exec , не говоря уже о том, как его использовать ...

- Арун

0 голосов
/ 13 сентября 2010

Вторая ошибка должна быть исправлена ​​повторным запуском bundle install всякий раз, когда вы меняете свой Gemfile.

Что касается первой ошибки, не могли бы вы опубликовать строки из файла rout.rb, где вы определяете маршрут '/ about'?

...