Deploying a Rails app to cloud services using Docker and Kamal (a library for deploying apps containerized with Docker).
rails new APP_NAME -d postgresql -j esbuild -c bootstrap --skip-test
cd APP_NAME
//------ ROOT -------- | |
root# apt-get update | |
root# apt-get upgrade | |
// Dependencies | |
apt-get install -y git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev \ | |
libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev \ | |
libpcre3-dev unzip htop zip | |
After automatically updating Postgres to 10.0 via Homebrew, the pg_ctl start command didn't work. | |
The error was "The data directory was initialized by PostgreSQL version 9.6, which is not compatible with this version 10.0." | |
Database files have to be updated before starting the server, here are the steps that had to be followed: | |
# need to have both 9.6.x and latest 10.0 installed, and keep 10.0 as default | |
brew unlink postgresql | |
brew install [email protected] | |
brew unlink [email protected] | |
brew link postgresql |
root# apt-get update | |
root# apt-get upgrade | |
// dependencies for Ruby | |
root# apt-get install -y git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev \ | |
libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev \ | |
libpcre3-dev unzip | |
// Node.js v7 | |
root# curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash - |
<<APP>> change this variables |
http://stackoverflow.com/questions/22667401/postgres-json-data-type-rails-query | |
http://stackoverflow.com/questions/40702813/query-on-postgres-json-array-field-in-rails | |
#payload: [{"kind"=>"person"}] | |
Segment.where("payload @> ?", [{kind: "person"}].to_json) | |
#data: {"interest"=>["music", "movies", "programming"]} | |
Segment.where("data @> ?", {"interest": ["music", "movies", "programming"]}.to_json) | |
Segment.where("data #>> '{interest, 1}' = 'movies' ") | |
Segment.where("jsonb_array_length(data->'interest') > 1") |
# ubuntu: sudo nano /etc/postgresql/<< version >>/main/pg_hba.conf | |
# Позволяет любому пользователю локальной системы подключиться | |
# к любой базе данных, используя любое имя базы данных через | |
# доменные сокеты Unix (по умолчанию для локальных подключений). | |
# | |
# TYPE DATABASE USER ADDRESS METHOD | |
local all all trust | |
# То же, но для локальных замкнутых подключений по TCP/IP. |
upstream puma_<%= fetch(:nginx_config_name) %> { <% | |
flags = 'fail_timeout=0' | |
@backends = [fetch(:puma_bind)].flatten.map do |m| | |
etype, address = /(tcp|unix|ssl):\/{1,2}(.+)/.match(m).captures | |
if etype =='unix' | |
"server #{etype}:#{address} #{fetch(:nginx_socket_flags)};" | |
else | |
"server #{address.gsub(/0\.0\.0\.0(.+)/, "127.0.0.1\\1")} #{fetch(:nginx_http_flags)};" | |
end | |
end |
# sudo vi /etc/postgresql/9.5/main/pg_hba.conf | |
# Позволяет любому пользователю локальной системы подключиться | |
# к любой базе данных, используя любое имя базы данных через | |
# доменные сокеты Unix (по умолчанию для локальных подключений). | |
# | |
# TYPE DATABASE USER ADDRESS METHOD | |
local all all trust | |
# То же, но для локальных замкнутых подключений по TCP/IP. |