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

@danielcsapia
Copy link

quando eu rodo o rails s
Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)

@brunojppb
Copy link
Author

quando eu rodo o rails s
Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)

Olá Daniel, você precisa ter o Node.js instalado. Executa os seguntes comandos:

sudo apt-get update
sudo apt-get install nodejs

@vcoelho23
Copy link

boa tarde, bruno poderia postar os códigos html no curso da udemy não consta o link para download https://www.udemy.com/course/ruby-on-rails-5-na-pratica/learn/lecture/12382024#questions

@brunojppb
Copy link
Author

brunojppb commented Sep 17, 2019

Muito obrigado por informar @coelhorails.
Vou postar agora.
[edit] postei o link no curso e também aqui neste gist.

@apontes77
Copy link

Saudações, Bruno!
Estou a realizar todo o procedimento necessário mas, ao executar o comando: bundle exec rails db:migrate surgem as seguintes advertências:

rails aborted!
Gem::LoadError: Specified 'sqlite3' for database adapter, but the gem is not loaded. Add gem 'sqlite3' to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).
/home/alexandre/rails/app/bin/rails:9:in require' /home/alexandre/rails/app/bin/rails:9:in <top (required)>'
/home/alexandre/rails/app/bin/spring:15:in require' /home/alexandre/rails/app/bin/spring:15:in <top (required)>'
bin/rails:3:in load' bin/rails:3:in

'

Caused by:
Gem::LoadError: can't activate sqlite3 (~> 1.3.6), already activated sqlite3-1.4.1. Make sure all dependencies are added to Gemfile.
/home/alexandre/rails/app/bin/rails:9:in require' /home/alexandre/rails/app/bin/rails:9:in <top (required)>'
/home/alexandre/rails/app/bin/spring:15:in require' /home/alexandre/rails/app/bin/spring:15:in <top (required)>'
bin/rails:3:in load' bin/rails:3:in

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

Já tentei instalar o sqlite3, atualizar o mesmo etc mas nada dá certo. Se puder me dar uma dica de ajuda já agradeço prontamente.

@brunojppb
Copy link
Author

Saudações, Bruno!
Estou a realizar todo o procedimento necessário mas, ao executar o comando: bundle exec rails db:migrate surgem as seguintes advertências:

rails aborted!
Gem::LoadError: Specified 'sqlite3' for database adapter, but the gem is not loaded. Add gem 'sqlite3' to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).
/home/alexandre/rails/app/bin/rails:9:in require' /home/alexandre/rails/app/bin/rails:9:in <top (required)>'
/home/alexandre/rails/app/bin/spring:15:in require' /home/alexandre/rails/app/bin/spring:15:in <top (required)>'
bin/rails:3:in load' bin/rails:3:in

'
Caused by:
Gem::LoadError: can't activate sqlite3 (~> 1.3.6), already activated sqlite3-1.4.1. Make sure all dependencies are added to Gemfile.
/home/alexandre/rails/app/bin/rails:9:in require' /home/alexandre/rails/app/bin/rails:9:in <top (required)>'
/home/alexandre/rails/app/bin/spring:15:in require' /home/alexandre/rails/app/bin/spring:15:in <top (required)>'
bin/rails:3:in load' bin/rails:3:in

'
Tasks: TOP => db:migrate => db:load_config
(See full trace by running task with --trace)
Já tentei instalar o sqlite3, atualizar o mesmo etc mas nada dá certo. Se puder me dar uma dica de ajuda já agradeço prontamente.

Olá @apontes77
Manda teu Gemfile ai pra gente dar uma olhada.

@apontes77
Copy link

Saudações, Bruno!
Estou a realizar todo o procedimento necessário mas, ao executar o comando: bundle exec rails db:migrate surgem as seguintes advertências:
rails aborted!
Gem::LoadError: Specified 'sqlite3' for database adapter, but the gem is not loaded. Add gem 'sqlite3' to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).
/home/alexandre/rails/app/bin/rails:9:in require' /home/alexandre/rails/app/bin/rails:9:in <top (required)>'
/home/alexandre/rails/app/bin/spring:15:in require' /home/alexandre/rails/app/bin/spring:15:in <top (required)>'
bin/rails:3:in load' bin/rails:3:in
'
Caused by:
Gem::LoadError: can't activate sqlite3 (~> 1.3.6), already activated sqlite3-1.4.1. Make sure all dependencies are added to Gemfile.
/home/alexandre/rails/app/bin/rails:9:in require' /home/alexandre/rails/app/bin/rails:9:in <top (required)>'
/home/alexandre/rails/app/bin/spring:15:in require' /home/alexandre/rails/app/bin/spring:15:in <top (required)>'
bin/rails:3:in load' bin/rails:3:in
'
Tasks: TOP => db:migrate => db:load_config
(See full trace by running task with --trace)
Já tentei instalar o sqlite3, atualizar o mesmo etc mas nada dá certo. Se puder me dar uma dica de ajuda já agradeço prontamente.

Olá @apontes77
Manda teu Gemfile ai pra gente dar uma olhada.

@brunojppb já consegui entender o problema aqui. Era um conflito que tinha no meu linux entre sqlite3 e postgresql. Iniciei o rails já com o postgresql e consegui fazer tudo certo. Obrigado pela atenção!

@brunojppb
Copy link
Author

brunojppb commented Oct 28, 2019

Que legal que você conseguiu encontrar o problema @apontes77.
Espero que goste do curso :D

@lucasguidi
Copy link

Oi Bruno, tudo bem?
Estou tendo algum problema de conexão na criação do usuário postgres, poderia me ajudar?

createuser: could not connect to database postgres: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

@brunojppb
Copy link
Author

Oi Bruno, tudo bem?
Estou tendo algum problema de conexão na criação do usuário postgres, poderia me ajudar?

createuser: could not connect to database postgres: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Olá @lucasguidi,
Me parece que você tem o PostgreSQL instalado, porém ele não está rodando.

Para startar o Postgres manualmente, você executar:

pg_ctl -D /usr/local/var/postgres start

Se estiver usando mac, você pode configurar para startar automaticamente assim:

brew services start postgresql

@weslley6216
Copy link

weslley6216 commented Mar 4, 2021

Bom dia Bruno, travei na parte de instalar o postgresql...
Alguma sugestão pra resolver esse erro?

weslley@weslley-VirtualBox:~$ sudo apt-get install postgresql-9.5 libpq-dev
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.2-1.pgdg16.04+1) mas 12.6-0ubuntu0.20.04.1 está para ser instalado
postgresql-9.5 : Depende: libssl1.0.0 (>= 1.0.0) mas não é instalável
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.

@weslley6216
Copy link

weslley6216 commented Mar 4, 2021

Depois de pesquisar muito na internet saí da última tela porém travei em outro erro...

weslley@weslley-VirtualBox:~$ sudo -u postgres createuser weslley -s
createuser: não pôde conectar ao banco de dados template1: could not connect to server: Arquivo ou diretório inexistente
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

@JiyuHenko
Copy link

boa noite galera, qm estiver com problemas na instalação do postgresql tentem usar o comando "sudo apt-get install postgresql-12 libpq-dev"
no lugar do "sudo apt-get install postgresql-9.5 libpq-dev"

@JiyuHenko
Copy link

Depois de pesquisar muito na internet saí da última tela porém travei em outro erro...

weslley@weslley-VirtualBox:~$ sudo -u postgres createuser weslley -s
createuser: não pôde conectar ao banco de dados template1: could not connect to server: Arquivo ou diretório inexistente
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

le meu comentario

@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