Ошибка приложения с кодом ошибки H10 приложения Ruby on Rails, развернутого на Heroku

Я столкнулся с ошибкой приложения после развертывания приложения Ruby on Rails в Heroku. Приложение разработано на Cloud9 от AWS и называется «wcslux_app». Приложение эквивалентно hello_app из Rails_tutorial от Hartl. В файле журнала я вижу код ошибки H10 при GET с путями "/" и ""/favicon.ico".

После изучения руководства мое приложение не работает на Heroku. Я выполнил следующие команды для развертывания wcslux_app:

source \<(curl -sL <https://cdn.learnenough.com/resize>) 
rake log:clear 
rake tmp:clear 
source \<(curl -sL <https://cdn.learnenough.com/heroku_install>) 
heroku login --interactive 
heroku create 
git push heroku main

Посещая https://shelted-beach-35205-f93f5210b58a.herokuapp.com, я ожидал получить те же результаты, что и в моей среде разработки IDE Cloud9 от AWS.

Файл драгоценного камня:

group :development, :test do
   gem "sqlite3", "1.4.2"
   gem "debug", "1.5.0", platforms: %i[ mri mingw x64_mingw ] 
end 

group :production do 
  gem "pg", "1.3.5" 
end

Heroku Run Rails Console: ошибка при загрузке адаптера Active Record 'sqlite3'. От чего зависит отсутствие драгоценного камня? sqlite3 не является частью пакета. Добавьте его в свой Gemfile. (Ошибка загрузки). Мне неясно, чего не хватает в файле драгоценного камня...

wired for freedom 20.05.2024 12:56

Не добавляйте драгоценный камень SQLite. SQLite не работает на Heroku из-за его эфемерной файловой системы. Что следует сделать, так это удалить SQLite из драгоценного файла и использовать Postgres во всех средах. Некоторое время назад я написал более подробный ответ по этому поводу stackoverflow.com/a/52155604/544825

max 20.05.2024 13:00

В моем Gemfile я добавил sqlite3 только в среде разработки и тестирования. Следовательно, это не должно влиять на производственную среду. Я до сих пор не понимаю, как исправить проблемную группу: development, :test do gem "sqlite3", "1.4.2" gem "debug", "1.5.0", платформы: %i[mri mingw x64_mingw] end group: производство do gem "pg", "1.3.5" конец

wired for freedom 20.05.2024 13:07

также некоторые правила ведения домашнего хозяйства пожалуйста, не используйте изображения сообщений об ошибках и отредактируйте сам вопрос, чтобы добавить больше деталей, вместо того, чтобы комментировать свой собственный вопрос. Облегчите задачу людям, пытающимся вам помочь.

max 20.05.2024 13:07

@wiredforfreedomit по-прежнему очень плохая идея использовать разные базы данных для тестирования и производства, поскольку между PG и SQLite существует множество несоответствий. Вы можете либо использовать программу, либо тратить время на использование SQLite, который не имеет реальных преимуществ, за исключением того, что он не требует какой-либо настройки в системах Unix.

max 20.05.2024 13:09

Если вы действительно хотите это сделать, вам нужно настроить файл data.yml для использования разных адаптеров для каждой среды.

max 20.05.2024 13:12

настройка файла конфигурации data.yml действительно была хорошим решением

wired for freedom 20.05.2024 14:03

На самом деле это не очень хорошее решение, но все, что держит вашу лодку на плаву.

max 20.05.2024 15:25
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
8
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решением является установка конкретных адаптеров для каждой среды в конфигурационном файле data.yml. Я определил адаптер sqlite для сред разработки и тестирования и адаптер Postgres для производственной среды.

default: &default
  adapter: sqlite3
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000

development:
  <<: *default
  database: db/development.sqlite3

test:
  <<: *default
  database: db/test.sqlite3

production:
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  database: wcslux_app_production
  username: wcslux_app
  password: <%= ENV['WCSLUX_APP_DATABASE_PASSWORD'] %>

Добро пожаловать в Stack Overflow. Пожалуйста, прочитайте Как ответить. Конкретно, что вы изменили в файле database.yml?

Chris 21.05.2024 02:43

Я изменил производство: адаптер: на postgresql

wired for freedom 22.05.2024 17:22

Как упоминал Макс выше, это бомба замедленного действия, а не решение. Механизмы баз данных не являются полной заменой друг друга. Вам следует использовать Postgres локально, если вы собираетесь использовать его в производстве.

Chris 23.05.2024 00:43

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