vim-ruby-2007.05.07 bin/install.rb学习 (二)
前言:
a brief:
写博客,有的写就写,没的写,别呻吟
一个人遇到的问题,别人也可能遇到
一个人感兴趣的问题,别人也可能感兴趣
解剖一只麻雀,看看~~
细分代码:
看:
class Env
#
#Returns :UNIX or :WINDOWS, according to CONFIG[ 'host_os' ] and $option[:windows].
#
def Env.determine_target_os
os = CONFIG['host_os']
if os =~ /mswin/ or $option[:windows]
return :WINDOWS
else
return :UNIX
end
end
end
几个问题:
1、为什么Env.determine_target_os要带Env?
2、:WINDOWS前面的":"什么意思啊?
3、CONFIG哪里来的?看上去像是个HASH对象,包含了一个ruby cofigure information
4、$option什么啊?哪里来?有什么?
第2个:
不知道,以后可能会知道,
测试例子:
a = :windows
puts a == "windows" #false
表明 :windows不是一个字符串
第3个:
看:
require 'rbconfig'
include Config
这两行,肯定是ruby的配置文件环境信息,以哈希对象CONFIG(常量吗?Y,你没看人家大写啊?)来表示。不信你试试:
CONFIG["haha"] = "kidding"
结果: 一切正常;(这个?哦?CONFIG是不可变的,不代表CONFIG指向的东西不可变啊)
如果运行
AA = 1
AA = 2
结果:报警,运行
再运行
HA = Hash.new
HB = Hash.new
HA["haha"] = "kidding"
HA = HB
结果:报警(Already initialized constant HA),接着运行
运行:
ha = Hash.new
hb = Hash.new
ha["haha"] = "kidding"
ha = hb
结果:正常
运行:
HA = Hash.new
CONFIG = HA
结果:结果:正常 (晕倒,CONFIG也可变,这个比较危险了,不过我想不会有人想去修改这个玩吧,除了正常修改之外)
CONFIG的性质就测到这里,看看内容哦
运行:
CONFIG.keys.each {|key| puts "#{key}:/t/t#{CONFIG[key]}/n"}
结果:
有119行,其中有几行(反正CONFIG['host_os']有了)
---------------------------------------------------------------
host_os: mswin32
build: i686-pc-mswin32
host: i686-pc-mswin32
COMPILE_C: cl -nologo $(INCFLAGS) -MD -Zi -O2b2xg- -G6 -c -Tc$(<:/=/)
DLDFLAGS: -link -incremental:no -debug -opt:ref -opt:icf -dll $(LIBPATH) -def:$(DEFFILE) -implib:$(*F:.so=)-i386-mswin32.lib -pdb:$(*F:.so=)-i386-mswin32.pdb
build_os: mswin32
ruby_install_name: ruby
--------------------------------------------------------------
那么到底CONFIG信息是怎么得到的呢?这个很复杂,可以看ruby安装目录下的文件,我是没看明白,好像是通过configure shell编程得到的,太复杂,不是我短期能搞定的。 C U later~~
运行puts $option.class
可知:$option 是个全局变量NilClass,即没有初始化的对象
怎么来的?ruby环境中来。
到底怎么来的?我不知道。