Blog do Urubatan
msgbartop
Desenvolvedor, Palestrante, Escritor, Nerd Assumido e Pai do Marcus :D
msgbarbottom

17 Dec 11 Idéia legal: com um comando abrir diversos terminais com o projeto rodando

A idéia não é minha, é de um utilitário em um projeto em que trabalho. Na raiz do projeto tem um arquivo chamado “term.rb” que quando executado abre diversas abas no terminal com o projeto rodando, uma com os logs, outra com console do banco de dados, …

Mas o script não funcionava com o iTerm2 que é o terminal que eu gosto de usar no Mac, então eu fiz uma versão simplificada (o script original funciona no Mace no Linux), a minha versão simplificada serve par qualquer projeto Rails e com pequenas alterações outros projetos também, mas é especifico para o iTerm2, sei que é possível fazer com o Terminal.app do Mac e para o GnomeTerminal do linux.

O script ficou assim:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# encoding: utf-8
require 'rubygems'
require 'appscript'
extend Appscript
project_dir = File.expand_path(File.dirname(__FILE__))
@commands = [
  ['App', "cd #{project_dir}; rails s"],
  ['Console', "cd #{project_dir}; rails c"],
  ['Logs', "cd #{project_dir}; tail -f log/development.log"]
]
@term = app("iTerm")
@term.activate
 
@commands.each do |title,command|
  session = @term.terminals[1].make(:new => :session)
  session.name.set(title.to_s)
  session.exec(:command => "/bin/bash -l")
  session.write(:text => command)
end

Sei que a gem rb-appscript não é mais mantida e estou usando ela aqui, mas a idéia me agradou bastante e foi a forma mais fácil que consegui pensar de fazer isto.

Bom, fica a idéia …

O que vocês acham de uma gem que faz isto meio “independente de terminal” e só recebe como parâmetro um array de comandos como o usado acima? Acho que vou fazer isto hoje e posto o link aqui :D

Você gostou deste post? Compartilhe:
Se você gostou deste post, talvez você queira assinar o feed RSS! Você também pode me seguir no Twitter.

Tags: , , , ,

Reader's Comments

  1. |

    Como faço para funcionar no linnux? Tem como você postar o arquivo original?

    Reply to this comment
  2. |

    Olá, já viu a gem consular, antiga terminitor?
    Funciona em diversos terminais.

    https://github.com/achiu/consular

    Reply to this comment

Leave a Comment