Я столкнулся с ошибкой приложения после развертывания приложения 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
Не добавляйте драгоценный камень SQLite. SQLite не работает на Heroku из-за его эфемерной файловой системы. Что следует сделать, так это удалить SQLite из драгоценного файла и использовать Postgres во всех средах. Некоторое время назад я написал более подробный ответ по этому поводу stackoverflow.com/a/52155604/544825
В моем 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" конец
также некоторые правила ведения домашнего хозяйства пожалуйста, не используйте изображения сообщений об ошибках и отредактируйте сам вопрос, чтобы добавить больше деталей, вместо того, чтобы комментировать свой собственный вопрос. Облегчите задачу людям, пытающимся вам помочь.
@wiredforfreedomit по-прежнему очень плохая идея использовать разные базы данных для тестирования и производства, поскольку между PG и SQLite существует множество несоответствий. Вы можете либо использовать программу, либо тратить время на использование SQLite, который не имеет реальных преимуществ, за исключением того, что он не требует какой-либо настройки в системах Unix.
Если вы действительно хотите это сделать, вам нужно настроить файл data.yml для использования разных адаптеров для каждой среды.
настройка файла конфигурации data.yml действительно была хорошим решением
На самом деле это не очень хорошее решение, но все, что держит вашу лодку на плаву.
Решением является установка конкретных адаптеров для каждой среды в конфигурационном файле 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
?
Я изменил производство: адаптер: на postgresql
Как упоминал Макс выше, это бомба замедленного действия, а не решение. Механизмы баз данных не являются полной заменой друг друга. Вам следует использовать Postgres локально, если вы собираетесь использовать его в производстве.
Heroku Run Rails Console: ошибка при загрузке адаптера Active Record 'sqlite3'. От чего зависит отсутствие драгоценного камня? sqlite3 не является частью пакета. Добавьте его в свой Gemfile. (Ошибка загрузки). Мне неясно, чего не хватает в файле драгоценного камня...