Class | Gem::ConfigFile |
In: |
lib/rubygems/config_file.rb
|
Parent: | Object |
Store the gem command options specified in the configuration file. The config file object acts much like a hash.
DEFAULT_BACKTRACE | = | false | ||
DEFAULT_BENCHMARK | = | false | ||
DEFAULT_BULK_THRESHOLD | = | 1000 | ||
DEFAULT_VERBOSITY | = | true | ||
DEFAULT_UPDATE_SOURCES | = | true | ||
OPERATING_SYSTEM_DEFAULTS | = | {} | For Ruby packagers to set configuration defaults. Set in rubygems/defaults/operating_system.rb | |
PLATFORM_DEFAULTS | = | {} | For Ruby implementers to set configuration defaults. Set in rubygems/defaults/#{RUBY_ENGINE}.rb | |
CSIDL_COMMON_APPDATA | = | 0x0023 | ||
SHGetFolderPath | = | Win32API.new 'shell32', 'SHGetFolderPath', 'PLPLP', 'L', :stdcall | ||
SHGetFolderPath | = | Win32API.new 'shell32', 'SHGetFolderPath', 'LLLLP', 'L' | ||
SYSTEM_WIDE_CONFIG_FILE | = | File.join system_config_path, 'gemrc' |
args | [R] | List of arguments supplied to the config file object. |
backtrace | [W] | True if we print backtraces on errors. |
benchmark | [RW] | True if we are benchmarking this run. |
bulk_threshold | [RW] | Bulk threshold value. If the number of missing gems are above this threshold value, then a bulk download technique is used. |
hash | [R] | |
home | [RW] | |
path | [RW] | Where to look for gems |
update_sources | [RW] | True if we want to update the SourceInfoCache every time, false otherwise |
verbose | [RW] |
Verbose level of output:
|
Create the config file object. args is the list of arguments from the command line.
The following command line options are handled early here rather than later at the time most command options are processed.
# File lib/rubygems/config_file.rb, line 98 98: def initialize(arg_list) 99: @config_file_name = nil 100: need_config_file_name = false 101: 102: arg_list = arg_list.map do |arg| 103: if need_config_file_name then 104: @config_file_name = arg 105: need_config_file_name = false 106: nil 107: elsif arg =~ /^--config-file=(.*)/ then 108: @config_file_name = $1 109: nil 110: elsif arg =~ /^--config-file$/ then 111: need_config_file_name = true 112: nil 113: else 114: arg 115: end 116: end.compact 117: 118: @backtrace = DEFAULT_BACKTRACE 119: @benchmark = DEFAULT_BENCHMARK 120: @bulk_threshold = DEFAULT_BULK_THRESHOLD 121: @verbose = DEFAULT_VERBOSITY 122: @update_sources = DEFAULT_UPDATE_SOURCES 123: 124: operating_system_config = Marshal.load Marshal.dump(OPERATING_SYSTEM_DEFAULTS) 125: platform_config = Marshal.load Marshal.dump(PLATFORM_DEFAULTS) 126: system_config = load_file SYSTEM_WIDE_CONFIG_FILE 127: user_config = load_file config_file_name.dup.untaint 128: 129: @hash = operating_system_config.merge platform_config 130: @hash = @hash.merge system_config 131: @hash = @hash.merge user_config 132: 133: # HACK these override command-line args, which is bad 134: @backtrace = @hash[:backtrace] if @hash.key? :backtrace 135: @benchmark = @hash[:benchmark] if @hash.key? :benchmark 136: @bulk_threshold = @hash[:bulk_threshold] if @hash.key? :bulk_threshold 137: Gem.sources = @hash[:sources] if @hash.key? :sources 138: @verbose = @hash[:verbose] if @hash.key? :verbose 139: @update_sources = @hash[:update_sources] if @hash.key? :update_sources 140: @path = @hash[:gempath] if @hash.key? :gempath 141: @home = @hash[:gemhome] if @hash.key? :gemhome 142: 143: handle_arguments arg_list 144: end
Return the configuration information for key.
# File lib/rubygems/config_file.rb, line 248 248: def [](key) 249: @hash[key.to_s] 250: end
Set configuration option key to value.
# File lib/rubygems/config_file.rb, line 253 253: def []=(key, value) 254: @hash[key.to_s] = value 255: end
The name of the configuration file.
# File lib/rubygems/config_file.rb, line 162 162: def config_file_name 163: @config_file_name || Gem.config_file 164: end
Delegates to @hash
# File lib/rubygems/config_file.rb, line 167 167: def each(&block) 168: hash = @hash.dup 169: hash.delete :update_sources 170: hash.delete :verbose 171: hash.delete :benchmark 172: hash.delete :backtrace 173: hash.delete :bulk_threshold 174: 175: yield :update_sources, @update_sources 176: yield :verbose, @verbose 177: yield :benchmark, @benchmark 178: yield :backtrace, @backtrace 179: yield :bulk_threshold, @bulk_threshold 180: 181: yield 'config_file_name', @config_file_name if @config_file_name 182: 183: hash.each(&block) 184: end
Handle the command arguments.
# File lib/rubygems/config_file.rb, line 187 187: def handle_arguments(arg_list) 188: @args = [] 189: 190: arg_list.each do |arg| 191: case arg 192: when /^--(backtrace|traceback)$/ then 193: @backtrace = true 194: when /^--bench(mark)?$/ then 195: @benchmark = true 196: when /^--debug$/ then 197: $DEBUG = true 198: else 199: @args << arg 200: end 201: end 202: end
# File lib/rubygems/config_file.rb, line 146 146: def load_file(filename) 147: begin 148: YAML.load(File.read(filename)) if filename and File.exist?(filename) 149: rescue ArgumentError 150: warn "Failed to load #{config_file_name}" 151: rescue Errno::EACCES 152: warn "Failed to load #{config_file_name} due to permissions problem." 153: end or {} 154: end