refrigerator 1.0.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG +20 -0
- data/MIT-LICENSE +1 -1
- data/README.rdoc +61 -43
- data/Rakefile +9 -1
- data/bin/check_require +2 -2
- data/lib/refrigerator.rb +4 -4
- data/module_names/25.txt +287 -0
- data/module_names/26.txt +314 -0
- data/module_names/27.txt +306 -0
- data/module_names/30.txt +313 -0
- data/module_names/31.txt +330 -0
- metadata +28 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 39830c719366bd0e689b7a784879bd834e20f9f410a01aee24adb3bd5b7368ed
|
4
|
+
data.tar.gz: 7fd6dda21287843f916a63283a2aa9178aec16c89fff5c6bbd24b98e9d14ad67
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae3d653e46d339c4b50417de2fff4bb8787c7595fc73ca5d66434533419a6a8afdf262dcac33b8b1e85f9828bcc414a5b96ca100f15fb52c1ca15c54a3aeac5c
|
7
|
+
data.tar.gz: 9a480c31c4a4ffccc58b3ebae576347eae7e70a39ba78978bda81fad767ad098ad2a367d26edcec1b39577a956190a63640c349a8016f3bc0284e38a638bdd82
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,23 @@
|
|
1
|
+
=== 1.4.0 (2021-12-25)
|
2
|
+
|
3
|
+
* Support new classes and modules in Ruby 3.1 (jeremyevans)
|
4
|
+
|
5
|
+
* Support new classes and modules in Ruby 3.0 (jeremyevans)
|
6
|
+
|
7
|
+
=== 1.3.0 (2020-11-17)
|
8
|
+
|
9
|
+
* Support new classes and modules in Ruby 2.7 (jeremyevans)
|
10
|
+
|
11
|
+
=== 1.2.0 (2019-04-11)
|
12
|
+
|
13
|
+
* Support new classes and modules in Ruby 2.6 (jeremyevans)
|
14
|
+
|
15
|
+
=== 1.1.0 (2018-02-16)
|
16
|
+
|
17
|
+
* Support new classes and modules in Ruby 2.5 (jeremyevans)
|
18
|
+
|
19
|
+
* Work when the input field separator is changed from the default (jeremyevans) (#1)
|
20
|
+
|
1
21
|
=== 1.0.0 (2017-02-17)
|
2
22
|
|
3
23
|
* Initial Public Release
|
data/MIT-LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
= Refrigerator
|
2
2
|
|
3
3
|
Refrigerator offers an easy way to freeze all ruby core classes and modules.
|
4
|
-
It's designed to be used in production to make sure that no
|
5
|
-
unexpected changes to core classes or modules at runtime.
|
4
|
+
It's designed to be used in production and when testing to make sure that no
|
5
|
+
code is making unexpected changes to core classes or modules at runtime.
|
6
6
|
|
7
7
|
= Installation
|
8
8
|
|
@@ -25,14 +25,16 @@ After loading all of the code for your application, you can call the
|
|
25
25
|
This will freeze all core classes, so that modifications to them at runtime will
|
26
26
|
raise exceptions.
|
27
27
|
|
28
|
+
In a rack-based application, a good place to call `freeze_core` is at the end of the
|
29
|
+
`config.ru` file.
|
30
|
+
|
28
31
|
You can also pass an :except option to +freeze_core+ with an array of class names not to
|
29
32
|
freeze:
|
30
33
|
|
31
34
|
Refrigerator.freeze_core(:except=>['BasicObject'])
|
32
35
|
|
33
36
|
One reason to exclude certain classes is because you know they will be modified at
|
34
|
-
runtime.
|
35
|
-
as part of template compilation.
|
37
|
+
runtime.
|
36
38
|
|
37
39
|
== check_require
|
38
40
|
|
@@ -49,7 +51,7 @@ The +check_require+ method takes the following options:
|
|
49
51
|
:modules :: Define the given module names before freezing the core (array of symbols)
|
50
52
|
:classes :: Define the given class names before freezing the core (array of symbols
|
51
53
|
or two element arrays with class name symbol and superclass name symbol)
|
52
|
-
:exclude :: Exclude the given class/module names from
|
54
|
+
:exclude :: Exclude the given class/module names from freezing (array of strings)
|
53
55
|
:depends :: Any dependencies to require before freezing the core (array of strings)
|
54
56
|
|
55
57
|
Without any options, +check_require+ will likely raise an exception, as it
|
@@ -78,11 +80,16 @@ And an example using Roda, a ruby web toolkit:
|
|
78
80
|
:classes=>[:Roda]
|
79
81
|
|
80
82
|
Note that many stdlib libraries will fail +check_require+ unless you use the
|
81
|
-
:exclude option, for example, +
|
83
|
+
:exclude option, for example, +date+:
|
84
|
+
|
85
|
+
Refrigerator.check_require 'date',
|
86
|
+
:classes=>[:Date, [:DateTime, :Date]]
|
87
|
+
# Fails due to Time#to_date addition
|
82
88
|
|
83
|
-
Refrigerator.check_require '
|
84
|
-
:classes=>[:
|
85
|
-
|
89
|
+
Refrigerator.check_require 'date',
|
90
|
+
:classes=>[:Date, [:DateTime, :Date]],
|
91
|
+
:exclude=>['Time']
|
92
|
+
# => true
|
86
93
|
|
87
94
|
=== bin/check_require
|
88
95
|
|
@@ -93,21 +100,23 @@ refrigerator ships with a +check_require+ binary that offers access to
|
|
93
100
|
Usage: check_require [options] path
|
94
101
|
|
95
102
|
Options:
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
103
|
+
-m, --modules [Module1,Module2] define given modules under Object before freezing core classes
|
104
|
+
-c [Class1,Class2/SuperclassOfClass2],
|
105
|
+
--classes define given classes under Object before freezing core classes
|
106
|
+
-r, --require [foo,bar/baz] require given libraries before freezing core classes
|
107
|
+
-e, --exclude [Object,Array] exclude given core classes from freezing
|
108
|
+
-h, -?, --help Show this message
|
101
109
|
|
102
110
|
You can use this to easily check ruby libraries for issues when requiring. For example, let's try
|
103
111
|
with +open3+:
|
104
112
|
|
105
113
|
$ bin/check_require open3
|
106
|
-
|
107
|
-
from /
|
108
|
-
from /
|
109
|
-
from /
|
110
|
-
from
|
114
|
+
Traceback (most recent call last):
|
115
|
+
4: from bin/check_require:42:in `<main>'
|
116
|
+
3: from /home/billg/ruby-refrigerator/lib/refrigerator.rb:35:in `check_require'
|
117
|
+
2: from /usr/local/lib/ruby/2.5/rubygems/core_ext/kernel_require.rb:59:in `require'
|
118
|
+
1: from /usr/local/lib/ruby/2.5/rubygems/core_ext/kernel_require.rb:59:in `require'
|
119
|
+
/usr/local/lib/ruby/2.5/open3.rb:32:in `<top (required)>': can't modify frozen #<Class:Object> (FrozenError)
|
111
120
|
$ bin/check_require -m Open3 open3
|
112
121
|
|
113
122
|
As displayed above, open3 does not modify any core classes, beyond defining the +Open3+ module.
|
@@ -115,36 +124,45 @@ As displayed above, open3 does not modify any core classes, beyond defining the
|
|
115
124
|
Let's try with +date+:
|
116
125
|
|
117
126
|
$ bin/check_require date
|
118
|
-
|
119
|
-
from /
|
120
|
-
from /
|
121
|
-
from /usr/local/lib/ruby/2.
|
122
|
-
from /usr/local/lib/ruby/2.
|
123
|
-
from /
|
124
|
-
from
|
125
|
-
|
126
|
-
/
|
127
|
-
|
128
|
-
from /
|
129
|
-
from /
|
130
|
-
from /usr/local/lib/ruby/2.
|
131
|
-
from /
|
132
|
-
from
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
127
|
+
Traceback (most recent call last):
|
128
|
+
6: from bin/check_require:42:in `<main>'
|
129
|
+
5: from /home/billg/ruby-refrigerator/lib/refrigerator.rb:35:in `check_require'
|
130
|
+
4: from /usr/local/lib/ruby/2.5/rubygems/core_ext/kernel_require.rb:59:in `require'
|
131
|
+
3: from /usr/local/lib/ruby/2.5/rubygems/core_ext/kernel_require.rb:59:in `require'
|
132
|
+
2: from /usr/local/lib/ruby/2.5/date.rb:4:in `<top (required)>'
|
133
|
+
1: from /usr/local/lib/ruby/2.5/rubygems/core_ext/kernel_require.rb:59:in `require'
|
134
|
+
/usr/local/lib/ruby/2.5/rubygems/core_ext/kernel_require.rb:59:in `require': can't modify frozen #<Class:Object> (FrozenError)
|
135
|
+
$ bin/check_require -c Date,DateTime/Date date
|
136
|
+
Traceback (most recent call last):
|
137
|
+
6: from bin/check_require:42:in `<main>'
|
138
|
+
5: from /home/billg/ruby-refrigerator/lib/refrigerator.rb:35:in `check_require'
|
139
|
+
4: from /usr/local/lib/ruby/2.5/rubygems/core_ext/kernel_require.rb:59:in `require'
|
140
|
+
3: from /usr/local/lib/ruby/2.5/rubygems/core_ext/kernel_require.rb:59:in `require'
|
141
|
+
2: from /usr/local/lib/ruby/2.5/date.rb:4:in `<top (required)>'
|
142
|
+
1: from /usr/local/lib/ruby/2.5/rubygems/core_ext/kernel_require.rb:59:in `require'
|
143
|
+
/usr/local/lib/ruby/2.5/rubygems/core_ext/kernel_require.rb:59:in `require': can't modify frozen class (FrozenError)
|
144
|
+
$ bin/check_require -c Date,DateTime/Date -e Time date
|
145
|
+
|
146
|
+
The first failure is because +date+ defines the +Date+ and +DateTime+ classes, so you
|
147
|
+
must define those classes first, using a slash to separate DateTime from the superclass
|
148
|
+
Date. Note that it still fails in that case, but it doesn't even tell you why. It turns
|
149
|
+
out the reason is that +date+ also adds +to_date+ and other methods to +Time+, so you
|
150
|
+
need to exclude the freezing of +Time+ as well.
|
140
151
|
|
141
152
|
Here are a couple more examples, using Sequel and Roda:
|
142
153
|
|
143
154
|
bin/check_require -m Sequel -r bigdecimal,date,thread,time,uri sequel
|
144
155
|
bin/check_require -c Roda -r rack,uri,fileutils,set,tmpdir,tempfile,thread,date,time roda
|
145
156
|
|
146
|
-
|
147
|
-
|
157
|
+
== Supporting new ruby minor versions
|
158
|
+
|
159
|
+
The list of constants that +freeze_core+ will freeze are stored in the module_names/*.txt files
|
160
|
+
in the repository, with separate files per ruby minor version. When new ruby minor versions are
|
161
|
+
released, the +module_names+ rake task can be run with the new ruby minor version, and it will
|
162
|
+
generate the appropriate file. This task works by looking at ObjectSpace for all modules, with
|
163
|
+
code similar to:
|
164
|
+
|
165
|
+
ObjectSpace.each_object(Module){|m| p m.name}
|
148
166
|
|
149
167
|
= License
|
150
168
|
|
data/Rakefile
CHANGED
@@ -8,11 +8,19 @@ task :package=>[:clean] do |p|
|
|
8
8
|
sh %{#{FileUtils::RUBY} -S gem build refrigerator.gemspec}
|
9
9
|
end
|
10
10
|
|
11
|
+
### Generate module_names
|
12
|
+
|
13
|
+
desc "Generate module_names/*.txt file for current ruby version"
|
14
|
+
task :module_names do
|
15
|
+
sh "#{FileUtils::RUBY} -e 'a = []; ObjectSpace.each_object(Module){|m| a << m.name.to_s}; File.open(\"module_names/#{RUBY_VERSION[0..2].sub('.', '')}.txt\", \"wb\"){|f| f.write(a.reject{|m| m.empty?}.sort.join(\"\\n\")); f.write(\"\\n\")}'"
|
16
|
+
end
|
17
|
+
|
18
|
+
|
11
19
|
### Specs
|
12
20
|
|
13
21
|
desc "Run specs"
|
14
22
|
task :spec do
|
15
|
-
sh "#{FileUtils::RUBY} test/refrigerator_test.rb"
|
23
|
+
sh "#{FileUtils::RUBY} #{"-w" if RUBY_VERSION >= '3'} test/refrigerator_test.rb"
|
16
24
|
end
|
17
25
|
|
18
26
|
task :default => :spec
|
data/bin/check_require
CHANGED
@@ -20,8 +20,8 @@ options = OptionParser.new do |opts|
|
|
20
20
|
cr_opts[:modules].concat v.split(',').map(&:to_sym)
|
21
21
|
end
|
22
22
|
|
23
|
-
opts.on("-c", "--classes [Class1,Class2]", "define given
|
24
|
-
cr_opts[:classes].concat v.split(',').map(&:to_sym)
|
23
|
+
opts.on("-c", "--classes [Class1,Class2/SuperclassOfClass2]", "define given classes under Object before freezing core classes") do |v|
|
24
|
+
cr_opts[:classes].concat v.split(',').map{|s| s.include?('/') ? s.split('/').map(&:to_sym) : s.to_sym}
|
25
25
|
end
|
26
26
|
|
27
27
|
opts.on("-r", "--require [foo,bar/baz]", "require given libraries before freezing core classes") do |v|
|
data/lib/refrigerator.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# Refrigerator allows for easily freezing core classes and modules.
|
2
2
|
module Refrigerator
|
3
3
|
version_int = RUBY_VERSION[0..2].sub('.', '').to_i
|
4
|
-
version_int =
|
4
|
+
version_int = 31 if version_int > 31
|
5
5
|
|
6
6
|
# Array of strings containing class or module names.
|
7
7
|
CORE_MODULES = File.read(File.expand_path(File.join(File.expand_path(__FILE__), "../../module_names/#{version_int}.txt"))).
|
8
|
-
split.
|
8
|
+
split(/\s+/).
|
9
9
|
select{|m| eval("defined?(#{m})")}.
|
10
10
|
each(&:freeze).
|
11
11
|
freeze
|
@@ -30,8 +30,8 @@ module Refrigerator
|
|
30
30
|
require 'rubygems'
|
31
31
|
Array(opts[:depends]).each{|f| require f}
|
32
32
|
Array(opts[:modules]).each{|m| Object.const_set(m, Module.new)}
|
33
|
-
Array(opts[:classes]).each{|c, *sc| Object.const_set(c, Class.new(sc.empty? ? Object : eval(sc.first)))}
|
34
|
-
freeze_core(:except=>%w'Gem Gem::Specification'+Array(opts[:exclude]))
|
33
|
+
Array(opts[:classes]).each{|c, *sc| Object.const_set(c, Class.new(sc.empty? ? Object : eval(sc.first.to_s)))}
|
34
|
+
freeze_core(:except=>%w'Gem Gem::Specification Gem::Deprecate'+Array(opts[:exclude]))
|
35
35
|
require file
|
36
36
|
end
|
37
37
|
|
data/module_names/25.txt
ADDED
@@ -0,0 +1,287 @@
|
|
1
|
+
ARGF.class
|
2
|
+
ArgumentError
|
3
|
+
Array
|
4
|
+
BasicObject
|
5
|
+
Binding
|
6
|
+
Class
|
7
|
+
ClosedQueueError
|
8
|
+
Comparable
|
9
|
+
Complex
|
10
|
+
Complex::compatible
|
11
|
+
Delegator
|
12
|
+
DidYouMean
|
13
|
+
DidYouMean::ClassNameChecker
|
14
|
+
DidYouMean::ClassNameChecker::ClassName
|
15
|
+
DidYouMean::Correctable
|
16
|
+
DidYouMean::DeprecatedIgnoredCallers
|
17
|
+
DidYouMean::Jaro
|
18
|
+
DidYouMean::JaroWinkler
|
19
|
+
DidYouMean::KeyErrorChecker
|
20
|
+
DidYouMean::Levenshtein
|
21
|
+
DidYouMean::MethodNameChecker
|
22
|
+
DidYouMean::NullChecker
|
23
|
+
DidYouMean::PlainFormatter
|
24
|
+
DidYouMean::SpellChecker
|
25
|
+
DidYouMean::VariableNameChecker
|
26
|
+
Dir
|
27
|
+
EOFError
|
28
|
+
Encoding
|
29
|
+
Encoding::CompatibilityError
|
30
|
+
Encoding::Converter
|
31
|
+
Encoding::ConverterNotFoundError
|
32
|
+
Encoding::InvalidByteSequenceError
|
33
|
+
Encoding::UndefinedConversionError
|
34
|
+
EncodingError
|
35
|
+
Enumerable
|
36
|
+
Enumerator
|
37
|
+
Enumerator::Generator
|
38
|
+
Enumerator::Lazy
|
39
|
+
Enumerator::Yielder
|
40
|
+
Errno
|
41
|
+
Errno::E2BIG
|
42
|
+
Errno::EACCES
|
43
|
+
Errno::EADDRINUSE
|
44
|
+
Errno::EADDRNOTAVAIL
|
45
|
+
Errno::EAFNOSUPPORT
|
46
|
+
Errno::EAGAIN
|
47
|
+
Errno::EALREADY
|
48
|
+
Errno::EAUTH
|
49
|
+
Errno::EBADF
|
50
|
+
Errno::EBADMSG
|
51
|
+
Errno::EBADRPC
|
52
|
+
Errno::EBUSY
|
53
|
+
Errno::ECANCELED
|
54
|
+
Errno::ECHILD
|
55
|
+
Errno::ECONNABORTED
|
56
|
+
Errno::ECONNREFUSED
|
57
|
+
Errno::ECONNRESET
|
58
|
+
Errno::EDEADLK
|
59
|
+
Errno::EDESTADDRREQ
|
60
|
+
Errno::EDOM
|
61
|
+
Errno::EDQUOT
|
62
|
+
Errno::EEXIST
|
63
|
+
Errno::EFAULT
|
64
|
+
Errno::EFBIG
|
65
|
+
Errno::EFTYPE
|
66
|
+
Errno::EHOSTDOWN
|
67
|
+
Errno::EHOSTUNREACH
|
68
|
+
Errno::EIDRM
|
69
|
+
Errno::EILSEQ
|
70
|
+
Errno::EINPROGRESS
|
71
|
+
Errno::EINTR
|
72
|
+
Errno::EINVAL
|
73
|
+
Errno::EIO
|
74
|
+
Errno::EIPSEC
|
75
|
+
Errno::EISCONN
|
76
|
+
Errno::EISDIR
|
77
|
+
Errno::ELOOP
|
78
|
+
Errno::EMEDIUMTYPE
|
79
|
+
Errno::EMFILE
|
80
|
+
Errno::EMLINK
|
81
|
+
Errno::EMSGSIZE
|
82
|
+
Errno::ENAMETOOLONG
|
83
|
+
Errno::ENEEDAUTH
|
84
|
+
Errno::ENETDOWN
|
85
|
+
Errno::ENETRESET
|
86
|
+
Errno::ENETUNREACH
|
87
|
+
Errno::ENFILE
|
88
|
+
Errno::ENOATTR
|
89
|
+
Errno::ENOBUFS
|
90
|
+
Errno::ENODEV
|
91
|
+
Errno::ENOENT
|
92
|
+
Errno::ENOEXEC
|
93
|
+
Errno::ENOLCK
|
94
|
+
Errno::ENOMEDIUM
|
95
|
+
Errno::ENOMEM
|
96
|
+
Errno::ENOMSG
|
97
|
+
Errno::ENOPROTOOPT
|
98
|
+
Errno::ENOSPC
|
99
|
+
Errno::ENOSYS
|
100
|
+
Errno::ENOTBLK
|
101
|
+
Errno::ENOTCONN
|
102
|
+
Errno::ENOTDIR
|
103
|
+
Errno::ENOTEMPTY
|
104
|
+
Errno::ENOTRECOVERABLE
|
105
|
+
Errno::ENOTSOCK
|
106
|
+
Errno::ENOTSUP
|
107
|
+
Errno::ENOTTY
|
108
|
+
Errno::ENXIO
|
109
|
+
Errno::EOPNOTSUPP
|
110
|
+
Errno::EOVERFLOW
|
111
|
+
Errno::EOWNERDEAD
|
112
|
+
Errno::EPERM
|
113
|
+
Errno::EPFNOSUPPORT
|
114
|
+
Errno::EPIPE
|
115
|
+
Errno::EPROCLIM
|
116
|
+
Errno::EPROCUNAVAIL
|
117
|
+
Errno::EPROGMISMATCH
|
118
|
+
Errno::EPROGUNAVAIL
|
119
|
+
Errno::EPROTO
|
120
|
+
Errno::EPROTONOSUPPORT
|
121
|
+
Errno::EPROTOTYPE
|
122
|
+
Errno::ERANGE
|
123
|
+
Errno::EREMOTE
|
124
|
+
Errno::EROFS
|
125
|
+
Errno::ERPCMISMATCH
|
126
|
+
Errno::ESHUTDOWN
|
127
|
+
Errno::ESOCKTNOSUPPORT
|
128
|
+
Errno::ESPIPE
|
129
|
+
Errno::ESRCH
|
130
|
+
Errno::ESTALE
|
131
|
+
Errno::ETIMEDOUT
|
132
|
+
Errno::ETOOMANYREFS
|
133
|
+
Errno::ETXTBSY
|
134
|
+
Errno::EUSERS
|
135
|
+
Errno::EXDEV
|
136
|
+
Errno::NOERROR
|
137
|
+
Exception
|
138
|
+
FalseClass
|
139
|
+
Fiber
|
140
|
+
FiberError
|
141
|
+
File
|
142
|
+
File::Constants
|
143
|
+
File::Stat
|
144
|
+
FileTest
|
145
|
+
Float
|
146
|
+
FloatDomainError
|
147
|
+
FrozenError
|
148
|
+
GC
|
149
|
+
GC::Profiler
|
150
|
+
Gem
|
151
|
+
Gem::BasicSpecification
|
152
|
+
Gem::CommandLineError
|
153
|
+
Gem::ConflictError
|
154
|
+
Gem::Dependency
|
155
|
+
Gem::DependencyError
|
156
|
+
Gem::DependencyRemovalException
|
157
|
+
Gem::DependencyResolutionError
|
158
|
+
Gem::Deprecate
|
159
|
+
Gem::DocumentError
|
160
|
+
Gem::EndOfYAMLException
|
161
|
+
Gem::ErrorReason
|
162
|
+
Gem::Exception
|
163
|
+
Gem::FilePermissionError
|
164
|
+
Gem::FormatException
|
165
|
+
Gem::GemNotFoundException
|
166
|
+
Gem::GemNotInHomeException
|
167
|
+
Gem::ImpossibleDependenciesError
|
168
|
+
Gem::InstallError
|
169
|
+
Gem::InvalidSpecificationException
|
170
|
+
Gem::List
|
171
|
+
Gem::LoadError
|
172
|
+
Gem::MissingSpecError
|
173
|
+
Gem::MissingSpecVersionError
|
174
|
+
Gem::OperationNotSupportedError
|
175
|
+
Gem::PathSupport
|
176
|
+
Gem::Platform
|
177
|
+
Gem::PlatformMismatch
|
178
|
+
Gem::RemoteError
|
179
|
+
Gem::RemoteInstallationCancelled
|
180
|
+
Gem::RemoteInstallationSkipped
|
181
|
+
Gem::RemoteSourceException
|
182
|
+
Gem::Requirement
|
183
|
+
Gem::Requirement::BadRequirementError
|
184
|
+
Gem::RubyVersionMismatch
|
185
|
+
Gem::RuntimeRequirementNotMetError
|
186
|
+
Gem::SourceFetchProblem
|
187
|
+
Gem::SpecificGemNotFoundException
|
188
|
+
Gem::Specification
|
189
|
+
Gem::StubSpecification
|
190
|
+
Gem::StubSpecification::StubLine
|
191
|
+
Gem::SystemExitException
|
192
|
+
Gem::UnsatisfiableDependencyError
|
193
|
+
Gem::VerificationError
|
194
|
+
Gem::Version
|
195
|
+
Hash
|
196
|
+
IO
|
197
|
+
IO::EAGAINWaitReadable
|
198
|
+
IO::EAGAINWaitWritable
|
199
|
+
IO::EINPROGRESSWaitReadable
|
200
|
+
IO::EINPROGRESSWaitWritable
|
201
|
+
IO::WaitReadable
|
202
|
+
IO::WaitWritable
|
203
|
+
IO::generic_readable
|
204
|
+
IO::generic_writable
|
205
|
+
IOError
|
206
|
+
IndexError
|
207
|
+
Integer
|
208
|
+
Interrupt
|
209
|
+
Kernel
|
210
|
+
KeyError
|
211
|
+
LoadError
|
212
|
+
LocalJumpError
|
213
|
+
Marshal
|
214
|
+
MatchData
|
215
|
+
Math
|
216
|
+
Math::DomainError
|
217
|
+
Method
|
218
|
+
Module
|
219
|
+
Monitor
|
220
|
+
MonitorMixin
|
221
|
+
MonitorMixin::ConditionVariable
|
222
|
+
MonitorMixin::ConditionVariable::Timeout
|
223
|
+
NameError
|
224
|
+
NameError::message
|
225
|
+
NilClass
|
226
|
+
NoMemoryError
|
227
|
+
NoMethodError
|
228
|
+
NotImplementedError
|
229
|
+
Numeric
|
230
|
+
Object
|
231
|
+
ObjectSpace
|
232
|
+
ObjectSpace::WeakMap
|
233
|
+
Proc
|
234
|
+
Process
|
235
|
+
Process::GID
|
236
|
+
Process::Status
|
237
|
+
Process::Sys
|
238
|
+
Process::Tms
|
239
|
+
Process::UID
|
240
|
+
Process::Waiter
|
241
|
+
Random
|
242
|
+
Random::Formatter
|
243
|
+
Range
|
244
|
+
RangeError
|
245
|
+
Rational
|
246
|
+
Rational::compatible
|
247
|
+
RbConfig
|
248
|
+
Regexp
|
249
|
+
RegexpError
|
250
|
+
RubyVM
|
251
|
+
RubyVM::InstructionSequence
|
252
|
+
RuntimeError
|
253
|
+
ScriptError
|
254
|
+
SecurityError
|
255
|
+
Signal
|
256
|
+
SignalException
|
257
|
+
SimpleDelegator
|
258
|
+
StandardError
|
259
|
+
StopIteration
|
260
|
+
String
|
261
|
+
StringIO
|
262
|
+
Struct
|
263
|
+
Symbol
|
264
|
+
SyntaxError
|
265
|
+
SystemCallError
|
266
|
+
SystemExit
|
267
|
+
SystemStackError
|
268
|
+
Thread
|
269
|
+
Thread::Backtrace
|
270
|
+
Thread::Backtrace::Location
|
271
|
+
Thread::ConditionVariable
|
272
|
+
Thread::Mutex
|
273
|
+
Thread::Queue
|
274
|
+
Thread::SizedQueue
|
275
|
+
ThreadError
|
276
|
+
ThreadGroup
|
277
|
+
Time
|
278
|
+
TracePoint
|
279
|
+
TrueClass
|
280
|
+
TypeError
|
281
|
+
UnboundMethod
|
282
|
+
UncaughtThrowError
|
283
|
+
UnicodeNormalize
|
284
|
+
Warning
|
285
|
+
Warning::buffer
|
286
|
+
ZeroDivisionError
|
287
|
+
fatal
|