Module: Zimbo::Actions

Defined in:
lib/zimbo/main.rb

Overview

Since:

  • 0.1.0

Constant Summary collapse

CYAN =

Definição das cores para o visual "hacker"

Since:

  • 0.1.0

"\e[36m"
RESET =

Since:

  • 0.1.0

"\e[0m"

Class Method Summary collapse

Class Method Details

.criar_arquivovoid

This method returns an undefined value.

Verifica a existência ou cria o arquivo Gemfile na pasta de execução atual.

Since:

  • 0.1.0



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.menu
  end
end

.criar_gemObject

Since:

  • 0.1.0



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_arquivovoid

This method returns an undefined value.

Gerencia a adição interativa de novas gems ao Gemfile e executa o bundle install.

Examples:

Adicionando gems via terminal:

Zimbo::Actions.criar_gem

Since:

  • 0.1.0



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.menu
      return
  end      

  caminho_app = File.expand_path("../../app.rb", __dir__)

  unless File.exist?(caminho_app)
    puts "❌ Arquivo app.rb não encontrado em: #{caminho_app}"
    self.menu
    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.menu
end

This method returns an undefined value.

Exibe o menu principal de interação no terminal e gerencia o fluxo de navegação.

Since:

  • 0.1.0



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.menu
  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.menu
  end
end