Class: Bddgenx::PropertiesLoader
- Inherits:
-
Object
- Object
- Bddgenx::PropertiesLoader
- Defined in:
- lib/bddgenx/support/properties_loader.rb
Class Method Summary collapse
-
.load_env_variables ⇒ Object
Carregar as variáveis do arquivo .env.
-
.load_properties ⇒ Hash
Carregar e substituir propriedades de arquivos .properties.
-
.read_file_with_correct_encoding(file) ⇒ String
Função para garantir que o arquivo seja lido com a codificação correta.
-
.replace_placeholders(content) ⇒ String
Função para substituir variáveis no conteúdo do arquivo .properties.
-
.set_environment_variables(properties) ⇒ Object
Função para definir variáveis de ambiente a partir das propriedades carregadas.
Class Method Details
.load_env_variables ⇒ Object
Carregar as variáveis do arquivo .env
Este método utiliza a gem ‘dotenv` para carregar variáveis de ambiente a partir de um arquivo `.env`. Ele carrega as variáveis do arquivo `.env` para o ambiente de execução, onde elas ficam disponíveis via `ENV` em qualquer parte do código.
24 25 26 |
# File 'lib/bddgenx/support/properties_loader.rb', line 24 def self.load_env_variables Dotenv.load # Carrega as variáveis do .env automaticamente end |
.load_properties ⇒ Hash
Carregar e substituir propriedades de arquivos .properties
Este método localiza todos os arquivos ‘.properties` no diretório raiz do projeto, lê seu conteúdo, substitui os placeholders pelas variáveis de ambiente, carrega as propriedades e mescla essas propriedades em um único hash.
Após carregar as propriedades, ele também define as variáveis de ambiente no Ruby (via ‘ENV`) usando as propriedades carregadas, mas não sobrescreve as variáveis de ambiente já definidas.
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/bddgenx/support/properties_loader.rb', line 66 def self.load_properties # Carregar variáveis do .env primeiro load_env_variables # Localizar arquivos .properties na raiz do projeto properties_files = Dir.glob(File.('../*.properties', __dir__)) properties = {} properties_files.each do |file| # Forçar a leitura do arquivo com codificação UTF-8 e lidar com caracteres inválidos content = read_file_with_correct_encoding(file) # Substituir os placeholders antes de carregar as propriedades content = replace_placeholders(content) # Carregar as propriedades do arquivo file_properties = JavaProperties::Properties.load(StringIO.new(content)) # Mesclar as propriedades carregadas no hash properties.merge!(file_properties.to_h) end # Agora, define as variáveis de ambiente a partir das propriedades carregadas set_environment_variables(properties) properties end |
.read_file_with_correct_encoding(file) ⇒ String
Função para garantir que o arquivo seja lido com a codificação correta
Este método lê um arquivo especificado com codificação UTF-8. Caso o arquivo contenha caracteres inválidos, eles são substituídos por um caractere de substituição, garantindo que o conteúdo seja lido corretamente.
50 51 52 53 54 |
# File 'lib/bddgenx/support/properties_loader.rb', line 50 def self.read_file_with_correct_encoding(file) # Lê o arquivo com codificação UTF-8 e ignora caracteres inválidos content = File.read(file, encoding: 'UTF-8') content.encode('UTF-8', invalid: :replace, undef: :replace, replace: '?') end |
.replace_placeholders(content) ⇒ String
Função para substituir variáveis no conteúdo do arquivo .properties
Este método recebe o conteúdo de um arquivo ‘.properties` e substitui os placeholders no formato `{VAR_NAME}` pelas variáveis de ambiente correspondentes, se definidas. Caso a variável de ambiente não esteja definida, o placeholder original é mantido no conteúdo.
36 37 38 39 40 41 |
# File 'lib/bddgenx/support/properties_loader.rb', line 36 def self.replace_placeholders(content) content.gsub!(/\{\{(\w+)\}\}/) do |match| ENV[$1] || match # Substitui pela variável de ambiente ou mantém o placeholder end content end |
.set_environment_variables(properties) ⇒ Object
Função para definir variáveis de ambiente a partir das propriedades carregadas
Este método percorre as propriedades carregadas e as define como variáveis de ambiente (‘ENV`) no Ruby. Se a variável de ambiente já estiver definida (por exemplo, pelo `.env`), ela não será sobrescrita.
101 102 103 104 105 106 |
# File 'lib/bddgenx/support/properties_loader.rb', line 101 def self.set_environment_variables(properties) properties.each do |key, value| # Se a variável de ambiente já estiver definida, não sobrescreve ENV[key.upcase] ||= value end end |