-
Notifications
You must be signed in to change notification settings - Fork 111
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature add render.com support #678
Feature add render.com support #678
Conversation
Всё работает. Нужно протестировать руками выползающие ошибки, при наличии доступа к платному варианту render.com, т.к. там есть доступ к консоли. Заниматься отладкой вслепую я устал уже |
9af82a5
to
218082c
Compare
Gemfile
Outdated
@@ -44,6 +44,7 @@ gem 'devise-i18n' | |||
gem 'dotenv-rails' | |||
gem 'dry-container' | |||
gem 'enumerize' | |||
gem 'faker', require: false |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@usernaimandrey посмотри, плз.
Вероятно нам фейкер не нужен для прода. А прод у нас по сути только один. Рендер все еще дев/стейдж окружение. Может быть просто будем ставить дев+прод зависимости?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Да faker не нужен, мы же деплоим это herocku, а туда лишний ненужный гем незачем тащить, он же нужен только для render, cчитаю что это можно просто указать в описание в REDME, что для загрузки фикстур нужен этот гем.
export DOTENV_FILE='/etc/secrets/env' | ||
if [ -f "$DOTENV_FILE" ]; then export $(sed '/^\s*$/d; /^[[:space:]]*#/d' "$DOTENV_FILE"); fi | ||
cd $current_dir | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
а для чего вот это? В рендер можно использовать обычные переменные окружения.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Можно свой .env файл загрузить просто и не мучаться с этими переменными
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
да там и так, и через web интерфейс можно их натыкать, но через скрипт меньше ручной работы, тем более .env автоматом генерируется, главное чтобы не забыли в нем значения прописать
Вообще рендер это еще не прод окружение. Задача деплоя на рендер пока что - показать как выглядят наши изменения. Главные сомнения у меня по поводу фейкера |
|
@fey про фейкер я отписал, а Кирилл прав без сидов фикстуры не загрузишь, команда bin/rails db:fixtures:load с ошибкой падает |
Всё, с faker подправил и чутка README обновил |
а что пишет? А мы можем данные предварительно загрузить, например локально, передав урл базы данных? Например Может еще ребят позвать, спросить, как еще можно сделать. |
Там ничего не сделать - в базе нет прав на отключение триггеров, которые гасятся, чтобы проигнорить constraints В дополнительном шаге из генерации дампа базы не вижу смысла - больше проблем и боли новичкам будет, кмк Порешал проблему так https://github.com/qsimpleq/hexlet-cv/blob/cec534c81feb63150e4d5a9861ffb5eba6ad5031/bin/render-build.sh#L10C1-L12C46 |
Пока задал вопросам ребятам-разработчикам. Может быть они подскажут, как лучше. |
Важный момент, ещё раз. На бесплатном плане нет доступа к консоли, так что приколачивать rake таски или что-то такое - бесполезно. Можно добавить ещё одну переменную окружения в seeds, в зависимости от которой будут грузиться фикстуры или реальные данные на render.com вот и всё) if ENV['RENDER']&.to_i&.positive? && ENV['RENDER_LOAD_FIXTURES']&.to_i&.positive?
require_relative 'seeds/render_load_fixtures'
render_load_fixtures
end |
О каких реальных данных идет речь и откуда они подгружаются? |
в hexlet-sicp есть сиды, но там не проблема поднять приложение в дев-режиме. в hexlet-friends подгружаются данные с github, т.е. нет потребности генерить тестовые данные |
|
@fey, если пока молчат, то предлагаю мой вариант выбрать #678 (comment) Он никак не повлияет на сиды, если потребуются реальные данные в будущем, |
@corsicanec82 Стас, можешь посмотреть, пожалуйста, ПР? Может все ок и я зря переживаю. |
@qsimpleq обсудили. Добавляем новый енв, стейджинг, который будет использовать постгрес и будет в принципе деплоиться на рендере и подобных сервисах. |
166902a
to
9d32089
Compare
В принципе всё готово |
ping |
Коля пока в отпуске. На следующей неделе выйдет. Предлагаю дождаться его. |
Ок |
Еще раз пинганул ребят, глянуть ПР. К сожалению, без еще одного разработческого ревью, не смогу просто так смержить. |
@fey напоминаю :) |
в ММ ответил, здесь продублирую. @usernaimandrey проверял шаги, но где-то что-то пошло не так. В общем, ПР щас находится в работе у ребят. Они отпишутся по апдейтам. |
* Go to YOUR_CUSTOM_NAME_PG PostgreSQL -> Info and copy `Internal Database URL` | ||
|
||
* Go to YOUR_CUSTOM_NAME_CV app -> Environment | ||
* Environment Variables, by one\ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Привет! Извини что так долго не приходили! вот здесь все таки стоит указать набор пременных окружения не обходимых для деплоя, если человек их будет через web интерфейс
EMAIL_FROM= любой email существующий в базе
EMAIL_SPECIAL_USER= любой email существующий в базе
HABR_ACCESS_TOKEN = любой набор символо
HOST= адрес хоста который выдается на рендере без указания протокола
еще надо бы добавить что пред деплоем нало сконфигурировать файл puma.rb для рендер, например как это описанно здесь https://render.com/docs/deploy-rails
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
На бесплатном варианте нет доступа к консоли. Поэтому нужно все эти правки сразу в код вносить (я про puma.rb)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Переменные желательно всё же вынести в отдельный блок документации и нормально описать все имеющиеся.
А тут я перечислил только те, что необходимы для запуска на render.com
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Конкретно для Render.com я бы вынес необходимое в конфиге puma.rb в блок
if ENV['RENDER'].present?
pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
workers ENV.fetch("WEB_CONCURRENCY") { 4 }
preload_app!
end
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А тут я перечислил только те, что необходимы для запуска на render.com
а без переменной HOST будет возможен запуск?) изначально когда генерится env там HOST=localhos, человек который будет разворачивать ее допустим не установит и у него при переходе по адресу который сгенерит рендер будет localhos открыватся
EMAIL_SPECIAL_USER - без вот этой пременной главня страница упадет с ошибкой,
HABR_ACCESS_TOKEN - без вот этой деплой упадет
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Переменные желательно всё же вынести в отдельный блок документации и нормально описать все имеющиеся.
все в ваших руках это opensource)))
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Конкретно для Render.com я бы вынес необходимое в конфиге puma.rb в блок
if ENV['RENDER'].present? pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" } workers ENV.fetch("WEB_CONCURRENCY") { 4 } preload_app! end
да можно так
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Да, без HOST не запустится. Всё верно, это я уже поправил.
Я имел ввиду вынести описание всех используемых переменных окружения в отдельный блок README
Незачем их в деплое для render описывать
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
так я не предлагаю все только те что не обходимы для деплоя
и еще я не увидел конфигурационный файл render.yml, он не нужен? без него задеплоится? |
Он предназначен для Blueprint только, и не нужен при обычном деплое. |
вообще как альтернативный вариант деплоя, но так как у нас немного другой путь то тогда да согласен |
Внёс изменения, сейчас всё красиво должно быть На данный момент это уже достаточно безболезненный способ деплоя |
# exit on error | ||
set -o errexit | ||
|
||
source "$(dirname $0)/render_lib.sh" && load_dotenv_file |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
еще подскажи если тот кто будет деплоить добавит прерменные через web интерфейс этот запуск сработает?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Только если добавит файл с переменными там же в интерфейсе
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
я думаю об этом надо было сказать и команду для старта прописать
Только если добавит файл с переменными там же в интерфейсе
вот тут не понял, знаю что там можно файлик подгрузить через интерфейс рендера, а твоим способом он как то по другому попадет?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Файлы там складируются по пути /etc/secrets/filename, оттуда и загружаю
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Файлы там складируются по пути /etc/secrets/filename, оттуда и загружаю
так они там просто так же не берутся), их туда загрузить тот кто деплоит, а по инструкции это не очень понятно
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Может сегодня напрямую спишемся минут на 5?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Да можно, но только давай уже завтра можешь меня mattermost найти @farmacevt
config/environments/production.rb
Outdated
@@ -22,7 +22,7 @@ | |||
|
|||
# Disable serving static files from the `/public` folder by default since | |||
# Apache or NGINX already handles this. | |||
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? | |||
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? || ENV['RENDER']&.to_i&.positive? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
можно просто ENV['RENDER'].present?, она же либо есть либо нет
config/puma.rb
Outdated
|
||
# Specifies the `environment` that Puma will run in. | ||
# | ||
environment ENV.fetch('RAILS_ENV', 'development') | ||
|
||
if ENV['RENDER']&.to_i&.positive? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ENV['RENDER'].present?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Перестраховаться и чтобы на 0 не реагировало, когда локально тестирую.
Мне нужно
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Перестраховаться и чтобы на 0 не реагировало, когда локально тестирую.
ну там 0 не будет она либо есть либо nil
Мне нужно
то что тестируется локально не обязательно же в репозитории должно быть
db/seeds.rb
Outdated
@@ -7,3 +7,8 @@ | |||
# | |||
# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }]) | |||
# Character.create(name: 'Luke', movie: movies.first) | |||
|
|||
if Rails.env.staging? && ENV['RENDER']&.to_i&.positive? && ENV['RENDER_LOAD_FIXTURES']&.to_i&.positive? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
я думаю мы это будем использовать только на рендере и только на staging
if Rails.env.staging? && ENV['render'].present? будет достаточно
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Отладка варианта production на рендер, как вариант, но можно и убрать
This reverts commit 776852d.
Может переоткрыть PR, а то через сутки после закрытия это сделать уже нельзя, если мне память не изменяет. |
Или лучше новый открыть, где я историю почищу? |
@usernaimandrey а чего ревертнули? |
Hexlet-cv лёг)
ср, 25 окт. 2023 г., 22:49 Nikolay Gagarinov ***@***.***>:
… @usernaimandrey <https://github.com/usernaimandrey> а чего ревертнули?
—
Reply to this email directly, view it on GitHub
<#678 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AALWC3KPJD63G2BSDKNXXW3YBFGJ5AVCNFSM6AAAAAA5EJXXF6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONZZG43DQMZTGY>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
@fey он посде деплоя упал с 503 |
Тут мой косяк, честно Почему и просил подебажить ветку с платного аккаунта render Я устал разбираться вслепую |
@qsimpleq тут будете продолжать разбираться с настрокой делоя? Или пока оставляете другим (Нам? :D) и беретесь за другую задачку?) |
Работа идёт) Вернулся к задаче |
#660
https://qsimpleq-hexlet-cv.onrender.com