Ошибка героя: "Не удалось обнаружить задачи рейка"
Я пытаюсь развернуть базовое приложение, и оно не работает. Используя
git push heroku master
Я получил это сообщение об ошибке:
remote: ! Could not detect rake tasks
remote: ! ensure you can run `$ bundle exec rake -P` against your app
remote: ! and using the production group of your Gemfile.
remote: ! rake aborted!
remote: ! LoadError: cannot load such file -- /tmp/build_a1cfcabff50107f84830d908386197b2/config/application
remote: ! /tmp/build_a1cfcabff50107f84830d908386197b2/Rakefile:4:in `require'
remote: ! /tmp/build_a1cfcabff50107f84830d908386197b2/Rakefile:4:in `<top (required)>'
remote: ! /tmp/build_a1cfcabff50107f84830d908386197b2/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/rake_module.rb:28:in `load'
remote: ! /tmp/build_a1cfcabff50107f84830d908386197b2/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/rake_module.rb:28:in `load_rakefile'
remote: ! /tmp/build_a1cfcabff50107f84830d908386197b2/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/application.rb:689:in `raw_load_rakefile'
remote: ! /tmp/build_a1cfcabff50107f84830d908386197b2/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/application.rb:94:in `block in load_rakefile'
remote: ! /tmp/build_a1cfcabff50107f84830d908386197b2/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/application.rb:176:in `standard_exception_handling'
remote: ! /tmp/build_a1cfcabff50107f84830d908386197b2/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/application.rb:93:in `load_rakefile'
remote: ! /tmp/build_a1cfcabff50107f84830d908386197b2/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/application.rb:77:in `block in run'
remote: ! /tmp/build_a1cfcabff50107f84830d908386197b2/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/application.rb:176:in `standard_exception_handling'
remote: ! /tmp/build_a1cfcabff50107f84830d908386197b2/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/lib/rake/application.rb:75:in `run'
remote: ! /tmp/build_a1cfcabff50107f84830d908386197b2/vendor/bundle/ruby/2.2.0/gems/rake-11.1.2/bin/rake:33:in `<top (required)>'
remote: ! vendor/bundle/bin/rake:16:in `load'
remote: ! vendor/bundle/bin/rake:16:in `<main>'
remote: !
remote: /app/tmp/buildpacks/ruby/lib/language_pack/helpers/rake_runner.rb:102:in `load_rake_tasks!': Could not detect rake tasks (LanguagePack::Helpers::RakeRunner::CannotLoadRakefileError)
bundle exec rake -P
работает нормально.
В моем Gemfile ничего особенного, я просто добавил Bootstrap:
source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.5.1'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'bootstrap-sass'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'
# Use Unicorn as the app server
# gem 'unicorn'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
#postgreeSQL for Heroku deployment
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug'
gem 'sqlite3'
end
group :development do
# Access an IRB console on exception pages or by using <%= console %> in views
gem 'web-console', '~> 2.0'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
end
group :production do
gem 'pg'
gem 'rails_12factor'
end
ruby "2.2.3"
Ну, я не понимаю, почему это происходит, так как у меня есть другой проект, который работает нормально. Я проверил все, и это все еще дает мне это сообщение.
Ответы
Ответ 1
Иногда Heroku бросает вопрос о размещении активов. Вы можете предварительно скомпилировать ресурсы и отправить их в Heroku.
RAILS_ENV=production bundle exec rake assets:precompile
Обновить:
В случае, если это не сработает, обязательно добавьте RAILS_SERVE_STATIC_FILES
env. к вашему серверу.
Сделай его enabled
или true
ни anything
:)
Потому что в Rails <5.1 production.rb
имеет
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
Heroku: Приложение → Настройки → "Показать настройки"
Образец: ![enter image description here]()
Ответ 2
"Любой сбой при компиляции ресурсов теперь приведет к сбою push-запроса. Информацию о поддержке конвейера ресурсов в Rails 5 см. на странице поддержки Ruby".
В конвейере ресурсов Rails предусмотрена задача rake "предварительно скомпилировать актив", позволяющая компилировать и кэшировать ресурсы заранее, а не компилировать при каждой загрузке приложения. Существует два способа использования конвейера активов на Heroku. Компиляция ресурсов локально. Компиляция активов во время компиляции пули.
Чтобы скомпилировать ваши ресурсы локально, запустите задачу assets: precompile локально в вашем приложении. Убедитесь, что вы используете производственную среду для создания рабочей версии ваших активов.
Прежде чем вы сможете скомпилировать свои ресурсы на Heroku, вам нужно иметь возможность скомпилировать их локально, запустите эту команду для отладки ваших ресурсов:
RAILS_ENV=production bundle exec rake assets:precompile
Это должно завершиться без ошибок. НЕ проверяйте ресурсы в git после выполнения этой команды, если используете Rails 3 согласно документации Heroku.
Публичный каталог/каталог ресурсов будет создан. Внутри этого каталога вы найдете файл manifest.yml, который включает md5sums скомпилированных ресурсов в Rails 3. В Rails 4 файл будет manifest-.json. Добавление public/assets в ваш git-репозиторий сделает его доступным для Heroku.
git add public/assets
git commit -m "vendor compiled assets"'
Теперь при нажатии выходные данные должны показать, что ваши локально скомпилированные активы были обнаружены:
-----> Preparing Rails asset pipeline
Detected manifest.yml, assuming assets were compiled locally
Дополнительную помощь можно найти здесь
И здесь
Ответ 3
используйте rbenv для установки ruby 2.6.0
rbenv install 2.6.0
Затем перейдите в каталог вашего проекта и установите версию ruby
rbenv local 2.6.0
Удалить установочные пакеты
gem uninstall bundler
Затем установите последний пакет, ниже будет установлен последний пакет
gem install bundler
Тогда тебе пора.
Ответ 4
Я предпринял все эти шаги при попытке решить ту же ошибку:
remote: -----> Installing node-v10.15.3-linux-x64
remote: -----> Detecting rake tasks
remote:
remote: !
remote: ! Could not detect rake tasks
remote: ! ensure you can run '$ bundle exec rake -P' against your app
remote: ! and using the production group of your Gemfile.
remote: ! Activating bundler (2.0.1) failed:
remote: ! Could not find 'bundler' (2.0.1) required by your /tmp/build_2e6c96ff8cd3ab115ee56c51d05c7a28/Gemfile.lock.
remote: ! To update to the latest version installed on your system, run 'bundle update --bundler'.
remote: ! To install the missing version, run 'gem install bundler:2.0.1'
remote: ! Checked in 'GEM_PATH=/tmp/build_2e6c96ff8cd3ab115ee56c51d05c7a28/vendor/bundle/ruby/2.6.0', execute 'gem env' for more information
remote: !
remote: ! To install the version of bundler this project requires, run 'gem install bundler -v '2.0.1''
remote: !
remote: /app/tmp/buildpacks/b7af5642714be4eddaa5f35e2b4c36176b839b4abcd9bfe57ee71c358d71152b4fd2cf925c5b6e6816adee359c4f0f966b663a7f8649b0729509d510091abc07/lib/language_pack/helpers/rake_runner.rb:106:in 'load_rake_tasks!': Could not detect rake tasks (LanguagePack::Helpers::RakeRunner::CannotLoadRakefileError)
Что происходило при попытке развернуть таким же образом. Я следовал всем командам в производственной среде, которые выдает сообщение об ошибке, но которые до сих пор не решили. Мои версии:
~/movie_list [master] $ ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin18]
~/movie_list [master] $ bundler version
Bundler version 2.0.1 (2019-01-04 commit d7ad2192f)
Решение, которое сработало для меня, наконец-то пришло из этого вопроса, который я нашел на bundler. Для того, чтобы развернуть, мне пришлось удалить
BUNDLED WITH
1.17.1
из моего gemfile.lock, а затем используйте git push heroku master
.
Ответ 5
Вы также можете добавить файл PG Gem в производство в вашем файле gem
Gemfile
group :production do
gem 'pg'
gem 'rails_12factor'
end
group :development do
gem 'sqlite3'
end
ИЛИ ЖЕ:
# Use sqlite3 as the database for Active Record
gem 'sqlite3', group: [:development, :test]
gem 'rails_12factor', group: :production
gem 'pg', group: :production
После того, как вы добавили, что там сохранить и запустить следующее:
Терминал
gem install bundler
bundle install
git add .
git commit -m "Some comment here..."
git push heroku master