title: Why ARGV.shift in rails startup script
body: <p>The start-up script for rails has the following code:</p>
  
  <pre><code>require 'rubygems'
  
  version = "&gt;= 0"
  
  if ARGV.first
    str = ARGV.first
    str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
    if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then
      version = $1
      ARGV.shift
    end
  end
  
  gem 'railties', version
  load Gem.bin_path('railties', 'rails', version)
  </code></pre>
  
  <p>Why are we doing <code>ARGV.shift</code> ? Is it just a canonical way of dealing with ARGV after we have consumed an argument or do we need to do it for some reason?  </p>