Ruby: Zarządzanie sekretami (zmienne środowiskowe)
Ta dokumentacja jest częścią przewodnika Zaawansowane zastosowania. Pełny przewodnik znajdziesz tutaj: Dalsze kroki w wdrażaniu Ruby.
👋 Witamy w dokumentacji Stackhero!
Stackhero oferuje gotowe do użycia rozwiązanie Ruby cloud, które zapewnia wiele korzyści, w tym:
- Wdrażaj swoją aplikację w kilka sekund za pomocą prostego
git push.- Używaj własnej nazwy domeny i korzystaj z automatycznej konfiguracji certyfikatów HTTPS dla zwiększonego bezpieczeństwa.
- Ciesz się spokojem dzięki automatycznym kopiom zapasowym, aktualizacjom jednym kliknięciem oraz prostemu, przejrzystemu i przewidywalnemu cennikowi.
- Uzyskaj optymalną wydajność i solidne zabezpieczenia dzięki prywatnej i dedykowanej VM.
Oszczędzaj czas i upraszczaj sobie życie: wypróbowanie rozwiązania Ruby cloud hosting Stackhero zajmuje tylko 5 minut!
W pewnym momencie będziesz musiał zarządzać sekretami, takimi jak tokeny lub hasła do baz danych i usług zewnętrznych. Ważne jest, aby przechowywać te sekrety w sposób bezpieczny. Unikaj osadzania sekretów bezpośrednio w repozytorium lub kodzie, ponieważ stanowi to poważne zagrożenie bezpieczeństwa.
Zmienne środowiskowe oferują dwa znaczące korzyści:
- Twoje sekrety nie będą przechowywane w repozytorium Git, co zmniejsza ryzyko, jeśli ktoś uzyska dostęp do twojego kodu źródłowego.
- Możesz używać różnych poświadczeń dla różnych środowisk. Na przykład, połącz się z bazą danych produkcyjną w produkcji, używając bazy danych deweloperskiej podczas rozwoju.
Konfigurowanie zmiennych środowiskowych dla rozwoju
Dla rozwoju, utwórz plik .env w katalogu głównym projektu. Ten plik będzie wykluczony z Git, aby nigdy nie został zatwierdzony. Użyj gemu dotenv, aby automatycznie załadować plik .env.
Najpierw dodaj gem dotenv-rails do swojego Gemfile:
# Gemfile
gem 'dotenv-rails', groups: [:development, :test]
Następnie zainstaluj gem:
bundle install
Następnie utwórz plik .env w katalogu głównym projektu i dodaj swoje zmienne:
RAILS_ENV="development"
DATABASE_PASSWORD="secretPassword"
THIRD_API_PRIVATE_KEY="secretKey"
# ...
Na koniec upewnij się, że plik .env jest ignorowany przez Git:
echo '.env*' >> .gitignore
Konfigurowanie zmiennych środowiskowych dla staging i produkcji
Dla staging i produkcji, plik .env nie jest bezpieczny ani praktyczny, ponieważ nie może być przechowywany w repozytorium Git. Zamiast tego, Stackhero zapewnia bezpieczne rozwiązanie do zarządzania zmiennymi środowiskowymi bezpośrednio w konfiguracji twojej usługi Ruby.
Możesz ustawić te zmienne za pośrednictwem pulpitu nawigacyjnego Stackhero, wybierając swoją usługę Ruby i klikając przycisk "Configure".
Dostęp do zmiennych środowiskowych
W Ruby, możesz łatwo uzyskać dostęp do zmiennych środowiskowych, używając ENV. Na przykład, aby pobrać DATABASE_PASSWORD, użyj:
ENV['DATABASE_PASSWORD'] # => 'secretPassword'
Oto przykład, jak połączyć się z serwerem RabbitMQ, używając zmiennych środowiskowych:
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 platformie deweloperskiej, twój plik .env może zawierać:
RABBITMQ_HOST='127.0.0.1'
RABBITMQ_USERNAME='developmentUser'
RABBITMQ_PASSWORD='developmentPassword'
Dla produkcji i staging, zdefiniuj swoje zmienne środowiskowe w pulpicie nawigacyjnym Stackhero w konfiguracji usługi Ruby, jak pokazano poniżej:
RABBITMQ_HOST='<XXXXXX>.stackhero-network.com'
RABBITMQ_USERNAME='production'
RABBITMQ_PASSWORD='secretProductionPassword'