Fazendo requisições HTTP com Ruby

01/09/07

Se você precisa fazer alguma requisição HTTP e precisa enviar algum cabeçalho como User-Agent, X-Requested-With ou um outro qualquer, basta você utilizar a biblioteca Net. Veja um exemplo de como fazer isto:

require 'net/http'
require 'uri'
 
# creating the headers hash
headers = {
  'User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/2.0.0.6',
  'X-Requested-With' => 'Javascript'
}
 
# parse the url we want to access
uri = URI.parse('http://example.com/some/page/?foo=bar')
 
# creating a request object
http = Net::Http.new(uri.host)
 
# GET request
puts http.get(uri.path, headers)
 
# POST request
puts http.post(uri.path, headers)

Removendo caracteres com o método trim no Ruby

02/08/07

Já precisou remover caracteres de uma string, com funções semelhantes a trim, rtrim e ltrim do PHP? Pois é! No Ruby você não tem isso nativamente. Para adicionar tais funcionalidades, basta estender a classe String com os métodos abaixo.

class String
  def trim!(chars)
    rtrim!(chars)
    ltrim!(chars)
  end
 
  def rtrim!(chars)
    gsub!(/(#{trim_prepare(chars)})+$/, '')
  end
 
  def ltrim!(chars)
    gsub!(/^(#{trim_prepare(chars)})+/, '')
  end
 
  def trim(chars)
    dup.rtrim(chars).ltrim(chars)
  end
 
  def rtrim(chars)
    dup.rtrim!(chars)
  end
 
  def ltrim(chars)
    dup.ltrim!(chars)
  end
 
  private
    def trim_prepare(chars)
      chars = chars.split("").collect { |char| Regexp.escape(char) }
      chars.join('|')
    end
end

Seu funcionamento é muito semelhante às funções do PHP. Veja:

text = '|_ ruby _|'
puts text.trim(' _|')  # both sides
puts text.ltrim(' _|') # left side
puts text.rtrim(' _|') # right side

Lembre-se que você não precisa passar os caracteres que serão removidos na ordem em que eles aparecem.

Lista de Plugins para o gEdit

04/04/07

Neste post, listo todos os plugins que uso no meu gEdit com links para os respectivos downloads. Além disso, é possível baixar o tema que uso atualmente, baseado no tema Blackboard do Textmate. Diverta-se!

Advanced Editing

Adiciona uma série de funcionalidades como duplicar linha, remover linha, etc.
http://live.gnome.org/Gedit/AdvancedEditingPlugin

Autocomplete

Autocompletar com base no dicionário de palavras encontrado nos arquivos abertos.
http://sourceforge.net/projects/gedit-autocomp

Class Browser

Exiba a estrutura de seus arquivos com a possibilidade de ir a um determinado ponto rapidamente.
http://www.stambouliote.de/tarballs/gedit_classbrowser-0.0.3.tar.gz

Code Comment

Comente ou descomente um bloco de código com uma simples tecla de atalho.
http://live.gnome.org/Gedit/

Current Line Highlight

Pode parecer frescura, mas para algumas pessoas — eu — mudar a cor de fundo da linha corrente faz a diferença.
http://simplesideias.com.br/current-line-highlight/

Draw Spaces

Exibe espaços (ponto) e tabulações (seta) com aparência distinta.
http://live.gnome.org/Gedit

External Tools

Permite executar comandos externos e shell script. Excelente se usado com o comando Run File.
http://live.gnome.org/Gedit/ToolLauncherPlugin

File Browser Pane

Navegue pelos diretórios através de uma barra lateral adicionada com este plugin.
http://live.gnome.org/Gedit/ToolLauncherPlugin

Gemini

Autocompleta caracteres como colchetes, parenteses e aspas.
http://www.garyharan.com/index.php/2006/11/16/gemini-gedit-plugin-for-all-those-Textmate-fans/

Indent Lines

Aumenta ou diminui a indentação de código.
http://live.gnome.org/Gedit/Plugins

Markup Preview

Permite que você visualize no painel inferior, arquivos formatos com HTML, Textile e Markdown.
http://textmethod.com/wiki/ReStructuredTextToolsForGedit#preview-plugin

Quick Highlight Mode

Mudar o tipo de highlight do documento que está sendo editado nunca foi tão simples. Basta pressionar Ctrl+Shift+H e digitar as primeiras letras do formato.
http://simplesideias.com.br/quick-highlight-mode/

RubyDoc

Exibe a documentação do Ruby na barra lateral.
http://grad.icmc.usp.br/~vinibf/rubyide/

Smart Spaces

Trata tabulações — espaços e tabs — como se fosse um único caracter. Ótimo para quem trabalha com tabulações por espaço.
http://live.gnome.org/Gedit

SnapOpen

Diálgo de arquivos semelhante ao existente no Textmate. Permite buscas por expressão regular.
http://www.upperbound.net/upperbound/show/SnapOpen+plugin+for+Gedit

Snippets

Trechos de códigos adicionados através de disparadores — palavra-chave ou atalho de teclado — que aumentam de maneira estúpida a produtividade.
http://live.gnome.org/Gedit/Plugins/Snippets

Terminal

Exibe um terminal no painel inferior.
http://live.gnome.org/Gedit

Tab Coverter

Converte espaços para tab e vice-versa.
http://www.stambouliote.de/projects/gedit_plugins.html

Tabulation

Força tabulação para arquivos PHP, Ruby e Python. Outros documentos utilizam o padrão definido nas preferências.
http://simplesideias.com.br/gedit-e-tabulacao-por-arquivo/

Instalando tudo isso

Para instalar todos esses plugins e ainda ter um highlight todo modificado, siga os passos abaixo.

Tema

Baixe o arquivo gconf.tar.gz e extraia seus arquivos para ~/.gconf/apps/, substituindo o diretório "gedit-2", caso ele já exista. Veja como deve ser a estrutura de diretórios.

Estrutura de diretórios das configurações GConf do gEdit

As cores foram retiradas do próprio Textmate, e ficaram muito legais. Não apliquei para todas as linguagens, mesmo porque não uso todas. Mas Ruby/RHTML, PHP, CSS, Python, Javascript e HTML estão devidamente formatados.

Após copiar os arquivos rode o comando kill -HUP `pidof gconfd-2` para recarregar as configurações do GConf.

Tema do gEdit baseado no Textmate

Plugins

Instale os plugins que já vem no pacote do gEdit com o comando abaixo:

$~ sudo aptitude install gedit-plugins

Depois, baixe o arquivo plugins.tar.gz e extraia os arquivos para ~/.gnome2/gedit/, substituindo os diretórios, caso existam. Veja como deve ser a estrutura de diretórios.

Estrutura de diretórios de plugins do gEdit

Para sugestões e dúvidas, poste um comentário! :)