#ruby-on-rails #nameerror
#ruby-on-rails #ошибка имени
Вопрос:
Имя моего приложения — newsample_app . Я слежу за обучающим скринкастом railstutorial для обновления до rails 3.1. Вот сообщение об ошибке, которое я получаю при копировании файлов из моего старого «sample_app» в «newsample_app» и попытке запустить rspec:
спецификация rspec / controllers / pages_controller_spec.rb /Users/ topica / rails_projects /newsample_app / config/routes.rub:1: в `: неинициализированная константа NewSampleApp (ошибка имени)
Увидев это, я изменил свой файл routes.rb из моего исходного sample_app на «SampleApp::Application.routes.нарисуйте do» для этого: «NewSampleApp::Application.routes.draw do «но я все еще получаю ошибку. Есть идеи?
К вашему сведению, полная ошибка:
Topicas-MacBook-Pro:newsample_app topica$ rspec spec/controllers/pages_controller_spec.rb
/Users/topica/rails_projects/newsample_app/config/routes.rb:1:in `<top (required)>': uninitialized constant NewSampleApp (NameError)
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/railties-3.1.1/lib/rails/application/routes_reloader.rb:29:in `block in load_paths'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/railties-3.1.1/lib/rails/application/routes_reloader.rb:29:in `each'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/railties-3.1.1/lib/rails/application/routes_reloader.rb:29:in `load_paths'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/railties-3.1.1/lib/rails/application/routes_reloader.rb:13:in `reload!'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/railties-3.1.1/lib/rails/application/routes_reloader.rb:7:in `block in initialize'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/activesupport-3.1.1/lib/active_support/file_update_checker.rb:32:in `call'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/activesupport-3.1.1/lib/active_support/file_update_checker.rb:32:in `execute_if_updated'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/railties-3.1.1/lib/rails/application/finisher.rb:63:in `block (2 levels) in <module:Finisher>'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/railties-3.1.1/lib/rails/application/finisher.rb:64:in `call'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/railties-3.1.1/lib/rails/application/finisher.rb:64:in `block in <module:Finisher>'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/railties-3.1.1/lib/rails/initializable.rb:30:in `instance_exec'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/railties-3.1.1/lib/rails/initializable.rb:30:in `run'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/railties-3.1.1/lib/rails/initializable.rb:55:in `block in run_initializers'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/railties-3.1.1/lib/rails/initializable.rb:54:in `each'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/railties-3.1.1/lib/rails/initializable.rb:54:in `run_initializers'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/railties-3.1.1/lib/rails/application.rb:96:in `initialize!'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/railties-3.1.1/lib/rails/railtie/configurable.rb:30:in `method_missing'
from /Users/topica/rails_projects/newsample_app/config/environment.rb:5:in `<top (required)>'
from /Users/topica/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /Users/topica/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /Users/topica/rails_projects/newsample_app/spec/spec_helper.rb:3:in `<top (required)>'
from /Users/topica/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /Users/topica/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /Users/topica/rails_projects/newsample_app/spec/controllers/pages_controller_spec.rb:1:in `<top (required)>'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/rspec-core-2.6.4/lib/rspec/core/configuration.rb:419:in `load'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/rspec-core-2.6.4/lib/rspec/core/configuration.rb:419:in `block in load_spec_files'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/rspec-core-2.6.4/lib/rspec/core/configuration.rb:419:in `map'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/rspec-core-2.6.4/lib/rspec/core/configuration.rb:419:in `load_spec_files'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/rspec-core-2.6.4/lib/rspec/core/command_line.rb:18:in `run'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/rspec-core-2.6.4/lib/rspec/core/runner.rb:80:in `run_in_process'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/rspec-core-2.6.4/lib/rspec/core/runner.rb:69:in `run'
from /Users/topica/.rvm/gems/ruby-1.9.2-p290@rails3_1tutorial/gems/rspec-core-2.6.4/lib/rspec/core/runner.rb:11:in `block in autorun'
Ответ №1:
Вы, вероятно, хотите, чтобы это соответствовало тому же, что и в config / application.rb, если это действительно newsample_app, то, вероятно, NewsampleApp, а не NewSampleApp
Комментарии:
1. О боже. Оба верны. В следующий раз я сразу отправлюсь в irb за .camelize . Спасибо за вашу помощь, больше не повторю эту ошибку 🙂
2. @house9 Я думаю, что это было близко. Я поставил вам 1 за усилия.
Ответ №2:
Похоже на проблему case.
> "newsample_app".camelize
=> "NewsampleApp"
Обратите внимание на строчную букву «s».