<?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>My name is Pavel. I’m Ruby developer from Kiev, Ukraine.


Track Christian Artists on Billboard Charts with Chartianity
</description><title>pahanix &amp; IT</title><generator>Tumblr (3.0; @pahanix)</generator><link>http://pahanix.tumblr.com/</link><item><title>Clear your logs automatically in development when they are too large.</title><description>&lt;p&gt;&lt;pre&gt;# config/initializers/clear_logs.rb

# This snippet simply clears your logs when they are too large.
# Large logs mean looooong search in TextMate. You know it :)
# Every time you run rails server or rails console it checks log sizes 
# and clears the logs for you if necessary.

if Rails.env.development?
  MAX_LOG_SIZE = 2.megabytes
  
  logs = File.join(Rails.root, 'log', '*.log')
  if Dir[logs].any? {|log| File.size?(log).to_i &amp;gt; MAX_LOG_SIZE }
    $stdout.puts "Runing rake log:clear"
    `rake log:clear`
  end 
end
&lt;/pre&gt;
&lt;pre&gt;&lt;a href="http://gist.github.com/885671"&gt;&lt;a href="http://gist.github.com/885671"&gt;http://gist.github.com/885671&lt;/a&gt;&lt;/a&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;strong&gt;UPD: It will delete production logs if you mistakenly run something in dev mode on production&lt;/strong&gt;&lt;/pre&gt;&lt;/p&gt;</description><link>http://pahanix.tumblr.com/post/4067956443</link><guid>http://pahanix.tumblr.com/post/4067956443</guid><pubDate>Thu, 24 Mar 2011 21:25:00 +0200</pubDate><category>rails</category><category>ruby</category><category>tips</category></item><item><title>Interesting commits #1</title><description>&lt;p&gt;Devise. &lt;a href="https://github.com/plataformatec/devise/commit/dd721f18570d4fdf3d24dc64b575f2f05e75edde"&gt;[dd721f] Use secure compare as well.&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;# constant-time comparison algorithm to prevent timing attacks
def self.secure_compare(a, b)
  return false unless a.present? &amp;amp;&amp;amp; b.present?
  return false unless a.bytesize == b.bytesize
  l = a.unpack "C#{a.bytesize}"

  res = 0
  b.each_byte { |byte| res |= byte ^ l.shift }
  res == 0
end&lt;/pre&gt;
&lt;p&gt;In short, a timing attack uses statistical analysis of how long it takes your application to do something in order to learn something about the data it’s operating on. For &lt;a href="http://en.wikipedia.org/wiki/HMAC"&gt;HMACs&lt;/a&gt;, this means using the amount of time your application takes to compare a given value with a calculated value to learn information about the calculated value.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://codahale.com/a-lesson-in-timing-attacks/"&gt; A Lesson In Timing Attacks&lt;/a&gt;&lt;/p&gt;</description><link>http://pahanix.tumblr.com/post/3423221606</link><guid>http://pahanix.tumblr.com/post/3423221606</guid><pubDate>Mon, 21 Feb 2011 15:06:21 +0200</pubDate><category>devise</category><category>ruby</category></item><item><title>git was compiled without libcurl support.</title><description>&lt;p&gt;If you get error &amp;#8220;&lt;strong&gt;git was compiled without libcurl support&lt;/strong&gt;&amp;#8221; when deploying it probably means that you&amp;#8217;ve added a git submodule using http protocol.&lt;/p&gt;
&lt;pre&gt;git submodule add &lt;strong&gt;http&lt;/strong&gt;://github.com/[repo].git
&lt;/pre&gt;
&lt;p&gt;Open your .gitmodules file and replace &lt;strong&gt;http&lt;/strong&gt;://github.com/[repo].git with &lt;strong&gt;git&lt;/strong&gt;://github.com/[repo].git&lt;/p&gt;
&lt;p&gt;Next time you add a submodule use command like this:&lt;/p&gt;
&lt;pre&gt;git submodule add &lt;strong&gt;git&lt;/strong&gt;://github.com/[repo].git
&lt;/pre&gt;</description><link>http://pahanix.tumblr.com/post/1228989991</link><guid>http://pahanix.tumblr.com/post/1228989991</guid><pubDate>Sat, 02 Oct 2010 19:52:00 +0300</pubDate><category>git</category><category>libcurl</category><category>git submodule</category></item><item><title>APIDock from command line</title><description>&lt;p&gt;&lt;a href="http://milandobrota.tumblr.com/post/1032486214/bash-command-from-searching-apidock-ruby-ruby-on-rails-r"&gt;milandobrota&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ruby on Rails developers spend a lot of time in console.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function api() { google-chrome "http://apidock.com/$1/search?query=$2" ;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;added to your &lt;em&gt;.bashrc&lt;/em&gt; file will allow you to search Ruby/Ruby on Rails/Rspec documentation on APIDock directly from the console.&lt;/p&gt;
&lt;p&gt;Usage:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;api [ruby|rails|rspec] method_name&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;api rails link_to&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;A better way is to search by default in rails and specify ruby|rspec only if needed.&lt;/p&gt;
&lt;pre&gt;function apidock() {
  if [ $1 = 'ruby' ] || [ $1 = 'rspec' ]; then
    open "http://apidock.com/$1/search?query=$2" ;
  else
    open "http://apidock.com/rails/search?query=$1";
  fi
}
&lt;/pre&gt;</description><link>http://pahanix.tumblr.com/post/1035915726</link><guid>http://pahanix.tumblr.com/post/1035915726</guid><pubDate>Mon, 30 Aug 2010 11:44:48 +0300</pubDate><category>ruby</category><category>bash</category><category>apidock</category></item><item><title>Radiant: No such file or directory - db/schema.rb</title><description>&lt;p&gt;If you clone a repository with Radiant and while running&lt;/p&gt;
&lt;pre&gt;rake db:bootstrap
&lt;/pre&gt;
&lt;p&gt;you get an error like this&lt;/p&gt;
&lt;pre&gt;rake aborted! 
No such file or directory - /path-to-you-project/db/schema.rb
&lt;/pre&gt;
&lt;p&gt;Just create a &lt;strong&gt;db/&lt;/strong&gt; folder inside your application&lt;/p&gt;</description><link>http://pahanix.tumblr.com/post/944543977</link><guid>http://pahanix.tumblr.com/post/944543977</guid><pubDate>Fri, 13 Aug 2010 03:14:00 +0300</pubDate><category>radiant</category><category>ruby</category></item><item><title>How to disable Adobe Reader Safari plugin</title><description>&lt;p&gt;&lt;span&gt;
&lt;h3&gt;&lt;span&gt;On Mac OSX, the default thing that happens when you click a PDF link in Safari is that it is displayed, quickly and efficiently, with the &amp;#8220;Preview&amp;#8221; tool.&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;Unfortunately, if you download and install Adobe&amp;#8217;s own &amp;#8220;Reader&amp;#8221; software, it changes Safari&amp;#8217;s behaviour to use the crap slow-loading slow-displaying Adobe tool instead. Granted, it can do some other things like PDF forms, but for most PDFs it just gets in the way.&lt;/p&gt;
&lt;p&gt;I couldn&amp;#8217;t find out from the web how to remove this behaviour without uninstalling the Reader (which you need to have around sometimes), but I worked it out, so here&amp;#8217;s how - just delete this file from your hard drive: /Library/Internet Plug-Ins/AdobePDFViewer.plugin&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.mcld.co.uk/blog/blog.php?110"&gt;&lt;a href="http://www.mcld.co.uk/blog/blog.php?110"&gt;http://www.mcld.co.uk/blog/blog.php?110&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;</description><link>http://pahanix.tumblr.com/post/698817514</link><guid>http://pahanix.tumblr.com/post/698817514</guid><pubDate>Tue, 15 Jun 2010 01:27:26 +0300</pubDate><category>safari</category><category>pdf</category><category>adobe</category></item><item><title>How a little comma in ruby code can be a pain in the neck</title><description>&lt;p&gt;Let assume that you transform a hash&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  :a =&amp;gt; 1,
  :b =&amp;gt; 2
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;into local variables somewhere in your code and forget to remove a little comma after one line&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;a = 1,
b = 2&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You still have a valid ruby code but it produces something unexpected!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;a # =&amp;gt; [1,2]
b # =&amp;gt; 2&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Why? Because of the comma ruby uses &lt;a href="http://ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html#UC"&gt;multiple assignment&lt;/a&gt; operator to assign values. Let write the code into one line to clarify what happens here.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;a = 1, b = 2
a = 1, (b = 2)
a = 1, 2
a # =&amp;gt; [1,2]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next time you see an unexpected array, search for a comma!&lt;/p&gt;</description><link>http://pahanix.tumblr.com/post/515127485</link><guid>http://pahanix.tumblr.com/post/515127485</guid><pubDate>Mon, 12 Apr 2010 09:52:06 +0300</pubDate><category>ruby</category><category>comma</category><category>multiple assignment</category><category>parallel assignment</category></item><item><title>Pure RSpec</title><description>&lt;a href="http://pure-rspec-scotruby.heroku.com"&gt;Pure RSpec&lt;/a&gt;: &lt;p&gt;RT &lt;a href="http://twitter.com/kpumuk/status/11384809627"&gt;@kpumuk&lt;/a&gt;: Wow, so many new things about RSpec &lt;a href="http://pure-rspec-scotruby.heroku.com/"&gt;http://pure-rspec-scotruby.heroku.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;P.S. Use arrows to navigate through the presentation&lt;/p&gt;</description><link>http://pahanix.tumblr.com/post/487336436</link><guid>http://pahanix.tumblr.com/post/487336436</guid><pubDate>Wed, 31 Mar 2010 23:36:00 +0300</pubDate><category>rspec</category></item><item><title>Let Hoptoad know about your failed rake tasks</title><description>&lt;p&gt;If you use Hoptoad and run rake tasks from cron &lt;strong&gt;you won&amp;#8217;t receive any error messages&lt;/strong&gt; until you call Hoptoad notifier explicitly.&lt;/p&gt;
&lt;p&gt;The correct way to do that is to call: &lt;code&gt;HoptoadNotifier.notify(e)&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;task :taskname do
  begin
    # ...
  rescue Exception =&amp;gt; e
    HoptoadNotifier.notify(e)
    raise # to show error in console
  end
end
&lt;/code&gt;
&lt;/pre&gt;</description><link>http://pahanix.tumblr.com/post/474827464</link><guid>http://pahanix.tumblr.com/post/474827464</guid><pubDate>Fri, 26 Mar 2010 16:28:00 +0200</pubDate><category>hoptoad</category><category>rake task</category></item><item><title>How to display .gitignore files in Textmate</title><description>&lt;a href="http://twitter.com/kpumuk/status/11027708190"&gt;How to display .gitignore files in Textmate&lt;/a&gt;: &lt;p&gt;&lt;img height="482" width="530" src="http://img.skitch.com/20100325-jfgaua916651p86f7mnfn1xnpy.png"/&gt;&lt;/p&gt;
&lt;p&gt;RT &lt;a href="http://twitter.com/kpumuk/status/11027708190"&gt;@kpumuk&lt;/a&gt; How to display .gitignore files in Textmate &lt;a target="_blank" href="http://skitch.com/kpumuk/n5s9j/display-.gitignore-file-in-textmate"&gt;&lt;a href="http://skitch.com/kpumuk/n5s9j/display-.gitignore-file-in-textmate"&gt;http://skitch.com/kpumuk/n5s9j/display-.gitignore-file-in-textmate&lt;/a&gt;&lt;/a&gt; &lt;a title="#tmtricks" href="http://twitter.com/search?q=%23tmtricks"&gt;#tmtricks&lt;/a&gt;&lt;/p&gt;</description><link>http://pahanix.tumblr.com/post/472290331</link><guid>http://pahanix.tumblr.com/post/472290331</guid><pubDate>Thu, 25 Mar 2010 12:47:36 +0200</pubDate><category>tmtrics</category><category>textmate</category><category>gitignore</category></item><item><title>Rails, Redis, Resque and Cucumber</title><description>&lt;p&gt;If you have a cucumber feature which depends on a resque worker make sure that&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;the resque worker is running in &lt;strong&gt;&amp;#8220;cucumber&amp;#8221; environment&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;transactions are turned off&lt;/strong&gt; for the feature by &lt;code&gt;&lt;a href="http://wiki.github.com/aslakhellesoy/cucumber/browsers-and-transactions"&gt;@no-txn&lt;/a&gt;&lt;/code&gt; tag&lt;/li&gt;
&lt;/ol&gt;</description><link>http://pahanix.tumblr.com/post/471010403</link><guid>http://pahanix.tumblr.com/post/471010403</guid><pubDate>Thu, 25 Mar 2010 00:09:00 +0200</pubDate><category>resque</category><category>rails</category><category>cucumber</category></item><item><title>Cucumber - undefined method `fork='</title><description>&lt;pre&gt;$ rake cucumber
undefined method `fork=' for #&amp;lt;Cucumber::Rake::Task:0x3521fa4&amp;gt;
&lt;/pre&gt;
&lt;p&gt;If updating &lt;code&gt;rspec, rspec-rails&lt;/code&gt; and &lt;code&gt;cucumber&lt;/code&gt; gems doesn&amp;#8217;t help. Probably you have an old cucumber gem installed&lt;/p&gt;
&lt;p&gt;Try to remove it&lt;/p&gt;
&lt;pre&gt;[sudo] gem uninstall aslakhellesoy-cucumber&lt;/pre&gt;</description><link>http://pahanix.tumblr.com/post/468361782</link><guid>http://pahanix.tumblr.com/post/468361782</guid><pubDate>Tue, 23 Mar 2010 20:31:00 +0200</pubDate><category>cucumber</category><category>undefined method fork=</category></item><item><title>Outside-In Development with Cucumber at Mountain West RubyConf...</title><description>&lt;embed src="http://mwrc2009.confreaks.com/player.swf" height="380" width="640" allowscriptaccess="always" allowfullscreen="true" flashvars="file=http%3A%2F%2Fmwrc2009.confreaks.com%2Fvideos%2F14-mar-2009-15-00-bdd-with-cucumber-ben-mabey-small.mp4&amp;image=images%2F14-mar-2009-15-00-bdd-with-cucumber-ben-mabey-preview.png&amp;plugins=viral-1"&gt;&lt;/embed&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://mwrc2009.confreaks.com/14-mar-2009-15-00-bdd-with-cucumber-ben-mabey.html"&gt;Outside-In Development with Cucumber&lt;/a&gt; at Mountain West RubyConf 2009 (Ben Mabey)&lt;/p&gt;</description><link>http://pahanix.tumblr.com/post/465470438</link><guid>http://pahanix.tumblr.com/post/465470438</guid><pubDate>Mon, 22 Mar 2010 13:35:00 +0200</pubDate><category>bdd</category><category>cucumber</category></item><item><title>Hoptoad and rescue_from</title><description>&lt;a href="http://help.hoptoadapp.com/faqs/troubleshooting-2/notifier-plugin-troubleshooting"&gt;Hoptoad and rescue_from&lt;/a&gt;: &lt;p&gt;&lt;strong&gt;I’m using rescue_from in my controller, but now I don’t see the exceptions in Hoptoad. Whazzup with that?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hoptoad uses &lt;code&gt;alias_method_chain&lt;/code&gt; to hook into the &lt;code&gt;rescue_action_in_public&lt;/code&gt; method.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Overrides the rescue_action method in ActionController::Base, 
# but does not inhibit any custom processing that is defined 
# with Rails 2's exception helpers.
def rescue_action_in_public_with_hoptoad exception
  notify_hoptoad(exception) unless ignore?(exception)
  rescue_action_in_public_without_hoptoad(exception)
end&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;rescue_from&lt;/code&gt; system in Rails actually catches the exceptions before &lt;code&gt;rescue_action_in_public&lt;/code&gt; happens. The upshot is that if you want to see those exceptions in Hoptoad, you’ll need to explicitly send them along in your rescue_from method using &lt;code&gt;notify_hoptoad(exception)&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rescue_from SillyError, :with =&gt; :render_silly_error

def render_silly_error(e)
  notify_hoptoad(e)
  render :template =&gt; 'i_blowzed_up'
end&lt;/code&gt;&lt;/pre&gt;</description><link>http://pahanix.tumblr.com/post/465379187</link><guid>http://pahanix.tumblr.com/post/465379187</guid><pubDate>Mon, 22 Mar 2010 12:17:52 +0200</pubDate><category>rails</category><category>hoptoad</category><category>rescue_from</category></item><item><title>IRHG - Integrated Ruby Hacker's Guide</title><description>&lt;a href="http://www.hawthorne-press.com/WebPage_RHG.html"&gt;IRHG - Integrated Ruby Hacker's Guide&lt;/a&gt;: &lt;blockquote&gt;The RHG is a book that explains how the ruby interpreter (the official C implementation of the &lt;a&gt;Ruby language&lt;/a&gt;) works internally.&lt;/blockquote&gt;
&lt;p&gt;It is partially translated from Japanese. &lt;a href="http://rhg.rubyforge.org/"&gt;Official RHG&lt;/a&gt; contains only 4 chapters.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The &lt;a href="http://www.hawthorne-press.com/WebPage_RHG.html"&gt;IRHG&lt;/a&gt; Project has been significantly improved by the integration of the Ruby Forge Translation Documents. The two projects have been merged and have provided a improved format, especially with the addition of color graphics.&lt;/p&gt;
&lt;p&gt;All front-end pages and chapters 1 through 10, and chapter 18 have been completed.&lt;/p&gt;
&lt;p&gt;Chapter11 is partially completed.&lt;/p&gt;
&lt;p&gt;Part of chapter 11, chapters 12 through 17, and chapters 19 and 20 are presently in machine translated form. Due to the use of Google Translation API’s,  these are much more readable than previously.&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://pahanix.tumblr.com/post/455515473</link><guid>http://pahanix.tumblr.com/post/455515473</guid><pubDate>Thu, 18 Mar 2010 02:59:00 +0200</pubDate><category>RHG</category><category>IRGH</category><category>ruby hacker's guide</category><category>ruby</category></item><item><title>YQL Geo Library (pure JavaScript)</title><description>&lt;a href="http://isithackday.com/hacks/geo/yql-geo-library/"&gt;YQL Geo Library (pure JavaScript)&lt;/a&gt;: &lt;p&gt;geolocation, reverse geocoding, content analysis&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UPD &lt;/strong&gt;Other&lt;strong&gt; &lt;a href="http://lin-ear-th-inking.blogspot.com/2010/03/open-source-geocoders.html"&gt;Open-Source&lt;/a&gt; &lt;a href="http://lin-ear-th-inking.blogspot.com/2010/03/more-open-source-geocoders.html"&gt;Geocoders &lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description><link>http://pahanix.tumblr.com/post/455472229</link><guid>http://pahanix.tumblr.com/post/455472229</guid><pubDate>Thu, 18 Mar 2010 02:37:00 +0200</pubDate><category>geo</category><category>javascript</category></item><item><title>Javascript charting libraries</title><description>&lt;a href="http://www.alsonkemp.com/tools/highcharts-javascript-charting-library/"&gt;Javascript charting libraries&lt;/a&gt;: &lt;h3&gt;Open Source&lt;/h3&gt;
&lt;p&gt;&lt;a target="_blank" href="http://bluff.jcoglan.com"&gt;Bluff&lt;/a&gt; : Ruby’s &lt;a target="_blank" href="http://nubyonrails.com/pages/gruff"&gt;Gruff&lt;/a&gt; ported to JS.  Looks pretty straightforward.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://g.raphaeljs.com/"&gt;gRaphael&lt;/a&gt; : built on the awesome Raphael JS vector graphics library.  Limited functionality, but that’ll change.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://dragan.yourtree.org/code/canvas-3d-graph/"&gt;Canvas3D&lt;/a&gt; : super cool, but not sure if it’s ready for a production site…&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.jqplot.com"&gt;jqPlot&lt;/a&gt; : charting for jQuery.  I’m neither pro- nor con-jQuery, so I’m not sure that I’d pick a jQuery-centric library.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.liquidx.net/plotkit/"&gt;PlotKit&lt;/a&gt; : dependent on MochiKit.&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://code.google.com/p/flot/"&gt;Flot&lt;/a&gt; : charting for jQuery.  Again, since I use different JS libraries in different circumstances/apps, I’m not excited about having to pull in jQuery, but Flot looks nice.&lt;/p&gt;</description><link>http://pahanix.tumblr.com/post/446332987</link><guid>http://pahanix.tumblr.com/post/446332987</guid><pubDate>Sun, 14 Mar 2010 01:41:40 +0200</pubDate><category>chart</category><category>javascript charts</category></item><item><title>Shadow Art</title><description>&lt;a href="http://beautifuldecay.com/2010/03/10/shadow-art/"&gt;Shadow Art&lt;/a&gt;: &lt;p&gt;&lt;img height="376" width="520" src="http://beautifuldecay.com/wp-content/uploads/2010/03/tim-noble-and-sue-webster-real-life-is-rubbish.jpg"/&gt;&lt;/p&gt;</description><link>http://pahanix.tumblr.com/post/445941351</link><guid>http://pahanix.tumblr.com/post/445941351</guid><pubDate>Sat, 13 Mar 2010 21:47:18 +0200</pubDate><category>shadow art</category></item><item><title>Rails "Good Touch"/"Bad Touch"</title><description>&lt;a href="http://blog.codecrate.com/2010/03/rails-good-touchbad-touch.html"&gt;Rails "Good Touch"/"Bad Touch"&lt;/a&gt;: &lt;p&gt;Did you know that useful little method &lt;code&gt;ActiveRecord::Base#touch&lt;/code&gt; will fire all of your &lt;code&gt;after_save&lt;/code&gt; callbacks? &lt;/p&gt;</description><link>http://pahanix.tumblr.com/post/445127242</link><guid>http://pahanix.tumblr.com/post/445127242</guid><pubDate>Sat, 13 Mar 2010 11:34:40 +0200</pubDate><category>rails</category><category>rails touch</category></item><item><title>Credit Card Test Cases (Google Checkout XML API)</title><description>&lt;a href="http://code.google.com/apis/checkout/developer/Google_Checkout_XML_API_Credit_Card_Test_Cases.html"&gt;Credit Card Test Cases (Google Checkout XML API)&lt;/a&gt;: &lt;p&gt;&lt;blockquote&gt;All of the credit card numbers below are randomly generated numbers. In addition, none of the credit card numbers has the same last four digits as any other credit card number. This ensures that when you select a credit card to complete an order, you can easily associate a test credit card with a particular test&lt;/blockquote&gt;&lt;/p&gt;</description><link>http://pahanix.tumblr.com/post/443210161</link><guid>http://pahanix.tumblr.com/post/443210161</guid><pubDate>Fri, 12 Mar 2010 14:11:00 +0200</pubDate><category>cc</category><category>test credit card</category></item></channel></rss>
