Module: Zimbo::Actions
- Defined in:
- lib/zimbo/main.rb
Overview
Constant Summary collapse
- CYAN =
Definição das cores para o visual "hacker"
"\e[36m"- RESET =
"\e[0m"
Class Method Summary collapse
-
.criar_arquivo ⇒ void
Verifica a existência ou cria o arquivo Gemfile na pasta de execução atual.
- .criar_gem ⇒ Object
-
.load_arquivo ⇒ void
Gerencia a adição interativa de novas gems ao Gemfile e executa o bundle install.
-
.menu ⇒ void
Exibe o menu principal de interação no terminal e gerencia o fluxo de navegação.
Class Method Details
.criar_arquivo ⇒ void
This method returns an undefined value.
Verifica a existência ou cria o arquivo Gemfile na pasta de execução atual.
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/zimbo/main.rb', line 133 def self.criar_arquivo path = File.join(Dir.pwd, 'Gemfile') puts "Você está na: #{Dir.pwd}" print "Digite 1 para criar o Gemfile aqui: " opcao = STDIN.gets.chomp if opcao == "1" if File.exist?(path) puts "⚠️ Arquivo Gemfile já existe." else File.open(path, 'a') do |file| file.puts "source \"https://rubygems.org\"" end puts "✅ Gemfile criado com sucesso!" end self.criar_gem else self. end end |
.criar_gem ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/zimbo/main.rb', line 102 def self.criar_gem path = File.join(Dir.pwd, 'Gemfile') gems_adicionadas = 0 File.open(path, 'a') do |file| loop do print "Digite o nome da gem (ou '0' para sair): " gem_name = opcao = STDIN.gets.chomp break if gem_name == "0" next if gem_name.empty? file.puts "gem \"#{gem_name}\"" gems_adicionadas += 1 puts "✅ Gem \"#{gem_name}\" adicionada!" end end if gems_adicionadas > 0 puts "Instalando dependências..." if system("bundle install") puts "🎉 Dependências instaladas com sucesso!" else puts "❌ Ocorreu um erro ao rodar o bundle install." end end puts "Processo encerrado. Seu Gemfile foi atualizado!" end |
.load_arquivo ⇒ void
This method returns an undefined value.
Gerencia a adição interativa de novas gems ao Gemfile e executa o bundle install.
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 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 94 95 96 97 |
# File 'lib/zimbo/main.rb', line 49 def self.load_arquivo puts "Digite o comando (z on) para iniciar o server..." escolha = STDIN.gets.chomp if escolha != "z on" puts "Comando errado... Tente novamente." self. return end caminho_app = File.("../../app.rb", __dir__) unless File.exist?(caminho_app) puts "❌ Arquivo app.rb não encontrado em: #{caminho_app}" self. return end puts "\n🚀 Zimbo Server Inicializado!" puts "Monitorando alterações no arquivo app.rb..." puts "Pressione CTRL + C no terminal para encerrar o monitoramento.\n\n" # Executa o arquivo pela primeira vez ao ligar o server puts "[Zimbo] Inicializando app.rb..." system("ruby #{caminho_app}") # Guarda o horário da última modificação do arquivo ultima_modificacao = File.mtime(caminho_app) # Loop infinito que fica vigiando o arquivo em segundo plano loop do sleep 1 # Checa a cada 1 segundo para não sobrecarregar o processador # Se o horário de modificação mudou, significa que o usuário salvou o arquivo if File.mtime(caminho_app) > ultima_modificacao puts "\n🔄 Alteração detectada! Reinicializando o script..." # Atualiza a marca de tempo para a nova hora do salvamento ultima_modificacao = File.mtime(caminho_app) # Executa o comando do sistema para rodar o arquivo Ruby atualizado system("ruby #{caminho_app}") end end rescue Interrupt # Captura o CTRL+C do usuário de forma amigável para voltar ao menu principal puts "\n\n🛑 Servidor Zimbo encerrado." self. end |
.menu ⇒ void
This method returns an undefined value.
Exibe o menu principal de interação no terminal e gerencia o fluxo de navegação.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/zimbo/main.rb', line 17 def self. puts "\n#{CYAN}==============================" puts " BEM-VINDO AO ZIMBO " puts "==============================#{RESET}" puts "Escolha uma opção:" puts "1. Criar arquivo" puts "2. Zimbo Run / auto-save" puts "3. Sair" print "Opção: " opcao = STDIN.gets.chomp case opcao when "1" self.criar_arquivo when "2" self.load_arquivo when "3" puts "Saindo..." exit else puts "Opção inválida!" self. end end |