Skip to content

Instantly share code, notes, and snippets.

@brunojppb
Last active May 22, 2024 18:37
Show Gist options
  • Save brunojppb/338e08da867f4cb05a8de9d9523f0ffd to your computer and use it in GitHub Desktop.
Save brunojppb/338e08da867f4cb05a8de9d9523f0ffd to your computer and use it in GitHub Desktop.
configurando o git e o Rails no ubuntu

Instalar o git:

sudo apt-get update
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev

Instalar o rbenv:

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
exec $SHELL
rbenv version

Instalar o Ruby:

rbenv install 2.6.1
ruby -v
rbenv global 2.6.1

Instalar bundler gem (gerenciador de dependências):

gem install bundler
rbenv rehash

Configurando Git:

git config --global color.ui true
git config --global user.name "seu nome aqui"
git config --global user.email "seuemail@example.com"

Gerando chaves ssh e copiando conteúdo:

ssh-keygen -t rsa -b 4096 -C "seuemail@example.com"
cat ~/.ssh/id_rsa.pub
ssh -T git@github.com

Instalando o Rails:

gem install rails -v 5.2.2
rails -v

instalando o node.js:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.2/install.sh | bash
source ~/.bashrc
nvm install 4.4.7

Criando primeiro projeto Rails:

mkdir rails
cd rails
rails new app
cd app

Instalando o PostgreSQL

Primeiramente, instala o Docker Desktop (link aqui).

Depois que o Docker tiver instalado, verifica se está funcionando no seu terminal com o seguinte comando:

docker --version

Se tiver tudo certinho, isso deve retornar algo como:

Docker version 26.0.0, build 2ae903e

Agora verifica se o docker-compose está instalado com o seguinte comando:

docker-compose --version

Se tiver tudo certinho, isso deverá retornar algo como:

Docker Compose version v2.26.1-desktop.1

Agora você precisa criar um arquivo chamado docker-compose.yml dentro do seu projeto Rails com o seguinte conteúdo:

services:

  dev_db:
    image: postgres:14.2
    container_name: rails_pg
    environment:
      - POSTGRES_USER=contact_list_development
      - POSTGRES_PASSWORD=contact_list
      - POSTGRES_DB=contact_list
    ports:
      - "5432:5432"
    volumes:
      - ./pg_data:/var/lib/postgresql/data

Agora você vai iniciar um Docker container baseado nesse arquivo. Não se preocupa se você não tem experiencia com Docker, isso aqui vai ser suficiente para rodar esse container.

Agora executa o seguinte comando no teu terminal, assumindo que você está dentro da pasta do seu projeto Rails:

docker-compose up

Esse comando vai ler o arquivo docker-compose.yml e vai criar um container do Postgres pra você. Deixa essa janela do seu terminal aberta em background. Agora o Postgres está disponível para você.

Configurando o Banco de Dados com usuário e senha do app Rails

Você vai notar que no docker-compose.yml que criamos anteriormente existem 2 variáveis de ambiente configuradas lá como:

# ... mais conteúdo aqui
      - POSTGRES_USER=contact_list
      - POSTGRES_PASSWORD=contact_list
      - POSTGRES_DB=contact_list

Você precisa usar esses valores no seu arquivo config/database.yml no seu projeto Rails da seguinte forma:

# .... mais conteúdo aqui ....
development:
  <<: *default
  database: contact_list
  username: contact_list
  password: contact_list

Agora quando você inicializar seu app Rails, ele vai se conectar no Postgres que está rodando no Docker container.

Rodando o projeto Rails:

bundle exec rails db:crate
bundle exec rails db:migrate
rails s

Abra seu browser e vá para o endereço localhost:3000

Código do projeto final no Github

o projeto final que criaremos durante todo o curso está disponível no link abaixo: https://github.com/brunojppb/rails_contact_list

@luiz-davi
Copy link

Ao tentar rodar o comando bundle exec rails db:migrate, encontro esse erro

Running via Spring preloader in process 5336
rake aborted!
ActiveRecord::NoDatabaseError: FATAL: database "app_development" does not exist
internal:/home/luizdavi/.rbenv/versions/3.0.1/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb:85:in require' <internal:/home/luizdavi/.rbenv/versions/3.0.1/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in require'
-e:1:in `

'

Caused by:
PG::ConnectionBad: FATAL: database "app_development" does not exist
internal:/home/luizdavi/.rbenv/versions/3.0.1/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb:85:in require' <internal:/home/luizdavi/.rbenv/versions/3.0.1/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in require'
-e:1:in `

'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

Alguém tem alguma luz pra me ajudar?

@brunojppb
Copy link
Author

brunojppb commented Dec 25, 2021

@luiz-davi tenta executar o seguinte comando:

bundle exec rails db:create

Isso deve criar o banco de dados antes de executar as migrações.

Se funcionar vou atualizar esse gist.

@luiz-davi
Copy link

@brunojppb Eu consegui mas tive que fazer uma série de outros passos, como criar o banco via terminal do postgres, conceder acesso irrestrito ao meu user a esse banco, levantar o postgres manualmente toda vez que for usar

@antonioneto30
Copy link

Ao instalar o comando "sudo apt-get install postgresql-9.5 libpq-dev", aparece o seguinte erro:

Lendo listas de pacotes... Pronto
Construindo árvore de dependências
Lendo informação de estado... Pronto
Alguns pacotes não puderam ser instalados. Isto pode significar que
você solicitou uma situação impossível ou, se você está usando a
distribuição instável, que alguns pacotes requeridos não foram
criados ainda ou foram retirados da "Incoming".
A informação a seguir pode ajudar a resolver a situação:

Os pacotes a seguir têm dependências desencontradas:
libpq-dev : Depende: libpq5 (= 13.3-1.pgdg16.04+1) mas não será instalado
postgresql-9.5 : Depende: libpq5 (>= 9.2~beta3) mas não será instalado
Depende: libssl1.0.0 (>= 1.0.0) mas não é instalável
Depende: postgresql-client-9.5
Recomenda: postgresql-contrib-9.5 mas não será instalado
Recomenda: sysstat mas não será instalado
E: Impossível corrigir problemas, você manteve (hold) pacotes quebrados.

Como prosseguir?

@antonioneto30
Copy link

@weslley6216 como você resolveu o primeiro problema?

@caiomello94
Copy link

Bom dia, Bruno.

Ao rodar o primeiro comando para instalar o postgres, está ocorrendo este erro de diretorio :

sh: /etc/apt/sources.list.d/pgdg.list: No such file or directory

sabe me dizer o que pode ser?

obs : é um mac
obs2: tenho DBeaver instalado no mac.

@brunojppb
Copy link
Author

brunojppb commented May 22, 2024

@caiomello94 ultimamente eu tenho usado o Postgres via Docker que é bem mais fácil de instalar e configurar. Olha só, tenta fazer isso aqui:

Primeiramente, instala o Docker Desktop (link aqui).

Depois que o Docker tiver instalado, verifica se está funcionando no seu terminal com o seguinte comando:

docker --version

Se tiver tudo certinho, isso deve retornar algo como:

Docker version 26.0.0, build 2ae903e

Agora verifica se o docker-compose está instalado com o seguinte comando:

docker-compose --version

Se tiver tudo certinho, isso deverá retornar algo como:

Docker Compose version v2.26.1-desktop.1

Agora você precisa criar um arquivo chamado docker-compose.yml dentro do seu projeto Rails com o seguinte conteúdo:

services:

  dev_db:
    image: postgres:14.2
    container_name: rails_pg
    environment:
      - POSTGRES_USER=contact_list_development
      - POSTGRES_PASSWORD=contact_list
      - POSTGRES_DB=contact_list
    ports:
      - "5432:5432"
    volumes:
      - ./pg_data:/var/lib/postgresql/data

Agora você vai iniciar um Docker container baseado nesse arquivo. Não se preocupa se você não tem experiencia com Docker, isso aqui vai ser suficiente para rodar esse container.

Agora executa o seguinte comando no teu terminal, assumindo que você está dentro da pasta do seu projeto Rails:

docker-compose up

Esse comando vai ler o arquivo docker-compose.yml e vai criar um container do Postgres pra você. Deixa essa janela do seu terminal aberta em background. Agora o Postgres está disponível para você.

Atualizando usuário e senha do app Rails

Você vai notar que no docker-compose.yml existem 2 variáveis de ambiente configuradas lá como:

# ... mais conteúdo aqui
      - POSTGRES_USER=contact_list_development
      - POSTGRES_PASSWORD=contact_list
      - POSTGRES_DB=contact_list

Você precisa usar esses valores no seu arquivo config/database.yml no seu projeto Rails da seguinte forma:

# .... mais conteúdo aqui ....
development:
  <<: *default
  database: contact_list_development
  username: contact_list
  password: contact_list

Agora quando você inicializar seu app Rails, ele vai se conectar no Postgres que está rodando no Docker container.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment