rails的启动脚本具有以下代码:
require 'rubygems'
version = ">= 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)
我们为什么要ARGV.shift
?在我们消费争论之后,或者我们是否因某种原因需要这样做时,它只是处理ARGV的规范方式吗?
答案 0 :(得分:1)
这很可能是因为Rails使用ARGV
来读取自己的命令行参数。如果启动脚本在启动Rails之前未能从ARGV
删除其参数(第一个),Rails会抱怨意外的第一个参数,并且可能会中止。