<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>

CodeHighlighter.addStyle(“ruby”,{
	comment : {
		exp  : /#[^\n]+/
	},
	brackets : {
		exp  : /\(|\)/
	},
	string : {
		exp  : /’[^’\]*(\.[^’\]*)*’|”[^”\]*(\.[^”\]*)*”/
	},
	keywords : {
		exp  : /\b(do|end|class|def|if|module|yield|then|else|for|until|unless|while|elsif|case|when|break|retry|redo|rescue|require|raise|begin|eval)\b/
	},
	more_keywords : {
		exp  : /\s?(=&gt;|=)\s?/
	},
	symbol : {
	  exp : /(:[‘“A-Za-z0-9_!?]+|nil)/
	},
              digit : {
		exp  : /\b([0-9]+)\b/
	},
	variable : {
	  exp : /(\|)([^\|]+?)(\|)/
	},
	more_variable : {
	  exp: /\b(self)\b/
	}
});

CodeHighlighter.addStyle(“js”,{
	comment : {
		exp  : /(\/\/[^\n]*(\n|$))|(\/\*[^*]*\*+([^\/][^*]*\*+)*\/)/
	},
	brackets : {
		exp  : /\(|\)/
	},
	string : {
		exp  : /’[^’\]*(\.[^’\]*)*’|”[^”\]*(\.[^”\]*)*”/
	},
	keywords : {
		exp  : /\b(arguments|break|case|continue|default|delete|do|else|false|for|function|if|in|instanceof|new|null|return|switch|this|true|typeof|var|void|while|with)\b/
	},
	global : {
		exp  : /\b(toString|valueOf|window|element|prototype|constructor|document|escape|unescape|parseInt|parseFloat|setTimeout|clearTimeout|setInterval|clearInterval|NaN|isNaN|Infinity)\b/
	}
});


  var _gaq = _gaq || [];
  _gaq.push([‘_setAccount’, ‘UA-12630687-2’]);
  _gaq.push([‘_trackPageview’]);

  (function() {
    var ga = document.createElement(‘script’); ga.type = ‘text/javascript’; ga.async = true;
    ga.src = (‘https:’ == document.location.protocol ? ‘https://ssl’ : ‘http://www’) + ‘.google-analytics.com/ga.js’;
    var s = document.getElementsByTagName(‘script’)[0]; s.parentNode.insertBefore(ga, s);
  })();</description><title>Random Ruby Thoughts</title><generator>Tumblr (3.0; @alfuken)</generator><link>http://alfuken.tumblr.com/</link><item><title>Deploy Rails+Unicorn+Nginx+God using Mina</title><description>&lt;a href="http://alfuken.github.com/mina-rails-unicorn-nginx-god/"&gt;Deploy Rails+Unicorn+Nginx+God using Mina&lt;/a&gt;: &lt;p&gt;No Cap, go Mina!&lt;/p&gt;</description><link>http://alfuken.tumblr.com/post/30046558140</link><guid>http://alfuken.tumblr.com/post/30046558140</guid><pubDate>Thu, 23 Aug 2012 22:44:31 +0400</pubDate></item><item><title>"Some like TDD, others prefer BDD, I prefer BMDD. Black Magic Driven Development that is."</title><description>“Some like TDD, others prefer BDD, I prefer BMDD. Black Magic Driven Development that is.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;leprosorium.ru&lt;/em&gt;</description><link>http://alfuken.tumblr.com/post/28051366208</link><guid>http://alfuken.tumblr.com/post/28051366208</guid><pubDate>Thu, 26 Jul 2012 17:05:21 +0400</pubDate></item><item><title>OpenSSL::SSL::SSLError &amp; SSL_set_tlsext_host_name</title><description>&lt;p&gt;In case you&amp;#8217;ve hit &lt;strong&gt;OpenSSL::SSL::SSLError&lt;/strong&gt; or &lt;strong&gt;SSL_set_tlsext_host_name&lt;/strong&gt; error, &lt;strong&gt;and&lt;/strong&gt; you have installed PostgreSQL using official installer - please, read on.&lt;/p&gt;

&lt;p&gt;It seems that official PostgreSQL installer somehow modifies openssl and gems that was built upon it.&lt;/p&gt;
&lt;p&gt;You should try to remove your PG installation completely (you may want to backup your pg data directory first, usually it&amp;#8217;s &amp;#8216;/Library/PostgreSQL/&amp;lt;version&amp;gt;/data&amp;#8217;), and then re-install postgres using &lt;a href="http://mxcl.github.com/homebrew/" title="Homebrew" target="_blank"&gt;Homebrew&lt;/a&gt;. It helped in my case.&lt;/p&gt;
&lt;p&gt;And, if you backed up your data directory, do the following:&lt;/p&gt;
&lt;pre class="ruby"&gt;sudo chmod -R &amp;lt;your_username&amp;gt; &amp;lt;backup_path&amp;gt;&lt;/pre&gt;
&lt;p&gt;Now you can run your PG server with all your data intact:&lt;/p&gt;
&lt;pre class="ruby"&gt;postgres -D &amp;lt;backup_path&amp;gt;&lt;/pre&gt;
&lt;p&gt;Full script for the lazy (it may not be fully working tho, I don&amp;#8217;t remember it completely, so use at your own risk and check every step):&lt;/p&gt;
&lt;pre class="ruby highlines"&gt;sudo chmod -R &amp;lt;your_username&amp;gt; /Library/PostgreSQL/&amp;lt;version&amp;gt;/data
cp /Library/PostgreSQL/&amp;lt;version&amp;gt;/data /usr/local/var/postgres
open /Library/PostgreSQL/9.0/uninstall-postgresql.app
&lt;em&gt;...perform uninstall...&lt;/em&gt;
brew install postgresql # for the install of the latest version. See "man brew" for versions info
createuser
&lt;em&gt;...create postgres user or superuser...&lt;/em&gt;
postgres -D /usr/local/var/postgres/data
&lt;/pre&gt;
&lt;p&gt;&amp;#8230;well, something like that. It should be working now. Good luck!&lt;/p&gt;</description><link>http://alfuken.tumblr.com/post/17152011300</link><guid>http://alfuken.tumblr.com/post/17152011300</guid><pubDate>Mon, 06 Feb 2012 17:20:00 +0400</pubDate></item><item><title>Want to know actual amount of time your tests run?</title><description>&lt;p&gt;Have you often seen this?&lt;/p&gt;
&lt;pre class="ruby"&gt;~/project$ rspec spec/controllers/some_controller.rb
&lt;span class="color_lime"&gt;.......&lt;/span&gt;

Finished in 1.01159 seconds
&lt;span class="color_lime"&gt;7 examples, 0 failures&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Is that supposed to be less than a second? You wish! Actually, your tests will run 20+ seconds or so: launching an instance and preparing stuff for testing is quite time consuming.&lt;/p&gt;
&lt;p&gt;But what if you want to now &lt;em&gt;exactly&lt;/em&gt; how long your tests run? The simplest and quickest solution is to add the following line to your &lt;code&gt;~/.profile&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="ruby"&gt;alias rake="time rake"&lt;/pre&gt;
&lt;p&gt;Your tests will now output something like this:&lt;/p&gt;
&lt;pre class="ruby"&gt;~/project$ rspec spec/controllers/some_controller.rb
&lt;span class="color_lime"&gt;.......&lt;/span&gt;

Finished in 1.01159 seconds
&lt;span class="color_lime"&gt;7 examples, 0 failures&lt;/span&gt;

real	0m28.330s
user	0m18.682s
sys	0m1.886s&lt;/pre&gt;
&lt;p&gt;Not too pretty, but it does the job.&lt;/p&gt;</description><link>http://alfuken.tumblr.com/post/8170461506</link><guid>http://alfuken.tumblr.com/post/8170461506</guid><pubDate>Thu, 28 Jul 2011 17:33:00 +0400</pubDate><category>ruby</category><category>rails</category><category>rspec</category><category>testing</category><category>hack</category></item><item><title>Disable window shadows in Mac OS X</title><description>&lt;p&gt;&lt;em&gt;TL;DR: &lt;a target="_blank" href="http://www.blacktree.com/?nocturne"&gt;Nocturne&lt;/a&gt;, night mode, disable shadows.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Some time ago I&amp;#8217;ve noticed that my screen on MacBook Pro starting to show a horizontal line across the whole screen, left to right, just above the dock. It&amp;#8217;s like, if you leave a monitor turned on for a very long time with high-contrast wallpaper on desktop, image will be burned up on the screen and it will take weeks of white glow to get rid of it.&lt;/p&gt;
&lt;p&gt;Reason for such a weird artifact was found shortly after. If you open 2+ windows on &amp;#8220;full-screen&amp;#8221;, stretched from menu bar to dock, they&amp;#8217;ll be dropping very, very dark and strong shadow. And if you live with that on daily basis (on work I have a browser, code editor, and console stretched at max), and if you have a light wallpaper that contrasts with the shadow, you&amp;#8217;ll have the same problem as I do: usually barely visible (but very annoying when watching movies) contrast dark bar at about 2 inches from the bottom edge of monitor, just above your dock.&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s two solutions to this: 1. don&amp;#8217;t use light wallpapers, instead try some dark ones, at least at bottom part of the screen; 2. Use &lt;a target="_blank" href="http://www.blacktree.com/?nocturne"&gt;Nocturne&lt;/a&gt; to disable shadows. It&amp;#8217;s very easy to get on with it, really.&lt;/p&gt;</description><link>http://alfuken.tumblr.com/post/6101242464</link><guid>http://alfuken.tumblr.com/post/6101242464</guid><pubDate>Thu, 02 Jun 2011 11:29:31 +0400</pubDate><category>mac</category><category>hack</category></item><item><title>Restart all Pow instances</title><description>&lt;p&gt;As I recently switched from Passenger to &lt;a href="http://pow.cx/" target="_blank"&gt;Pow&lt;/a&gt; to serve all my local Rails, Sinatra and Rack projects in development, it became obvious that I need a command to restart ALL Pow instances at once. And instead of doing &lt;code&gt;"touch tmp/restart.txt"&lt;/code&gt; every time in project root, I&amp;#8217;ve ended up with this simple bash alias:&lt;/p&gt;
&lt;pre class="ruby"&gt;alias reall='touch ~/.pow/restart.txt; echo "Touch."'&lt;/pre&gt;
&lt;p&gt;Hope you&amp;#8217;ll find it usefull.&lt;/p&gt;</description><link>http://alfuken.tumblr.com/post/5602090202</link><guid>http://alfuken.tumblr.com/post/5602090202</guid><pubDate>Wed, 18 May 2011 12:16:00 +0400</pubDate><category>bash</category><category>pow</category><category>rails</category><category>sinatra</category></item><item><title>Recursively Setting Deep Hash Value</title><description>&lt;p&gt;&lt;a href="http://ilovemetaprogramming.tumblr.com/post/4608928018" target="_blank"&gt;ilovemetaprogramming&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I’ve always wanted to be able to do something like:&lt;/p&gt;
&lt;pre&gt;&lt;code class="ruby"&gt;my_hash = {}
my_hash["Cloud"]["Stats"]["Strength"] = 100
p my_hash # =&amp;gt; {"Cloud"=&amp;gt;{"Stats"=&amp;gt;{"Strength"=&amp;gt;100}}}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;So I whipped up the code below and now I can!   Metaprogramming wins again!&lt;/p&gt;
&lt;pre&gt;&lt;code class="ruby"&gt;class SuperHash &amp;lt; Hash
  def initialize
    super { |h, k| h[k] = SuperHash.new }
  end
end

sh = SuperHash.new
sh["foo"]["bar"]["baz"] = "wtf"
pp sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;All this does is set the default value for the SuperHash to a new instance of SuperHash. Very…very cool.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://alfuken.tumblr.com/post/4636418561</link><guid>http://alfuken.tumblr.com/post/4636418561</guid><pubDate>Fri, 15 Apr 2011 21:22:00 +0400</pubDate></item><item><title>Photo</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lhopbmhK9k1qcl2rlo1_400.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://alfuken.tumblr.com/post/3699759343</link><guid>http://alfuken.tumblr.com/post/3699759343</guid><pubDate>Mon, 07 Mar 2011 14:02:10 +0300</pubDate></item><item><title>Ruby's "method" method</title><description>&lt;p&gt;Ever wanted to know, where exactly in code a method was defined?&lt;/p&gt;
&lt;pre class="ruby"&gt;&lt;code&gt;&amp;gt;&amp;gt; String.new.method(:underscore).source_location =&amp;gt; ["/path/to/gems/activesupport-3.0.3/lib/active_support/core_ext/string/inflections.rb", 82]&lt;/code&gt;&lt;/pre&gt;</description><link>http://alfuken.tumblr.com/post/3213569554</link><guid>http://alfuken.tumblr.com/post/3213569554</guid><pubDate>Thu, 10 Feb 2011 10:54:00 +0300</pubDate><category>ruby</category><category>gems</category></item><item><title>InnoDB vs MyISAM</title><description>&lt;p&gt;TL;DR: &lt;code&gt;writes.count &amp;gt; reads.count ? InnoDB : MyISAM;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s a lot of articles all over teh internetz about comparing InnoDB vs MyISAM, but this note is rather like &amp;#8216;note to self&amp;#8217;. TL;DR says it all.&lt;/p&gt;
&lt;p&gt;Decision QA, I&amp;#8217;ve found &lt;a target="_blank" href="http://www.mikebernat.com/blog/MySQL_-_InnoDB_vs_MyISAM"&gt;here&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;InnoDB&lt;/strong&gt; if:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;your table is going to be inserted, deleted, and updated much much more than it is going to be selected&lt;/li&gt;
&lt;li&gt;you prefer/require relational database design&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;MyISAM&lt;/strong&gt; if:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;you need full-text search&lt;/li&gt;
&lt;li&gt;disk-space or ram is an issue&lt;/li&gt;
&lt;li&gt;in doubt?..&lt;/li&gt;
&lt;/ul&gt;</description><link>http://alfuken.tumblr.com/post/3213491540</link><guid>http://alfuken.tumblr.com/post/3213491540</guid><pubDate>Thu, 10 Feb 2011 10:43:00 +0300</pubDate><category>database</category><category>mysql</category></item><item><title>Evalulate multiple methods using send method</title><description>&lt;p&gt;Ever wanted to pass a list of methods to an object? Send allows you to call one method on an object, but what if you need to call a few methods depending on object&amp;#8217;s type?&lt;!-- more --&gt;&lt;/p&gt;
&lt;p&gt;I like to be short and straightforward in my speeches, so here&amp;#8217;s the hack of the Object class:&lt;/p&gt;
&lt;pre&gt;&lt;code class="ruby"&gt;class Object
  def sends(method_chain='')
    method_chain = method_chain.to_s
    return self if method_chain.empty?
    self.instance_eval { eval method_chain }
  end

  def try_sends(method_chain='')
    begin
      self.sends method_chain
    rescue NoMethodError
      nil
    end
  end
end&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now you can pass a string as param, which gets evaluated on an object&amp;#8217;s instance.&lt;/p&gt;
&lt;pre&gt;&lt;code class="ruby"&gt;# Example:
methods = "power!(2).div(57).+(12).to_f"
42.instance_eval { eval methods } #=&amp;gt; 42.0

# Real world example:
s = Subject.last
s.sends 'site.country.name' #=&amp;gt; 'United kingdom'

# And in case of possible nils...
s.site.country_id = 0
s.site.save
s = Subject.last
s.try_sends 'site.country.name' #=&amp;gt; nil&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;There is also another way to achieve the same result - passing an array instead of string, or even more complex structures, if needed, but it&amp;#8217;s a matter of taste. I prefer using strings.&lt;/p&gt;
&lt;pre&gt;&lt;code class="ruby"&gt;class Object
  # obj.call_method_chain_array ['method1', 'method2', 'method3', ...]
  def call_method_chain_array(method_chain)
    return self if method_chain.empty?
    method_chain.inject(self){|object,method| object.send(method.intern)}
  end

  # obj.call_method_chain_string 'method1.method2.method3'
  def call_method_chain_string(method_chain)
    return self if method_chain.empty?
    method_chain.split('.').inject(self){|object,method| object.send(method.intern)}
  end
end&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Downside of this approach is that calling send for each method in chain is less effective, depending on chain length: up to 30 times slower on some ActiveRecord objects with many relations. So I&amp;#8217;ll stick with evals.&lt;/p&gt;
&lt;p&gt;&lt;em&gt; PS. This hack is already included in my &lt;a href="http://alfuken.tumblr.com/post/941348281/corx-handful-set-of-ruby-core-extensions" target="_blank"&gt;CorX gem&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</description><link>http://alfuken.tumblr.com/post/984154787</link><guid>http://alfuken.tumblr.com/post/984154787</guid><pubDate>Sat, 21 Aug 2010 01:43:00 +0400</pubDate><category>hack</category><category>ruby</category><category>gems</category></item><item><title>CorX – Handful set of ruby Core eXtensions</title><description>&lt;p&gt;Just published a handful set of extensions to core ruby classes I use every day. Got tired of copying them over and over again, so I&amp;#8217;ve just packaged &amp;#8216;em as a gem and published.&lt;/p&gt;
&lt;p&gt;They are not yet tested nor well documented, so if you&amp;#8217;re willing to help, I will be thankful for any assistance. Just drop a line to &lt;em&gt;alfuken&lt;/em&gt; on gmail box.&lt;/p&gt;
&lt;p&gt;Links:  &lt;a title="Download gem" href="http://rubygems.org/gems/corx" target="_blank"&gt;Gem&lt;/a&gt;, &lt;a title="See the source code" href="http://github.com/alfuken/corx" target="_blank"&gt;Github&lt;/a&gt;&lt;/p&gt;</description><link>http://alfuken.tumblr.com/post/941348281</link><guid>http://alfuken.tumblr.com/post/941348281</guid><pubDate>Thu, 12 Aug 2010 12:22:00 +0400</pubDate><category>ruby</category><category>hack</category><category>gems</category></item><item><title>Markaby is better than Haml!</title><description>&lt;a href="http://markaby.github.com/markaby"&gt;Markaby is better than Haml!&lt;/a&gt;: &lt;p&gt;And it looks and feels much better in ruby-ish world (and code), rather than python-ish haml. And what is most important — it’s &lt;strong&gt;readable&lt;/strong&gt;.&lt;/p&gt;</description><link>http://alfuken.tumblr.com/post/874637632</link><guid>http://alfuken.tumblr.com/post/874637632</guid><pubDate>Thu, 29 Jul 2010 13:56:00 +0400</pubDate><category>ruby</category><category>markaby</category><category>haml</category></item><item><title>JavaScript Console without browser</title><description>&lt;p&gt;Ever wanted to run/test/debug JavaScript in console without having to launch your web browser? Well, now you can!&lt;/p&gt;
&lt;p&gt;Run this line of code in your terminal and you&amp;#8217;re good to go (just make sure /opt/local/bin is in your PATH system variable):&lt;/p&gt;
&lt;pre&gt;sudo ln -s /System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc /opt/local/bin&lt;/pre&gt;
&lt;p&gt;Restart your Terminal, and type &lt;strong&gt;&lt;code&gt;jsc --help&lt;/code&gt;&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;$ jsc --help
Usage: jsc [options] [files] [-- arguments]
  -d         Dumps bytecode (debug builds only)
  -e         Evaluate argument as script code
  -f         Specifies a source file (deprecated)
  -h|--help  Prints this help message
  -i         Enables interactive mode (default if no files are specified)
  -s         Installs signal handlers that exit on a crash (Unix platforms only)&lt;/pre&gt;
&lt;p&gt;You can eval piece of code when running console:&lt;/p&gt;
&lt;pre&gt;&lt;code class="js"&gt;$ jsc -i -e 'function foo(arg){return arg ? arg+"ed!" : "bar!";}' -i
&amp;gt; foo()
bar!
&amp;gt; foo("baz")
bazed!&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;or even eval whole files (&lt;code&gt;test.js&lt;/code&gt; contains &lt;code&gt;foo()&lt;/code&gt; function from above)&lt;/p&gt;
&lt;pre&gt;&lt;code class="js"&gt;$ jsc -i test.js
&amp;gt; foo("k'")
k'ed!&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&amp;#8217;s it. Have fun!&lt;/p&gt;</description><link>http://alfuken.tumblr.com/post/874621232</link><guid>http://alfuken.tumblr.com/post/874621232</guid><pubDate>Thu, 29 Jul 2010 13:50:00 +0400</pubDate><category>javascript</category><category>mac</category></item><item><title>Upload and download files in Sinatra</title><description>&lt;p&gt;List&lt;/p&gt;
&lt;pre&gt;&lt;code class="ruby"&gt;get '/' do
  list = Dir.glob("./files/*.*").map{|f| f.split('/').last}
  # render list here
end&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Upload&lt;/p&gt;
&lt;pre&gt;&lt;code class="ruby"&gt;post '/' do
  tempfile = params['file'][:tempfile]
  filename = params['file'][:filename]
  File.copy(tempfile.path, "./files/#{filename}")
  redirect '/'
end&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Download&lt;/p&gt;
&lt;pre class="ruby"&gt;&lt;code class="ruby"&gt;get '/download/:filename' do |filename|
  send_file "./files/#{filename}", :filename =&amp;gt; filename, :type =&amp;gt; 'Application/octet-stream'
end&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Delete&lt;/p&gt;
&lt;pre class="ruby"&gt;&lt;code class="ruby"&gt;get '/remove/:filename' do |filename|
  File.delete("./files/#{filename}")
  redirect '/'
end&lt;/code&gt;&lt;/pre&gt;</description><link>http://alfuken.tumblr.com/post/874428235</link><guid>http://alfuken.tumblr.com/post/874428235</guid><pubDate>Thu, 29 Jul 2010 12:28:00 +0400</pubDate><category>ruby</category><category>sinatra</category></item><item><title>A pseudo-intellisense for Textmate</title><description>&lt;a href="http://www.nomedojogo.com/2010/05/17/a-pseudo-intellisense-for-textmate/"&gt;A pseudo-intellisense for Textmate&lt;/a&gt;</description><link>http://alfuken.tumblr.com/post/870986881</link><guid>http://alfuken.tumblr.com/post/870986881</guid><pubDate>Wed, 28 Jul 2010 19:02:00 +0400</pubDate><category>mac</category><category>textmate</category></item><item><title>How to Use Mongrel as default server for Rails 3</title><description>&lt;p&gt;Just add following line to Gemfile:&lt;/p&gt;
&lt;pre class="ruby"&gt;&lt;code class="ruby"&gt;gem "mongrel"&lt;/code&gt;&lt;/pre&gt;</description><link>http://alfuken.tumblr.com/post/870602276</link><guid>http://alfuken.tumblr.com/post/870602276</guid><pubDate>Wed, 28 Jul 2010 16:42:00 +0400</pubDate><category>ruby</category><category>rails</category><category>gems</category></item><item><title>Photo</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_l69lt1Il591qcl2rlo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://alfuken.tumblr.com/post/870368243</link><guid>http://alfuken.tumblr.com/post/870368243</guid><pubDate>Wed, 28 Jul 2010 15:12:00 +0400</pubDate><category>mac</category><category>fun</category></item><item><title>Invoke rake task from within rake task</title><description>&lt;pre&gt;&lt;code class="ruby"&gt;namespace :afternoon do
  task :make_coffee do
    Rake::Task['morning:make_coffee'].invoke
    puts "Ready for the rest of the day!"
  end
end&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Taken from Jason Seifer&amp;#8217;s great &lt;a target="_blank" href="http://jasonseifer.com/2010/04/06/rake-tutorial"&gt;Rake Tutorial&lt;/a&gt;&lt;/p&gt;</description><link>http://alfuken.tumblr.com/post/870075581</link><guid>http://alfuken.tumblr.com/post/870075581</guid><pubDate>Wed, 28 Jul 2010 13:14:00 +0400</pubDate><category>ruby</category><category>rake</category></item><item><title>Foo, bar, and friends.</title><description>&lt;p&gt;&lt;em&gt;When foo, bar, and baz is just not enough. &lt;/em&gt;;)&lt;/p&gt;
&lt;p&gt;Foo, bar, baz, qux, quux, corge, grault, garply, waldo, fred, plugh, xyzzy, thud, wibble, wobble, wubble, flob.&lt;/p&gt;</description><link>http://alfuken.tumblr.com/post/870015866</link><guid>http://alfuken.tumblr.com/post/870015866</guid><pubDate>Wed, 28 Jul 2010 12:50:00 +0400</pubDate></item></channel></rss>
