Ruby: Gestão de segredos (variáveis de ambiente)
Esta documentação faz parte do guia Usos avançados. Consulte o guia completo aqui: Avançar com as suas implementações Ruby.
👋 Bem-vindo à documentação do Stackhero!
A Stackhero oferece uma solução Ruby cloud pronta a usar que proporciona uma série de benefícios, incluindo:
- Implemente a sua aplicação em segundos com um simples
git push.- Utilize o seu próprio nome de domínio e beneficie da configuração automática de certificados HTTPS para uma segurança reforçada.
- Desfrute de tranquilidade com backups automáticos, atualizações com um clique, e preços simples, transparentes e previsíveis.
- Obtenha desempenho ótimo e segurança robusta graças a uma VM privada e dedicada.
Poupe tempo e simplifique a sua vida: só leva 5 minutos para experimentar a solução de Ruby cloud hosting da Stackhero!
Em algum momento, precisará gerir segredos como tokens ou palavras-passe para bases de dados e serviços de terceiros. É essencial armazenar esses segredos de forma segura. Evite incorporar segredos diretamente no seu repositório ou código, pois isso representa um sério risco de segurança.
As variáveis de ambiente oferecem dois benefícios significativos:
- Os seus segredos não serão armazenados no seu repositório Git, reduzindo o risco se alguém ganhar acesso ao seu código-fonte.
- Pode usar credenciais diferentes para diferentes ambientes. Por exemplo, conectar-se à sua base de dados de produção em produção enquanto usa uma base de dados de desenvolvimento durante o desenvolvimento.
Configurar variáveis de ambiente para desenvolvimento
Para desenvolvimento, crie um ficheiro .env na raiz do seu projeto. Este ficheiro será excluído do Git para que nunca seja comprometido. Use a gem dotenv para carregar automaticamente o ficheiro .env.
Primeiro, adicione a gem dotenv-rails ao seu Gemfile:
# Gemfile
gem 'dotenv-rails', groups: [:development, :test]
Depois instale a gem:
bundle install
Em seguida, crie um ficheiro .env na raiz do seu projeto e adicione as suas variáveis:
RAILS_ENV="development"
DATABASE_PASSWORD="secretPassword"
THIRD_API_PRIVATE_KEY="secretKey"
# ...
Finalmente, certifique-se de que o ficheiro .env é ignorado pelo Git:
echo '.env*' >> .gitignore
Configurar variáveis de ambiente para staging e produção
Para staging e produção, o ficheiro .env não é seguro nem prático porque não pode ser armazenado num repositório Git. Em vez disso, o Stackhero fornece uma solução segura para gerir variáveis de ambiente diretamente na configuração do seu serviço Ruby.
Pode definir estas variáveis através do painel do Stackhero ao selecionar o seu serviço Ruby e clicar no botão "Configurar".
Aceder a variáveis de ambiente
Em Ruby, pode aceder facilmente a variáveis de ambiente usando ENV. Por exemplo, para recuperar DATABASE_PASSWORD, use:
ENV['DATABASE_PASSWORD'] # => 'secretPassword'
Aqui está um exemplo de como conectar-se a um servidor RabbitMQ usando variáveis de ambiente:
require 'bunny'
class RabbitMQClient
def initialize
@connection = Bunny.new(hostname: ENV['RABBITMQ_HOST'],
username: ENV['RABBITMQ_USERNAME'],
password: ENV['RABBITMQ_PASSWORD'])
@connection.start
end
def publish(queue_name, message)
channel = @connection.create_channel
queue = channel.queue(queue_name)
channel.default_exchange.publish(message, routing_key: queue.name)
end
def close
@connection.close
end
end
Na plataforma de desenvolvimento, o seu ficheiro .env pode incluir:
RABBITMQ_HOST='127.0.0.1'
RABBITMQ_USERNAME='developmentUser'
RABBITMQ_PASSWORD='developmentPassword'
Para produção e staging, defina as suas variáveis de ambiente no painel do Stackhero sob a configuração do serviço Ruby como mostrado abaixo:
RABBITMQ_HOST='<XXXXXX>.stackhero-network.com'
RABBITMQ_USERNAME='production'
RABBITMQ_PASSWORD='secretProductionPassword'