Archive for the 'ruby' Category

Get HTTP Headers in Ruby

Ein kleiner Schnipsel, um nur den Header eines HTTP Aufrufes zu erhalten.

url = URI.parse('http://manuel.funkensturm.de/')
req = Net::HTTP::Get.new(url.path)
res = Net::HTTP.start(url.host, url.port) { |http| http.request_head('/feed/') }
res.to_yaml

Interessant sind in meinen Augen folgende Werte:

>> res['last-modified']
=> "Tue, 11 Aug 2009 16:09:01 GMT"
>> res['content-type']
=> "application/rss+xml; charset=\"UTF-8\""
>> res['etag']
=> "\"ca39ca8e3c9d3b858ef0d711956e00ad\""

über last-modified oder den etag kann man dann schauen, ob man den Feed abholt oder die Aktion durchführt…

HowTo: ImageMagick + RMagick via Macports für Tiger

Nach dem ich nun auch RMagick für ein aktuelles Projekt brauchte, dachte ich ich nehm einfach die Anleitung von hier (ok steht ja schon im Posttitel ist für Leopard und nicht für Tiger) Das hat natürlich nicht funktioniert und mich min. 2 h gekostet. Deshalb hier die Anleitung für Mac OS X Tiger:

Dauert ewig, für ImageMagick wird erst mal das ganze XFree86 Zeug und noch sonstige Sachen runter geladen. RMagick muss dann noch die ganzen Fonts einbinden, das dauert auch…


sudo port install ImageMagick
sudo port install libwmf
sudo port install lcms
sudo port install ghostscript
sudo gem install rmagick -y

Das Problem war einfach, dass die 3 anderen Port-Installationen gefehlt haben. Ich glaub es lag eigentlich nur an der fehlenden ghostscript Installation.

Dank geht hier noch hin, da gab es die Lösung.

Ruby on Rails: String manipulation

Es gibt einige Sachen, die ich gerne mit Strings machen möchte. Aber natürlich ist nicht ALLES in Rails schon drin. Also habe ich mir mit einem Plugin wie folgt geholfen.

z. B.: “2″.numstring? gibt mir an, ob der string nur Ziffern enthält.

/vendor/plugins/future/init.rb

require 'string_manipulation'

/vendor/plugins/future/lib/string_manipulation.rb

require 'digest/sha1'
module StringManipulation
 
  # Remove ALL unneccessary whitespaces from string
  #    "   hello   world   " #=> "hello world"
  def strip_all
    self.gsub(/ +/, ' ').strip.chomp
  end
 
  # Remove everything that is not a-z or 0-9 or space
  def strip_illegal
    self.gsub(/[^a-zA-Z0-9 ]/, '')
  end
 
  # Returns the basename of a file
  def strip_extention
    self.gsub(/(\.(.*))$/,'')
  end
 
  # Strips RAILS_ROOT/public from string
  def url_from_path
    self.gsub("#{RAILS_ROOT}/public", '')
  end
 
  # Strips RAILS_ROOT from string
  def root_from_path
    self.gsub("#{RAILS_ROOT}", '')
  end
 
  # Hashes a string with SHA1
  def hashed
    Digest::SHA1.hexdigest(self)
  end
 
  # Make a nice downcase keyword list as string, seperated by single spaces
  #    keyword_list("   My §$% KEY   wordlist   ") #=> "my key wordlist"
  def keywordlist
    self.strip_illegal.downcase.strip_all
  end
 
  # Checks if a string contains only numerical characters
  def numstring?
    self =~ /^\d+(\.\d+|\d*)$/
  end
 
end
 
class String
  include StringManipulation
end

Als Unterfunktion von Object sind die Funktionen überall verfügbar. Sehr praktisch.