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".

Теперь добавь, передай и протолкни это к героку. Он должен работать!!!

Другие вопросы по тегам