Rails - NoMethodError: неопределенный метод `configure'для # <FirstApp
Я работаю над учебником, я пытаюсь выполнить шаг 1.4.2.
Я пробовал несколько вещей, но ни одна из них не работала, когда я искал в Интернете "NoMethodError: неопределенный метод`configure'". Я просмотрел все ссылки и несколько похожих поисков, которые возникли, но ни один не помог.
В книге говорится, что сделать это:
# This should only be used if your Heroku deploy fails without it.
$ rake assets:precompile
$ git add .
$ git commit -m "Add precompiled assets for Heroku"
но это не сработало или я не получил его на работу
Вот реальная проблема, когда я делаю
$ git push heroku master
это результат.
james@ubuntu:~/rails_projects/first_app$ git push heroku master
Initializing repository, done.
Counting objects: 84, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (73/73), done.
Writing objects: 100% (84/84), 17.47 KiB, done.
Total 84 (delta 16), reused 0 (delta 0)
-----> Ruby app detected
-----> Compiling Ruby/Rails
-----> Using Ruby version: ruby-2.0.0
-----> Installing dependencies using 1.5.2
Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
Fetching gem metadata from https://rubygems.org/..........
Fetching additional metadata from https://rubygems.org/..
Installing minitest (4.7.5)
Installing multi_json (1.10.1)
Installing rake (10.3.2)
Installing i18n (0.6.9)
Installing thread_safe (0.3.3)
Installing builder (3.1.4)
Installing erubis (2.7.0)
Installing tzinfo (0.3.39)
Installing rack (1.5.2)
Installing mime-types (1.25.1)
Installing polyglot (0.3.4)
Installing activerecord-deprecated_finders (1.0.3)
Installing arel (4.0.2)
Installing coffee-script-source (1.7.0)
Installing hike (1.2.3)
Installing execjs (2.0.2)
Using bundler (1.5.2)
Installing thor (0.19.1)
Installing rails_serve_static_assets (0.0.2)
Installing tilt (1.4.1)
Installing rails_stdout_logging (0.0.3)
Installing sass (3.2.19)
Installing activesupport (4.0.5)
Installing rack-test (0.6.2)
Installing treetop (1.4.15)
Installing json (1.8.1)
Installing coffee-script (2.2.0)
Installing rails_12factor (0.0.2)
Installing sprockets (2.11.0)
Installing activemodel (4.0.5)
Installing jbuilder (1.0.2)
Installing rdoc (3.12.2)
Installing actionpack (4.0.5)
Installing uglifier (2.5.0)
Installing mail (2.5.4)
Installing sdoc (0.3.20)
Installing sprockets-rails (2.0.1)
Installing activerecord (4.0.5)
Installing railties (4.0.5)
Installing actionmailer (4.0.5)
Installing coffee-rails (4.0.1)
Installing jquery-rails (3.0.4)
Installing sass-rails (4.0.3)
Installing turbolinks (1.1.1)
Installing rails (4.0.5)
Installing pg (0.15.1)
Your bundle is complete!
Gems in the groups development and test were not installed.
It was installed into ./vendor/bundle
Post-install message from rdoc:
Depending on your version of ruby, you may need to install ruby rdoc/ri data:
<= 1.8.6 : unsupported
= 1.8.7 : gem install rdoc-data; rdoc-data --install
= 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!
Bundle completed (36.13s)
Cleaning up the bundler cache.
-----> Writing config/database.yml to read from DATABASE_URL
-----> Preparing app for Rails asset pipeline
Running: rake assets:precompile
rake aborted!
NoMethodError: undefined method `configure' for # <FirstApp::Application:0x007f74b12b4cb0>
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/config/environments/production.rb:1:in `<top (required)>'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.5/lib/active_support/dependencies.rb:229:in `require'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.5/lib/active_support/dependencies.rb:229:in `block in require'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.5/lib/active_support/dependencies.rb:214:in `load_dependency'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.5/lib/active_support/dependencies.rb:229:in `require'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/railties-4.0.5/lib/rails/engine.rb:591:in `block (2 levels) in <class:Engine>'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/railties-4.0.5/lib/rails/engine.rb:590:in `each'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/railties-4.0.5/lib/rails/engine.rb:590:in `block in <class:Engine>'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/railties-4.0.5/lib/rails/initializable.rb:30:in `instance_exec'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/railties-4.0.5/lib/rails/initializable.rb:30:in `run'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/railties-4.0.5/lib/rails/initializable.rb:55:in `block in run_initializers'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/railties-4.0.5/lib/rails/initializable.rb:44:in `each'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/railties-4.0.5/lib/rails/initializable.rb:44:in `tsort_each_child'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/railties-4.0.5/lib/rails/initializable.rb:54:in `run_initializers'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/railties-4.0.5/lib/rails/application.rb:215:in `initialize!'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/config/environment.rb:5:in `<top (required)>'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.5/lib/active_support/dependencies.rb:229:in `require'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.5/lib/active_support/dependencies.rb:229:in `block in require'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.5/lib/active_support/dependencies.rb:214:in `load_dependency'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.5/lib/active_support/dependencies.rb:229:in `require'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/railties-4.0.5/lib/rails/application.rb:189:in `require_environment!'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/railties-4.0.5/lib/rails/application.rb:250:in `block in run_tasks_blocks'
/tmp/build_be175c11-67be-427d-9e11-526ec2b315c1/vendor/bundle/ruby/2.0.0/gems/sprockets-rails-2.0.1/lib/sprockets/rails/task.rb:54:in `block (2 levels) in define'
Tasks: TOP => environment
(See full trace by running task with --trace)
!
! Precompiling assets failed.
!
! Push rejected, failed to compile Ruby app
To git@heroku.com:shielded-mountain-9814.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:shielded-mountain-9814.git'
3 ответа
У меня была такая же проблема совсем недавно, когда я настраивал чей-то компьютер для Учебника по Rails после переформатирования его для них. Я использовал исполняемый файл RailsInstaller.com для Windows, чтобы установить Rails в Windows 7, но я представляю, что реальная причина и решение этой ошибки одинаковы в Linux/OS X.
Проблема в моем случае заключалась в том, что текущий исполняемый файл RailsInstaller устанавливает Rails 4.1.4 (если есть способ выбрать, какую версию во время установки я не видел). Учебник RailsTutorial.org предназначен для работы с Rails 4.0.8, по крайней мере, до тех пор, пока г-н Хартл не обновит его.
Обновление вашего Gemfile в каталоге вашего проекта для использования Rails 4.0.8 после создания проекта first_app с rails new first_app
не решит проблему, потому что проблема возникает во время генерации файла app/config/initializers/development.rb, который по умолчанию использует новейшую версию Rails, установленную в вашем локальном хранилище.
Я все еще в основном новичок в Rails, поэтому я не знаю, что изменилось или почему, но какое-то обновление между Rails 4.0.8 и Rails 4.1.4 вызвало генерацию development.rb (и production.rb) с другим синтаксисом,
Внесение изменений в первую строку этих файлов, чтобы сказать FirstApp::Application.configure.do
вместо Rails.application.configure.do
, как предлагали другие, исправит ошибку компиляции. Тем не менее, необходимость вручную менять эту строку для каждого проекта мне не подходила.
Я смог заставить его сгенерировать файл двумя способами:
1) Создайте проект rails, указав версию Rails для использования в окружении подчеркиваний. Например, rails _4.0.8_ new first_app
, Вы должны иметь установленную версию Rails, чтобы она работала, очевидно. Вы можете увидеть все версии этого драгоценного камня, которые установлены с помощью команды gem list -d rails
, Если у вас нет правильной версии, используйте gem install rails --version 4.0.8
установить его.
2) Перейдите в каталог, из которого вы будете запускать rails new
введите команду при запуске нового проекта и оттуда вручную удалите из локального репозитория gem любые версии Rails и его зависимостей выше версии 4.0.8. Для этого вы используете команду gem uninstall <gem name> --version <version number>
, Вы также можете использовать эту команду без включения параметра версии, а затем использовать gem install rails --version 4.0.8
затем, который установит Rails и соответствующую версию его зависимостей.
Это было более трудоемким, но это то, что я в итоге сделал. В моем случае, драгоценностями, для которых я сделал это, были actionmailer, actionpack, activemodel, activerecord, activesupport, rails и railties. Когда самой высокой версией для всех этих драгоценных камней была 4.0.8, при создании нового проекта по умолчанию использовался Rails 4.0.8, и был создан файл development.rb с правильным синтаксисом.
Одна вещь, которую следует упомянуть для пользователей RVM (я сам не использую ее, поскольку я работаю в Windows, поэтому я не проверял это): дважды проверьте, какая версия Rails RVM установлена для использования в корневом каталоге разработки (каталог, в котором вы будете находиться при наборе rails new
), поскольку именно эта версия будет использоваться при создании нового проекта. Даже если вы настроите RVM на использование Rails 4.0.8 один раз в папке вашего нового проекта, это не решит проблему, поскольку сами файлы все еще генерировались с той версией Rails RVM, которая используется в корневом каталоге.
Опять же, я все еще новичок в Rails, так что, надеюсь, кто-то более знающий, чем я, может объяснить, что происходит с изменениями в development/production.rb между Rails 4.0.8 и 4.1.4. Тем не менее, если вы пытаетесь настроить книгу RailsTutorial.org и сталкиваетесь с этой ошибкой, это два возможных способа ее исправить.
Я решил это, выполнив решение этой аналогичной проблемы, следуя URL.
Ошибка запуска сервера Rails: неопределенный метод 'configure'
целевой файл:
config/environments/production.rb
У меня были такие же проблемы. Вот мое исправление:
- Проверьте файлы app/config/initializers/development.rb и app/config/initializers/production.rb. Убедитесь, что изменили "Rails.application.configure do" на "FirstApp::Application.configure do".
После этого добавьте, совершите и нажмите на heroku, и вы получите еще одну ошибку. Что-то о схеме дампа. Вы можете найти объяснение здесь: Невозможно выполнить какие-либо команды в моем приложении heroku (мигрировать, консоль и т. Д.).
- Быстрое решение для этого - перейти в файл app/config/initializers/production.rb и удалить или закомментировать строку "config.dump_schema_after_migration".
Теперь добавь, передай и протолкни это к героку. Он должен работать!!!