<?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</title>
	<atom:link href="http://www.rubyrescue.com/blog/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>2</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>2</slash:comments>
		</item>
		<item>
		<title>cat /proc/cpuinfo or Don&#8217;t Trust Your Cores To Rackspace, Part I</title>
		<link>http://www.rubyrescue.com/blog/2009/10/27/cat-proccpuinfo-or-dont-trust-your-cores-to-rackspace-part-i/</link>
		<comments>http://www.rubyrescue.com/blog/2009/10/27/cat-proccpuinfo-or-dont-trust-your-cores-to-rackspace-part-i/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 02:01:48 +0000</pubDate>
		<dc:creator>chad</dc:creator>
				<category><![CDATA[deployment]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[unicorn]]></category>

		<guid isPermaLink="false">http://www.rubyrescue.com/blog/?p=73</guid>
		<description><![CDATA[We&#8217;ve been running a pretty high traffic site on one big server for more than a year and a half. The site was originally PHP, but about four months ago we migrated the site to Rails. The Rails migration has been relatively smooth, and we now are serving more than 9 sites (mostly branding and [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.rubyrescue.com/blog/wp-content/uploads/2009/10/doggiewithwheels.jpg" alt="doggiewithwheels" title="doggiewithwheels" width="468" height="301" class="alignleft size-full wp-image-78" />We&#8217;ve been running a pretty high traffic site on one big server for more than a year and a half. The site was originally PHP, but about four months ago we migrated the site to Rails. The Rails migration has been relatively smooth, and we now are serving more than 9 sites (mostly branding and some content differences between them) on one server.</p>
<p>The server has the whole stack &#8211; Apache, Passenger, MySQL, however once we migrated to Rails we simply had to start thinking about performance in a way we haven&#8217;t before. I&#8217;m not going to argue that this is a reason not to use Rails &#8211; I believe that if we were to have moved to Symfony or another PHP framework we would have been dealing with the same issues &#8211; but there are more moving parts in the migrated application and the complexity of deployment means more time is spent thinking about the server than we would want.</p>
<p>When the server was purchased, we asked for a 2-Proc RAID 5 box with 4 GB of memory. The client gets a lot of traffic and is further sensitive to the perceived overhead of multiple box management vs &#8216;one big box&#8217;. That&#8217;s fine with me, we setup one box and let it roll. However we didn&#8217;t exactly request a 4 CPU box &#8211; we actually started with a 2 CPU box with 2GB of memory and then decided to upgrade to bigger hardware after only a few weeks with the smaller box.  </p>
<p>No problem &#8211; Rackspace took the machine down, swapped the motherboard, added the memory and we were good.</p>
<p>Fast forward to the Rails upgrade 1.5 years later. The box performance has generally been fine but in the back of my mind something wasn&#8217;t quite right about the actual server. Should i have benchmarked and solved this nagging feeling? Probably, but i&#8217;m not as familiar with Redhat as Ubuntu/Debian and so part of my feeling that it wasn&#8217;t performing as fast as it should i blamed on something related to RHEL4. But it&#8217;s a 4 CPU box and it has lots of memory, Rails should be fine with Apache and Passenger.</p>
<p><strong>But it wasn&#8217;t. </strong></p>
<p>We had some long running requests &#8211; Ruby seemed to get backed up behind &#8211; something? No problem, let&#8217;s make sure we&#8217;re doing everything we can to enable page caching &#8211; ok page level caching pretty much solved any performance issues. But still &#8211; deployments using capistrano clear the cache and the process of rebuilding up to 5,000 pages in the filesystem wasn&#8217;t fast. Deployments at particular times are out. Performance is good but not great, but not enough of a problem to cause anyone to question the configuration of the server. But that &#8220;PHP Feeling&#8221; of being able to deploy a change and have it instantly available just wasn&#8217;t there. This wouldn&#8217;t be a problem if the team wasn&#8217;t used to this flexibility of making changes at any moment, and I wasn&#8217;t happy with having to make an excuse for moving to Rails and ending up with a less flexible operation.</p>
<p>Our concerns, and experiences with other deployments, lead us to think that Apache/Passenger was the source of some of the slowness, so we decided to move to unicorn and nginx. The converstion from Apache to Nginx freed up a lot of memory, and unicorn&#8217;s graceful restart capability smoothed out performance during deployments. In part 2 we&#8217;ll cover in detail this conversion. It was a total success &#8211; overall throughput went up by a factor of 3, and deployments are now much smoother.</p>
<p><strong>However, were things as fast as they could be?</strong></p>
<p>In investigating an unrelated issue, we followed up with Rackspace on a Kernel patch that couldn&#8217;t be applied to our server. One of the technicians immediately realized why &#8211; we were not running the SMP kernel. For almost two years our 4 CPU Racehorse has been hopping on one leg around the track. Let&#8217;s look at the numbers: 9 am this morning, we switched to the proper kernel:<br />
<img src="http://www.rubyrescue.com/blog/wp-content/uploads/2009/10/Picture-15.png" alt="1 CPU vs 4 CPUs" title="1 CPU vs 4 CPUs" width="758" height="280" class="alignnone size-full wp-image-74" /></p>
<p>Every request is now almost twice as fast. Apache Bench says our throughput is 3.5 times greater. That stings a little. It feels a bit like i just <a href="http://www.amazon.com/Sea-Gray-Around-World-Confederate/dp/0809085046">piloted the Shenandoah 22,000 miles around the globe</a>, winning every battle, only to find out that the team <a href="http://en.wikipedia.org/wiki/American_Civil_War">lost the war</a> a few months before&#8230;</p>
<p>What should we have done differently? None of us are truly full-time &#8216;operations guys&#8217; &#8211; but we&#8217;re all really good developers and &#8216;good enough&#8217; at operations. We have no problem with configuring linux init files, syslogs, virtual ethernet interfaces, iptables, benchmarking tools, netcat, you name it &#8211; we&#8217;re pretty confident with the toolset. So why did we never cat /proc/cpuinfo ? And why did it take Rackspace 22 months to figure out that we were running a misconfigured server? Why did I have a spidey-sense (or is that spidy (spidie?) -sense?) that something was wrong with this server? And why didn&#8217;t I track it down as thoroughly as I could have? Why did I focus on the software vs hardware? But shouldn&#8217;t I be able to trust that Rackspace has that covered? What is the proper remedy for this failure from Rackspace? (They refunded the difference in price between the requested and &#8216;actual&#8217; hardware without hesitation.) Would we have made the same software changes if we were getting &#8216;good enough&#8217; performance from an actual 4 CPU system? Would we just be happily running on Apache/Passenger? </p>
<p>Answers to some of those questions in part two&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rubyrescue.com/blog/2009/10/27/cat-proccpuinfo-or-dont-trust-your-cores-to-rackspace-part-i/feed/</wfw:commentRss>
		<slash:comments>4</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>14</slash:comments>
		</item>
	</channel>
</rss>

