<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RubyRescue &#187; Uncategorized</title>
	<atom:link href="http://www.rubyrescue.com/blog/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rubyrescue.com/blog</link>
	<description>begin..rescue..end</description>
	<lastBuildDate>Mon, 19 Jul 2010 14:46:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>RubyRescue has office space available</title>
		<link>http://www.rubyrescue.com/blog/2010/07/19/rubyrescue-has-office-space-available/</link>
		<comments>http://www.rubyrescue.com/blog/2010/07/19/rubyrescue-has-office-space-available/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 14:46:48 +0000</pubDate>
		<dc:creator>chad</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rubyrescue.com/blog/?p=106</guid>
		<description><![CDATA[RubyRescue has limited space available starting August 1st - a common area with a desk and multiple internet connections, and a cozy private office. ]]></description>
			<content:encoded><![CDATA[<p>RubyRescue has limited space available starting August 1st &#8211; a common area with a desk and multiple internet connections, and a cozy private office. We&#8217;re a group of developers, mostly focused on the same technologies, all in one space, near Parque Las Heras. A lot of ideas, projects, and opportunities turn up by working near each other &#8211; if you are interested, let us know.  Contact martina@inakanetworks.com or 15.6940.7097&#8230; </p>
]]></content:encoded>
			<wfw:commentRss>http://www.rubyrescue.com/blog/2010/07/19/rubyrescue-has-office-space-available/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Take the time to disable SSH password auth while you are reading this.</title>
		<link>http://www.rubyrescue.com/blog/2010/07/19/take-the-time-to-disable-ssh-password-auth-while-you-are-reading-this/</link>
		<comments>http://www.rubyrescue.com/blog/2010/07/19/take-the-time-to-disable-ssh-password-auth-while-you-are-reading-this/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 12:55:59 +0000</pubDate>
		<dc:creator>chad</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rubyrescue.com/blog/?p=102</guid>
		<description><![CDATA[A client had a new hire start this week, let&#8217;s call him (or his login) &#8216;ted&#8217;. Ted was issued a new account on production servers with a simple password, and was told to login, upload a public key, and change his password. Ted did this, but didn&#8217;t change his password for a few hours. Within [...]]]></description>
			<content:encoded><![CDATA[<p>A client had a new hire start this week, let&#8217;s call him (or his login) &#8216;ted&#8217;. </p>
<p>Ted was issued a new account on production servers with a simple password, and was told to login, upload a public key, and change his password. Ted did this, but didn&#8217;t change his password for a few hours. Within this few hour window, every server with his account was compromised and an IRC server was installed. </p>
<p>The rest of the server was locked down so no other accounts or data were accessed, but the resource consumption from IRC clients connecting to the machine caused serious problems with the server for a number of hours. </p>
<p>9 hours &#8211; Total downtime.<br />
4 hours &#8211; Time from hack to Rackspace noticing the servers were down, even though the client pays for URL monitoring.</p>
<p><strong>Lessons learned</strong></p>
<p>1. DO NOT use password auth on public servers, or setup a strong password policy that root can&#8217;t get around &#8211; someone can get lazy.<br />
2. DO NOT trust Rackspace URL monitoring to alert you to a downtime problem &#8211; setup your own monitoring suite and alert/escalation plan. Use Rackspace monitoring as a backup only.<br />
3. Remember that just having access to a user-account with no sudo powers is enough to bring down a server if some aspect of server resources (file handles, ports, memory, disk space, etc) are over-utilized.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rubyrescue.com/blog/2010/07/19/take-the-time-to-disable-ssh-password-auth-while-you-are-reading-this/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migrating Rails to Unicorn from Phusion Passenger</title>
		<link>http://www.rubyrescue.com/blog/2010/06/23/migrating-rails-to-unicorn-from-phusion-passenger/</link>
		<comments>http://www.rubyrescue.com/blog/2010/06/23/migrating-rails-to-unicorn-from-phusion-passenger/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 13:42:26 +0000</pubDate>
		<dc:creator>chad</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rubyrescue.com/blog/?p=94</guid>
		<description><![CDATA[Unicorn increases our application's throughput, and allows for seamless zero-downtime deploys.]]></description>
			<content:encoded><![CDATA[<p>Ruby Rescue uses <a href="http://unicorn.bogomips.org/">unicorn</a> for all of our deployed Ruby applications. Chris Wanstrath promoted it in a <a href="http://github.com/blog/517-unicorn">blog post</a> on github, and we decided soon after to give it a shot. Because it&#8217;s based on mongrel, it takes a reliable and well-tested app server and bolts a ruby layer on top that handles restarts, adding and removing workers, and uses unix sockets to wait for requests.</p>
<blockquote><p>There&#8217;s a <a href="http://tomayko.com/writings/unicorn-is-unix">good article</a> by Ryan Tomayko on Unicorn and the reasons why it&#8217;s &#8220;Unixyness&#8221; is a feature. If you&#8217;re a long-time unix user, you won&#8217;t find much to be revolutionary. If you&#8217;re a web-developer without a CS-background, he covers how unix fundamentals make Unicorn more reliable.</p></blockquote>
<p>Before Unicorn we were running Passenger and apache, and we decided to switch to unicorn and nginx at the same time. It takes a bit more work to setup unicorn than passenger, but we&#8217;ve found the reliability to be worth it.</p>
<ul>
<li>gem install unicorn</li>
<li>create a unicorn.rb file like this</li>
</ul>
<pre name='code' class='ruby'>
rails_env = ENV['RAILS_ENV'] || 'production'

worker_processes 3

preload_app true

timeout 75

socket_path = '/var/www/APPLICATION/shared/sockets/unicorn.sock'
pid_path = '/var/www/APPLICATION/shared/pids/unicorn.pid'

listen socket_path, :backlog => 2048
pid pid_path

# http://www.rubyenterpriseedition.com/faq.html#adapt_apps_for_cow
if GC.respond_to?(:copy_on_write_friendly=)
  GC.copy_on_write_friendly = true
end

before_fork do |server, worker|
  old_pid = RAILS_ROOT + '/tmp/pids/unicorn.pid.oldbin'
  if File.exists?(old_pid) &#038;&#038; server.pid != old_pid
    begin
      Process.kill("QUIT", File.read(old_pid).to_i)
    rescue Errno::ENOENT, Errno::ESRCH
    end
  end
end

after_fork do |server, worker|
  ActiveRecord::Base.establish_connection

  begin
    uid, gid = Process.euid, Process.egid
    user, group = 'admin', 'admin'
    target_uid = Etc.getpwnam(user).uid
    target_gid = Etc.getgrnam(group).gid
    worker.tmp.chown(target_uid, target_gid)
    if uid != target_uid || gid != target_gid
      Process.initgroups(user, target_gid)
      Process::GID.change_privilege(target_gid)
      Process::UID.change_privilege(target_uid)
    end
  rescue => e
    raise e
  end
end
</pre>
<ul>
<li> Your deploy.rb will get a bit more complicated as it needs to send the proper signal to the Unicorn master to signal it to reload the workers.</li>
</ul>
<pre class='ruby' name='code'>
namespace :deploy do
  task :stop, :roles =&gt; :app do
  run "cd #{current_path} &amp;&amp; kill -QUIT `cat tmp/pids/unicorn.pid`"
end 

task :start, :roles =&gt; :app do
  run "cd #{current_path} &amp;&amp; /opt/ruby/bin/unicorn_rails -c config/unicorn.rb -E production -D"
end

desc "restart unicorn"
task :restart, :roles =&gt; :web do
  run "cd #{current_path}; [ -f tmp/pids/unicorn.pid ] &amp;&amp; kill -USR2 `cat tmp/pids/unicorn.pid` || /opt/ruby/bin/unicorn_rails -c config/unicorn.rb -E production -D"
end
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.rubyrescue.com/blog/2010/06/23/migrating-rails-to-unicorn-from-phusion-passenger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RubyRescue looking for a developer</title>
		<link>http://www.rubyrescue.com/blog/2010/04/14/rubyrescue-looking-for-a-developer/</link>
		<comments>http://www.rubyrescue.com/blog/2010/04/14/rubyrescue-looking-for-a-developer/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 13:52:07 +0000</pubDate>
		<dc:creator>martina</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rubyrescue.com/blog/?p=90</guid>
		<description><![CDATA[Ruby Rescue is looking for a full-time developer who knows Ruby on Rails. If you have experience with Ruby on Rails, want to work on interesting projects, don&#8217;t mind learning a bit of Erlang, and have at least intermediate English language skills, we would like to talk with you. We&#8217;re looking only for people who [...]]]></description>
			<content:encoded><![CDATA[<p>Ruby Rescue is looking for a full-time developer who knows Ruby on Rails. If you have experience with Ruby on Rails, want to work on interesting projects, don&#8217;t mind learning a bit of Erlang, and have at least intermediate English language skills, we would like to talk with you. We&#8217;re looking only for people who can work full-time in our offices in Palermo. Send us your CV to martina@rubyrescue.com or tweet @rubyrescue. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.rubyrescue.com/blog/2010/04/14/rubyrescue-looking-for-a-developer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby Rescue is looking for a designer</title>
		<link>http://www.rubyrescue.com/blog/2010/03/10/ruby-rescue-is-looking-for-a-designer/</link>
		<comments>http://www.rubyrescue.com/blog/2010/03/10/ruby-rescue-is-looking-for-a-designer/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 14:32:23 +0000</pubDate>
		<dc:creator>martina</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[job-offer]]></category>
		<category><![CDATA[web-designer]]></category>

		<guid isPermaLink="false">http://www.rubyrescue.com/blog/?p=85</guid>
		<description><![CDATA[RubyRescue, creator of high-traffic, user-centered websites, is looking for a web designer to join our team. If you know Photoshop, HTML, CSS, and you can prove it with a solid portfolio, contact us. We&#8217;re a small group of hacker/entrepreneurs working on technology projects and we need good, responsible and motivated people to join our team. [...]]]></description>
			<content:encoded><![CDATA[<p>RubyRescue, creator of high-traffic, user-centered websites, is looking for a web designer to join our team. If you know Photoshop, HTML, CSS, and you can prove it with a solid portfolio, contact us. We&#8217;re a small group of hacker/entrepreneurs working on technology projects and we need good, responsible and motivated people to join our team. Most of our projects are based on Ruby on Rails, our team is from all over the world, and you would help shape the look and feel of our projects. Please send us an email with a CV, background and portfolio samples.  Contact: martina@rubyrescue.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rubyrescue.com/blog/2010/03/10/ruby-rescue-is-looking-for-a-designer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tango Rails After Office &#8211; Buenos Aires &#8211; Wed 17 Feb @ 7:30 in Palermo Soho at Sullivans</title>
		<link>http://www.rubyrescue.com/blog/2010/02/09/tango-rails-after-office-buenos-aires-730-in-palermo-soho-at-sullivans/</link>
		<comments>http://www.rubyrescue.com/blog/2010/02/09/tango-rails-after-office-buenos-aires-730-in-palermo-soho-at-sullivans/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 02:30:40 +0000</pubDate>
		<dc:creator>chad</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[meetup]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.rubyrescue.com/blog/?p=81</guid>
		<description><![CDATA[Tango Rails meets for drinks monthly - this month we're at Sullivan's Pub, Wednesday 17 Feb at 7:30 in Palermo.]]></description>
			<content:encoded><![CDATA[<p>Tango Rails esta juntando para tomar unas cervezas y charlar sobre Ruby on Rails, Sinatra y mas&#8230;  Es un after muy informal y bueno para conocer gente jugando con las mismas tecnologías.</p>
<p>Tango Rails is meeting for some drinks and to chat about Ruby on Rails, Sinatra or other interesting things happening with web frameworks and Ruby these days. It&#8217;s a very informal after office and a great place to meet people in person working on interesting projects.</p>
<p><a href="http://www.facebook.com/event.php?eid=289026474371">Link to the Facebook Invite</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rubyrescue.com/blog/2010/02/09/tango-rails-after-office-buenos-aires-730-in-palermo-soho-at-sullivans/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>moving your wordpress blog from the root to a subdirectory</title>
		<link>http://www.rubyrescue.com/blog/2009/06/17/moving-your-wordpress-blog-from-the-root-to-a-subdirectory/</link>
		<comments>http://www.rubyrescue.com/blog/2009/06/17/moving-your-wordpress-blog-from-the-root-to-a-subdirectory/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 10:32:38 +0000</pubDate>
		<dc:creator>chad</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[moving]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.rubyrescue.com/blog/?p=62</guid>
		<description><![CDATA[Here&#8217;s how I did it: mysqldump -uroot -p rubyrescue &#124; sed 's#rubyrescue.com#rubyrescue.com/blog#g' &#62; temp.sql mysql -uroot -p rubyrescue &#60; temp.sql The only other item was dealing with permalinks. The error handler for lighttpd was set to look for index.php in the root. I had to change that to look for it in /blog.]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s how I did it:</p>
<pre class="sql" name="code">mysqldump -uroot -p rubyrescue | sed
's#rubyrescue.com#rubyrescue.com/blog#g' &gt; temp.sql
mysql -uroot -p rubyrescue &lt; temp.sql</pre>
<p>The only other item was dealing with permalinks. The error handler for lighttpd was set to look for index.php in the root. I had to change that to look for it in /blog. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.rubyrescue.com/blog/2009/06/17/moving-your-wordpress-blog-from-the-root-to-a-subdirectory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>heroku is my favorite deployment environment now</title>
		<link>http://www.rubyrescue.com/blog/2009/05/07/heroku-is-my-favorite-deployment-environment-now/</link>
		<comments>http://www.rubyrescue.com/blog/2009/05/07/heroku-is-my-favorite-deployment-environment-now/#comments</comments>
		<pubDate>Thu, 07 May 2009 13:54:00 +0000</pubDate>
		<dc:creator>chad</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[heroku]]></category>

		<guid isPermaLink="false">http://www.rubyrescue.com/blog/?p=59</guid>
		<description><![CDATA[this article nicely summarizes how great heroku is. i deployed a small personal project with it and LOVE how easy it was. incredible. One concern i have is that without a static IP address, if you have a highly SEO-sensitive application it&#8217;s probably not the best choice, because a static IP is just one of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.infoq.com/news/2009/05/heroku-provisionless-revolution">this article nicely summarizes how great heroku is</a>. i deployed a small personal project with it and LOVE how easy it was. incredible.</p>
<p>One concern i have is that without a static IP address, if you have a highly SEO-sensitive application it&#8217;s probably not the best choice, because a static IP is just one of many factors in your pagerank, but an important one.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rubyrescue.com/blog/2009/05/07/heroku-is-my-favorite-deployment-environment-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Bort application breaks with Rails 2.3.2</title>
		<link>http://www.rubyrescue.com/blog/2009/03/24/new-bort-application-breaks-with-rails-232/</link>
		<comments>http://www.rubyrescue.com/blog/2009/03/24/new-bort-application-breaks-with-rails-232/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 06:07:37 +0000</pubDate>
		<dc:creator>chad</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rubyrescue.com/blog/?p=48</guid>
		<description><![CDATA[In attempting to upgrade a Bort app with Rails 2.3.2, i&#8217;ve found two errors so far: 1. This OpenIdAuthentication error: rake aborted! uninitialized constant Rails::Plugin::OpenIdAuthentication /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:105:in `const_missing' /home/chadd/foo/vendor/plugins/open_id_authentication/init.rb:16:in `evaluate_init_rb' The solution is to comment out line 16 in vendor/plugins/open_id_authentication/init.rb when running rake db:migrate. Updated: Better solution in the comments, thanks! chadd@ubuntu:~/foo$ rake db:migrate --trace (in [...]]]></description>
			<content:encoded><![CDATA[<h2>In attempting to upgrade a Bort app with Rails 2.3.2, i&#8217;ve found two errors so far:</h2>
<p><strong><br />
1. This OpenIdAuthentication error:<br />
</strong></p>
<pre class="bash">rake aborted!
uninitialized constant Rails::Plugin::OpenIdAuthentication
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:105:in `const_missing'
/home/chadd/foo/vendor/plugins/open_id_authentication/init.rb:16:in `evaluate_init_rb'</pre>
<p><span style="text-decoration: line-through;">The solution is to comment out line 16 in vendor/plugins/open_id_authentication/init.rb when running rake db:migrate. </span></p>
<p><strong>Updated: Better solution in the comments, thanks!<br />
</strong></p>
<pre class="bash">chadd@ubuntu:~/foo$ rake db:migrate --trace
(in /home/chadd/foo)
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
==  BortMigration: migrating ==================================================
-- create_table(:sessions)
   -&gt; 0.0017s
-- add_index(:sessions, :session_id)
   -&gt; 0.0004s
-- add_index(:sessions, :updated_at)
   -&gt; 0.0003s
-- create_table(:open_id_authentication_associations, {:force=&gt;true})
   -&gt; 0.0021s
-- create_table(:open_id_authentication_nonces, {:force=&gt;true})
   -&gt; 0.0016s
-- create_table(:users)
   -&gt; 0.0027s
-- add_index(:users, :login, {:unique=&gt;true})
   -&gt; 0.0006s
-- create_table(:passwords)
   -&gt; 0.0017s
-- create_table(:roles)
   -&gt; 0.0007s
-- create_table(:roles_users, {:id=&gt;false})
   -&gt; 0.0007s
==  BortMigration: migrated (0.5497s) =========================================

** Invoke db:schema:dump (first_time)
** Invoke environment
** Execute db:schema:dump
chadd@ubuntu:~/foo$</pre>
<p><strong><br />
2. application.rb was renamed to application_controller.rb in Rails 2.3 and if you don&#8217;t rename it you get this error:<br />
</strong></p>
<pre class="bash">Loading development environment (Rails 2.3.2)
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:443:in `load_missing_constant':NameError: uninitialized constant ApplicationController</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.rubyrescue.com/blog/2009/03/24/new-bort-application-breaks-with-rails-232/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Twitter Ruby function to find all friends and followers of a user</title>
		<link>http://www.rubyrescue.com/blog/2009/03/22/twitter-ruby-function-to-find-all-friends-and-followers-of-a-user/</link>
		<comments>http://www.rubyrescue.com/blog/2009/03/22/twitter-ruby-function-to-find-all-friends-and-followers-of-a-user/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 02:47:57 +0000</pubDate>
		<dc:creator>chad</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rubyrescue.com/blog/?p=43</guid>
		<description><![CDATA[The twitter gem doesn&#8217;t do a good job of allowing unauthenticated queries, so I have to make a specific request to the twitter API to do this. If you pass in Scrap.friendsandfollowers(&#8216;rubyrescue&#8217;) you&#8217;ll get about 6000 ids. Anything better than a depth of &#8217;1&#8242; and you&#8217;ll need an un-rate-limited account w/Twitter as it will take [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://twitter.rubyforge.org/rdoc/">twitter gem</a> doesn&#8217;t do a good job of allowing unauthenticated queries, so I have to make a specific request to the twitter API to do this.</p>
<p>If you pass in Scrap.friendsandfollowers(&#8216;rubyrescue&#8217;) you&#8217;ll get about 6000 ids. Anything better than a depth of &#8217;1&#8242; and you&#8217;ll need an un-rate-limited account w/Twitter as it will take more than 100 requests and they limit <a href="http://apiwiki.twitter.com/REST+API+Documentation#BeNicetotheServers">requests</a> to 100/hour. </p>
<pre name="code" class='ruby'>
require 'twitter'
require 'net/http'
require 'json'

class Scrap

  def self.friendsandfollowers(users,depth=0,type = :all)
    users = [users] unless users.is_a?(Array)

    puts "at level #{depth}"

    newusers = []
    [:friends,:followers].each do |t|
      if [:all,t].include?(type)
        users.each() do |u|
          puts "looking for #{t.to_s.pluralize} of #{u}"
          newusers += JSON.parse(Net::HTTP.get(URI.parse("http://twitter.com/#{t}/ids/#{u}.json")))
        end
      end
    end

    newusers.uniq!

    if depth == 0
      return newusers
    else
      newusers.each() do |u|
        users += self.friendsandfollowers(u,depth-1,type)
      end
      return users.uniq
    end

  end

end
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.rubyrescue.com/blog/2009/03/22/twitter-ruby-function-to-find-all-friends-and-followers-of-a-user/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
