Criando atalhos para os comandos mais usados do Rails

25/02/07

Se você usa Linux, pode aumentar um pouco mais sua produtividade ao desenvolver em Rails. Ao invés de ter que digitar os comandos com o caminho "script/[comando]", você pode criar atalhos editando o arquivo "~/.bash_aliases".

Basta abrir o arquivo mencionado e adicionar o conteúdo abaixo:

#rails
alias server="script/server"
alias rconsole="script/console"
alias rlog="tail -f ./log/development.log"
alias controller="script/generate controller"
alias model="script/generate model"
alias scaffold="script/generate scaffold"
alias migrate="rake migrate"
alias migration="script/generate migration"

Agora, basta digitar o comando diretamente, sem precisar colocar o "script/". Veja alguns exemplos:

#create project
rails demo
 
#create controller
controller say
 
#create model
model User
 
#create migration
migration add_goodbye_message
 
#start webrick
server
 
#read log
rlog

O mais legal de tudo é que você pode criar qualquer atalho, para qualquer coisa. ;)

gEdit e tabulação por arquivo

02/01/07

O gEdit está se tornando um excelente editor de textos e será, com certeza, o escolhido pela maioria quando sair a versão com o novo componente GTKSourceView, que permite múltiplos highlights em um único arquivo (pense em um arquivo HTML com Javascript e CSS embutidos). Porém, por seguir a mesma filosofia do GNOME, peca por algumas funcionalidades básicas que não são implementadas. Uma delas é a definição de tabulação por tipo de arquivo. Por exemplo, quando programo em PHP, gosto de tabulação com 4 espaços. Mesma coisa para o Python. Mas quando estou em Ruby, gosto de 2 espaços como tabulação. Traduzindo, gosto de seguir as convenções de codificação de cada linguagem.

Uma das coisas que me impedia de usar o gEdit era a impossibilidade de fazer isso facilmente. Para quem não sabe, é possível fazer este tipo de configuração com o plugin modelines, mas você precisa adicionar a definição no mesmo estilo do Vim.

O plugin

Resolvi, então, criar este plugin que faz justamente isso. Permite definir diferentes tipos de tabulação, baseadas na extensão do arquivo.

Para instalá-lo, baixe o arquivo tabulation.tar.gz e extraia os arquivos para o diretório ~/.gnome2/gedit/plugins. Depois, ative-o em Editar / Preferências / Plugins.

Para adicionar uma nova extensão, ou alterar as configurações pré-definidas, modifique o arquivo "~/.tabulation.yml".

Sugestões? Deixe um comentário.

Para ver como seu gEdit pode ficar, veja estes posts publicados pelo Yuri Malheiros.

NOTA MENTAL: permitir a configuração das tabulações através de uma interface gráfica.

Update: Forcei apenas a tabulação de arquivos PHP, Python e Ruby. Assim, o script fica sem nenhuma dependência. Baixe o arquivo em http://f.simplesideias.com.br/tabulation-strict.tar.gz.

Detectando o screensaver com D-BUS

14/10/06

Imagine que você precise detectar se o screensaver está ativo ou não. Utilizando o D-BUS, é muito simples!

Tudo o que você precisa fazer é acessar a interface "org.gnome.ScreenSaver", presente no Gnome.

bus = dbus.SessionBus()
obj = bus.get_object('org.gnome.ScreenSaver', '/org/gnome/ScreenSaver')
screensaver = dbus.Interface(obj, 'org.gnome.ScreenSaver')
screensaver.connect_to_signal('ActiveChanged', detect_screensaver)

Abaixo, você tem um exemplo completo.

#! /usr/bin/env python
 
import dbus
import dbus.glib
import commands
import gtk
 
def detect_screensaver(enabled):
    print "Screensaver enabled? %s" % enabled
 
def enable_screensaver(widget):
    commands.getoutput(' gnome-screensaver-command --activate')
 
bus = dbus.SessionBus()
obj = bus.get_object('org.gnome.ScreenSaver', '/org/gnome/ScreenSaver')
screensaver = dbus.Interface(obj, 'org.gnome.ScreenSaver')
screensaver.connect_to_signal('ActiveChanged', detect_screensaver)
 
win = gtk.Window()
button = gtk.Button('Activate screensaver')
 
win.connect('destroy', gtk.main_quit)
button.connect('pressed', enable_screensaver)
 
win.add(button)
win.show_all()
 
gtk.main()