Я читаю "Учебник по Ruby on Rails3", и автотест у меня работал нормально.Затем я обновил несколько драгоценных камней в своем gemfile (после создания модели User в начале главы 6 я дважды проверил что-то в онлайн-версии книги и заметил более свежие версии gem, указанные в Gemfile).Теперь автотест не будет работать вообще - он просто говорит, что не может запускать какие-либо тесты.
Я изменил все версии gem обратно на версии, которые я первоначально указал в Gemfile (то есть те, которые указаны впечатать книгу), но я не могу заставить работать автотест больше.Вот ошибка, которую я получаю:
$ autotest
loading autotest/rails_rspec2
--------------------------------------------------------------------------------
/Users/Me/.rvm/rubies/ruby-1.9.2-p180/bin/ruby -rrubygems -S /Users/Me/.rvm/gems/ruby- 1.9.2-p180@rails3tutorial/gems/rspec-core-2.6.4/bin/rspec --tty '/Users/Me/rails_projects/sample_app/spec/controllers/pages_controller_spec.rb' '/Users/Me/rails_projects/sample_app/spec/controllers/users_controller_spec.rb' '/Users/Me/rails_projects/sample_app/spec/models/user_spec.rb' '/Users/Me/rails_projects/sample_app/spec/requests/layout_links_spec.rb'
Exception encountered: #<OptionParser::InvalidOption: --tty>
backtrace:
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/rspec-core-2.0.1/lib/rspec/core/option_parser.rb:18:in `parse!'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/rspec-core-2.0.1/lib/rspec/core/option_parser.rb:4:in `parse!'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/rspec-core-2.0.1/lib/rspec/core/configuration_options.rb:64:in `parse_command_line_options'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/rspec-core-2.0.1/lib/rspec/core/configuration_options.rb:46:in `parse_options'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/rspec-core-2.0.1/lib/rspec/core/command_line.rb:7:in `initialize'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/rspec-core-2.0.1/lib/rspec/monkey/spork/test_framework/rspec.rb:4:in `new'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/rspec-core-2.0.1/lib/rspec/monkey/spork/test_framework/rspec.rb:4:in `run_tests'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.8.4/lib/spork/run_strategy/forking.rb:13:in `block in run'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.8.4/lib/spork/forker.rb:21:in `block in initialize'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.8.4/lib/spork/forker.rb:18:in `fork'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.8.4/lib/spork/forker.rb:18:in `initialize'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.8.4/lib/spork/run_strategy/forking.rb:9:in `new'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.8.4/lib/spork/run_strategy/forking.rb:9:in `run'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.8.4/lib/spork/server.rb:47:in `run'
/Users/Me/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/drb/drb.rb:1558:in `perform_without_block'
/Users/Me/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/drb/drb.rb:1518:in `perform'
/Users/Me/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/drb/drb.rb:1592:in `block (2 levels) in main_loop'
/Users/Me/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/drb/drb.rb:1588:in `loop'
/Users/Me/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/drb/drb.rb:1588:in `block in main_loop'
Я остановил и перезапустил сервер spork и rails, но автотест все равно не будет работать для меня.
Это ошибка, которую я получаю сболее новые версии gem в Gemfile:
$ autotest
loading autotest/rails_rspec2
--------------------------------------------------------------------------------
/Users/Me/.rvm/rubies/ruby-1.9.2-p180/bin/ruby -rrubygems -S /Users/Me/.rvm/gems/ruby- 1.9.2-p180@rails3tutorial/gems/rspec-core-2.6.4/bin/rspec --tty '/Users/Me/rails_projects/sample_app/spec/controllers/pages_controller_spec.rb' '/Users/Me/rails_projects/sample_app/spec/controllers/users_controller_spec.rb' '/Users/Me/rails_projects/sample_app/spec/models/user_spec.rb' '/Users/Me/rails_projects/sample_app/spec/requests/layout_links_spec.rb'
Exception encountered: #<NameError: uninitialized constant PagesController>
backtrace:
/Users/Me/rails_projects/sample_app/spec/controllers/pages_controller_spec.rb:3:in `<top (required)>'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/rspec-core- 2.6.4/lib/rspec/core/configuration.rb:419:in `block in load_spec_files'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/rspec-core-2.6.4/lib/rspec/core/configuration.rb:419:in `map'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/rspec-core-2.6.4/lib/rspec/core/configuration.rb:419:in `load_spec_files'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:18:in `run'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/rspec-core-2.6.4/lib/rspec/monkey/spork/test_framework/rspec.rb:5:in `run_tests'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.9.0.rc8/lib/spork/run_strategy/forking.rb:13:in `block in run'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.9.0.rc8/lib/spork/forker.rb:21:in `block in initialize'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.9.0.rc8/lib/spork/forker.rb:18:in `fork'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.9.0.rc8/lib/spork/forker.rb:18:in `initialize'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.9.0.rc8/lib/spork/run_strategy/forking.rb:9:in `new'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.9.0.rc8/lib/spork/run_strategy/forking.rb:9:in `run'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.9.0.rc8/lib/spork/server.rb:48:in `run'
/Users/Me/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/drb/drb.rb:1558:in `perform_without_block'
/Users/Me/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/drb/drb.rb:1518:in `perform'
/Users/Me/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/drb/drb.rb:1592:in `block (2 levels) in main_loop'
/Users/Me/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/drb/drb.rb:1588:in `loop'
/Users/Me/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/drb/drb.rb:1588:in `block in main_loop'
Спасибо за все ответы:
Я даже не уверен, откуда взялся rspec-core-2.6.4 (я вижу, что он упоминалсяв сообщении об ошибке).Две версии rspec, которые я пробовал в своем Gemfile: rspec 2.0.1 и rspec-rails 2.6.2.Следуя советам, вот что я попробовал:
Gemfile (это оригинальные версии книги, которые раньше работали с автотестами)
source 'http://rubygems.org'
gem 'rails', '3.0.9' #different in book
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
#***updated gem versions from online book****
#gem 'sqlite3', '1.3.3'
gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'
group :development do
#gem 'rspec-rails', '2.6.1'
gem 'rspec-rails', '2.0.1'
gem 'annotate', '2.4.0' #different in book
end
group :test do
#gem 'rspec-rails', '2.6.1'
gem 'rspec', '2.0.1'
gem 'webrat', '0.7.1'
#gem 'spork', '0.9.0.rc8'
gem 'spork', '0.8.4'
end
sample_app Me$ bundle install
Using rake (0.9.2)
Using abstract (1.0.0)
Using activesupport (3.0.9)
Using builder (2.1.2)
Using i18n (0.5.0)
Using activemodel (3.0.9)
Using erubis (2.6.6)
Using rack (1.2.3)
Using rack-mount (0.6.14)
Using rack-test (0.5.7)
Using tzinfo (0.3.29)
Using actionpack (3.0.9)
Using mime-types (1.16)
Using polyglot (0.3.1)
Using treetop (1.4.9)
Using mail (2.2.19)
Using actionmailer (3.0.9)
Using arel (2.0.10)
Using activerecord (3.0.9)
Using activeresource (3.0.9)
Using annotate (2.4.0)
Using bundler (1.0.15)
Using diff-lcs (1.1.2)
Using nokogiri (1.5.0)
Using rdoc (3.8)
Using thor (0.14.6)
Using railties (3.0.9)
Using rails (3.0.9)
Using rspec-core (2.0.1)
Using rspec-expectations (2.0.1)
Using rspec-mocks (2.0.1)
Using rspec (2.0.1)
Using rspec-rails (2.0.1)
Using spork (0.8.4)
Using sqlite3-ruby (1.2.5)
Using webrat (0.7.1)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
sample_app Me$ bundle update
Fetching source index for http://rubygems.org/
Using rake (0.9.2)
Using abstract (1.0.0)
Using activesupport (3.0.9)
Using builder (2.1.2)
Using i18n (0.5.0)
Using activemodel (3.0.9)
Using erubis (2.6.6)
Using rack (1.2.3)
Using rack-mount (0.6.14)
Using rack-test (0.5.7)
Using tzinfo (0.3.29)
Using actionpack (3.0.9)
Using mime-types (1.16)
Using polyglot (0.3.1)
Using treetop (1.4.9)
Using mail (2.2.19)
Using actionmailer (3.0.9)
Using arel (2.0.10)
Using activerecord (3.0.9)
Using activeresource (3.0.9)
Using annotate (2.4.0)
Using bundler (1.0.15)
Using diff-lcs (1.1.2)
Using nokogiri (1.5.0)
Using rdoc (3.8)
Using thor (0.14.6)
Using railties (3.0.9)
Using rails (3.0.9)
Using rspec-core (2.0.1)
Using rspec-expectations (2.0.1)
Using rspec-mocks (2.0.1)
Using rspec (2.0.1)
Using rspec-rails (2.0.1)
Using spork (0.8.4)
Using sqlite3-ruby (1.2.5)
Using webrat (0.7.1)
Your bundle is updated! Use `bundle show [gemname]` to see where a bundled gem is installed.
sample_app Me$ bundle show spork
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.8.4
sample_app Me$ bundle exec spork
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork- 0.9.0.rc8/lib/spork/test_framework/cucumber.rb:2: warning: already initialized constant DEFAULT_PORT
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork- 0.9.0.rc8/lib/spork/test_framework/cucumber.rb:3: warning: already initialized constant HELPER_FILE
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.9.0.rc8/lib/spork/test_framework/rspec.rb:2: warning: already initialized constant DEFAULT_PORT
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.9.0.rc8/lib/spork/test_framework/rspec.rb:3: warning: already initialized constant HELPER_FILE
Using RSpec
Loading Spork.prefork block...
Spork is ready and listening on 8989!
Но я когдаЯ открываю новое окно терминала и выполняю:
sample_app Me$ autotest
Я получаю ту же ошибку --tty.Команда:
sample_app Me$ bundle exec autotest
выдает Gem :: LoadError, и я не думаю, что она должна работать, так как автотест отсутствует в моем Gemfile.
При использовании я получаю другую ошибкуGemfile с обновленными версиями gem:
source 'http://rubygems.org'
gem 'rails', '3.0.9'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
#***updated gem versions from online book****
gem 'sqlite3', '1.3.3'
#gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'
group :development do
gem 'rspec-rails', '2.6.1'
#gem 'rspec-rails', '2.0.1'
gem 'annotate', '2.4.0'
end
group :test do
gem 'rspec-rails', '2.6.1'
#gem 'rspec', '2.0.1'
gem 'webrat', '0.7.1'
gem 'spork', '0.9.0.rc8'
#gem 'spork', '0.8.4'
end
sample_app Me$ bundle install
Using rake (0.9.2)
Using abstract (1.0.0)
Using activesupport (3.0.9)
Using builder (2.1.2)
Using i18n (0.5.0)
Using activemodel (3.0.9)
Using erubis (2.6.6)
Using rack (1.2.3)
Using rack-mount (0.6.14)
Using rack-test (0.5.7)
Using tzinfo (0.3.29)
Using actionpack (3.0.9)
Using mime-types (1.16)
Using polyglot (0.3.1)
Using treetop (1.4.9)
Using mail (2.2.19)
Using actionmailer (3.0.9)
Using arel (2.0.10)
Using activerecord (3.0.9)
Using activeresource (3.0.9)
Using annotate (2.4.0)
Using bundler (1.0.15)
Using diff-lcs (1.1.2)
Using nokogiri (1.5.0)
Using rdoc (3.8)
Using thor (0.14.6)
Using railties (3.0.9)
Using rails (3.0.9)
Using rspec-core (2.6.4)
Using rspec-expectations (2.6.0)
Using rspec-mocks (2.6.0)
Using rspec (2.6.0)
Using rspec-rails (2.6.1)
Using spork (0.9.0.rc8)
Using sqlite3 (1.3.3)
Using webrat (0.7.1)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
-
sample_app Me$ bundle update
Fetching source index for http://rubygems.org/
Using rake (0.9.2)
Using abstract (1.0.0)
Using activesupport (3.0.9)
Using builder (2.1.2)
Using i18n (0.5.0)
Using activemodel (3.0.9)
Using erubis (2.6.6)
Using rack (1.2.3)
Using rack-mount (0.6.14)
Using rack-test (0.5.7)
Using tzinfo (0.3.29)
Using actionpack (3.0.9)
Using mime-types (1.16)
Using polyglot (0.3.1)
Using treetop (1.4.9)
Using mail (2.2.19)
Using actionmailer (3.0.9)
Using arel (2.0.10)
Using activerecord (3.0.9)
Using activeresource (3.0.9)
Using annotate (2.4.0)
Using bundler (1.0.15)
Using diff-lcs (1.1.2)
Using nokogiri (1.5.0)
Using rdoc (3.8)
Using thor (0.14.6)
Using railties (3.0.9)
Using rails (3.0.9)
Using rspec-core (2.6.4)
Using rspec-expectations (2.6.0)
Using rspec-mocks (2.6.0)
Using rspec (2.6.0)
Using rspec-rails (2.6.1)
Using spork (0.9.0.rc8)
Using sqlite3 (1.3.3)
Using webrat (0.7.1)
Your bundle is updated! Use `bundle show [gemname]` to see where a bundled gem is installed.
sample_app Me$ bundle show spork
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.9.0.rc8
sample_app Me$ bundle exec spork
Using RSpec
Preloading Rails environment
Loading Spork.prefork block...
Spork is ready and listening on 8989!
-
sample_app Me$ autotest
loading autotest/rails_rspec2
--------------------------------------------------------------------------------
/Users/Me/.rvm/rubies/ruby-1.9.2-p180/bin/ruby -rrubygems -S /Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/rspec-core-2.6.4/bin/rspec --tty '/Users/Me/rails_projects/sample_app/spec/controllers/pages_controller_spec.rb' '/Users/Me/rails_projects/sample_app/spec/controllers/users_controller_spec.rb' '/Users/Me/rails_projects/sample_app/spec/models/user_spec.rb' '/Users/Me/rails_projects/sample_app/spec/requests/layout_links_spec.rb'
Exception encountered: #<NameError: uninitialized constant PagesController>
backtrace:
/Users/Me/rails_projects/sample_app/spec/controllers/pages_controller_spec.rb:3:in `<top (required)>'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/rspec-core-2.6.4/lib/rspec/core/configuration.rb:419:in `block in load_spec_files'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/rspec-core-2.6.4/lib/rspec/core/configuration.rb:419:in `map'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/rspec-core-2.6.4/lib/rspec/core/configuration.rb:419:in `load_spec_files'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:18:in `run'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/rspec-core-2.6.4/lib/rspec/monkey/spork/test_framework/rspec.rb:5:in `run_tests'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.9.0.rc8/lib/spork/run_strategy/forking.rb:13:in `block in run'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.9.0.rc8/lib/spork/forker.rb:21:in `block in initialize'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.9.0.rc8/lib/spork/forker.rb:18:in `fork'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.9.0.rc8/lib/spork/forker.rb:18:in `initialize'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.9.0.rc8/lib/spork/run_strategy/forking.rb:9:in `new'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.9.0.rc8/lib/spork/run_strategy/forking.rb:9:in `run'
/Users/Me/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/spork-0.9.0.rc8/lib/spork/server.rb:48:in `run'
/Users/Me/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/drb/drb.rb:1558:in `perform_without_block'
/Users/Me/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/drb/drb.rb:1518:in `perform'
/Users/Me/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/drb/drb.rb:1592:in `block (2 levels) in main_loop'
/Users/Me/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/drb/drb.rb:1588:in `loop'
/Users/Me/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/drb/drb.rb:1588:in `block in main_loop'
И это появляется в окне Spork:
Running tests with args ["--color", "--tty", "/Users/Me/rails_projects/sample_app/spec/controllers/pages_controller_spec.rb", "/Users/Me/rails_projects/sample_app/spec/controllers/users_controller_spec.rb", "/Users/Me/rails_projects/sample_app/spec/models/user_spec.rb", "/Users/Me/rails_projects/sample_app/spec/requests/layout_links_spec.rb"]...
Done.
Я снова заработал на автотесте, убрав весь набор rails3tutorial gemset.Подробная информация об этом приведена на стр. 90, глава 3.
1) After doing:
$ gem install rails
I started at the beginning of Chapter 3 using the Gemfile with the earlier gem versions(posted above). Followed by:
2) $ bundle install
3) $ rails generate rspec:install
4) Then I continued with the steps on p. 85, Chapter 3:
$ gem install autotest -v 4.3.2 (don't use sudo with rvm!)
$ gem install autotest
(Growl is already installed)
$gem install autotest-fsevent -v 0.2.2
$gem install autotest-growl -v 0.2.4
5) Then before doing:
$ spork --bootstrap
I copied and pasted spec/spec_helper.rb into a text editor, then I deleted spec/spec_helper.rb:
$ rm spec/spec_helper.rb
then:
$ spork --bootstrap
Then I copied and pasted the text in the text editor into the newly created spec/spec_helper.rb
6) $ bundle exec spork
7) Then I opened up a new Terminal window, and did:
$ autotest
Поскольку я мазохист, я подумал, что попробую обновить Gemfile до более новых версий, а после выполнения 'Установка пакета 'и' обновление пакета ', я получил точно такую же ошибку PagesController, как и раньше.И снова, когда я изменил версии gem обратно на более ранние версии в моем Gemfile, и я выполнил «установку комплекта» и «обновление комплекта», я получил ошибку -tty.Я собираюсь снова взорвать набор гемов rails3tutorial, и на этот раз я начну с более новых версий в моем Gemfile, чтобы посмотреть, работает ли он.
Я снова взломал набор гемов rails3tutorial, и на этот раз я начал сGemfile, содержащий более новые версии драгоценных камней, перечисленных в онлайн-книге, И:
1) Я установил более новые версии различных самоустанавливающихся драгоценных камней, указанных в онлайн-версии книги.
И
2) Я изменил файл spec / spec_helper.rb, который использует spork, в соответствии с онлайн-версией книги.Онлайновый файл spec / spec_helper.rb отличается от файла spec / spec_helper.rb печатной книги.
... и теперь автотест снова работает.
Таким образом, переключение на новые версии драгоценных камней, указанные в онлайн-книге, вызвало проблемы, поскольку более новые версии драгоценных камней не работают с файлом spec / spec_helper.rb печатной книги, который я использовал.Однако это не объясняет, почему после того, как я изменил свой Gemfile, чтобы снова использовать более старые версии gem, у меня все еще были ошибки.Насколько я могу судить, существует проблема с использованием bundler для установки разных версий gem.Ядерное уничтожение всего гемсета решило проблему, но вряд ли это хорошее решение.
(osx 10.6.7)