Gemfile

Guia completo do Gemfile para bots Ruby e aplicações web (site/API) na Discloud.

🗂️ O que é Gemfile?

Gemfile lista as gems (bibliotecas) que sua aplicação Ruby precisa. A Discloud usa o Bundler durante o deploy para instalá-las antes de iniciar sua aplicação.


🛠️ Criando um Gemfile (Início Rápido)

1

Inicialize o Bundler em uma pasta vazia:

bundle init

Isso cria um Gemfile inicial.

2

Adicione dependências diretamente via Bundler:

bundle add sinatra
bundle add puma
3

Instale (respeitando o Gemfile):

bundle install

Instale o Bundler se estiver faltando: gem install bundler.


🧪 Grupos de Ambiente

group :development, :test do
	gem 'pry'
	gem 'rspec'
end

group :production do
	# gems apenas para produção (APM, backends de logging, etc.)
end

Pule a instalação de grupos dev/test no momento do deploy se desejado:

bundle install --without development test

🧩 Exemplos de Gemfiles

Gemfile
source 'https://rubygems.org'

ruby '3.2.2'

gem 'rails', '~> 7.0.0'
gem 'puma',  '~> 5.0'
gem 'pg',    '~> 1.1'   # ou 'sqlite3' para uso simples/local
gem 'bootsnap', '>= 1.4.4', require: false

group :development, :test do
	gem 'pry'
	gem 'rspec-rails'
end

group :production do
	# monitoramento / cache / etc.
end

gem 'bundler', '~> 2.4'

🧾 Exemplo de config.ru (Site Sinatra / Rack)

config.ru
require 'bundler/setup'
require 'sinatra'
require 'dotenv/load' if ENV['RACK_ENV'] != 'production'

set :bind, '0.0.0.0'
set :port, (ENV['PORT'] || 8080)

get '/' do
	'Olá do app Sinatra na Discloud!'
end

run Sinatra::Application

Para bots, você normalmente NÃO precisa de config.ru; em vez disso, apenas aponte MAIN no discloud.config para sua entrada Ruby (ex.: bot.rb).


🧪 Atualizando Dependências

# Atualize uma única gem
bundle update puma

# Atualize todas (cuidado – pode introduzir mudanças incompatíveis)
bundle update

# Veja gems desatualizadas
bundle outdated

Patches de segurança: monitore avisos (ex.: RubySec / Dependabot) e agende bundle update --patch periodicamente.


🧰 Referência de Comandos Comuns

# Inicializar Gemfile
bundle init

# Adicionar gem (escreve no Gemfile & instala)
bundle add <gem>

# Instalar apenas com grupos de produção
bundle install --without development test

# Verificar problemas no gráfico de dependências
bundle check

# Limpar gems não utilizadas (após prune)
bundle clean --force

Last updated