chuck-norris 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/chuck-norris.gemspec +3 -3
- data/lib/chuck-norris.rb +38 -5
- data/test/test_chuck-norris.rb +13 -2
- metadata +4 -8
data/.gitignore
CHANGED
data/Rakefile
CHANGED
@@ -6,7 +6,7 @@ begin
|
|
6
6
|
Jeweler::Tasks.new do |gem|
|
7
7
|
gem.name = "chuck-norris"
|
8
8
|
gem.summary = %Q{Chuck Norris}
|
9
|
-
gem.description = %Q{When Chuck Norris throws exceptions, it
|
9
|
+
gem.description = %Q{When Chuck Norris throws exceptions, it's across the room}
|
10
10
|
gem.email = "pahanix@gmail.com"
|
11
11
|
gem.homepage = "http://github.com/pahanix/chuck-norris"
|
12
12
|
gem.authors = ["Pavel Gorbokon (pahanix)"]
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/chuck-norris.gemspec
CHANGED
@@ -5,12 +5,12 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{chuck-norris}
|
8
|
-
s.version = "0.0
|
8
|
+
s.version = "0.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Pavel Gorbokon (pahanix)"]
|
12
|
-
s.date = %q{2010-09-
|
13
|
-
s.description = %q{When Chuck Norris throws exceptions, it
|
12
|
+
s.date = %q{2010-09-25}
|
13
|
+
s.description = %q{When Chuck Norris throws exceptions, it's across the room}
|
14
14
|
s.email = %q{pahanix@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
data/lib/chuck-norris.rb
CHANGED
@@ -1,6 +1,39 @@
|
|
1
|
-
class Object
|
2
|
-
def
|
3
|
-
|
4
|
-
|
1
|
+
class Object
|
2
|
+
def raise_with_chuck_norris(*args)
|
3
|
+
exception = args.first
|
4
|
+
# Only Rubinius catches SystemExit at the end. Ignore it
|
5
|
+
unless exception.is_a?(SystemExit)
|
6
|
+
$stdout.puts("Chuck Norris has thrown #{args.first} and has given quarter to your app")
|
7
|
+
say "Boom"
|
8
|
+
end
|
9
|
+
|
10
|
+
raise_without_chuck_norris(*args)
|
5
11
|
end
|
6
|
-
|
12
|
+
|
13
|
+
alias raise_without_chuck_norris raise
|
14
|
+
alias raise raise_with_chuck_norris
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def chuck_norris_pays_last_respects
|
19
|
+
$stdout.puts("Chuck Norris pays last respects to your app...")
|
20
|
+
say "Rest in Peace"
|
21
|
+
end
|
22
|
+
|
23
|
+
def say(text)
|
24
|
+
`say #{text} &` if RUBY_PLATFORM =~ /darwin/
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# LITTLE HACK to put Chuck Norris last respects at the end of application lifetime.
|
29
|
+
# Kernel runs exit procs in reverse mode and at this point we can already have
|
30
|
+
# other exit procs. For example from Shoulda or UnitTest (I'm not sure which exactly).
|
31
|
+
|
32
|
+
# This hack works on MRI 1.8/1.9 and REE (actually it's a bug!)
|
33
|
+
# and does not work on JRuby/Rubinius (well done!)
|
34
|
+
|
35
|
+
# But anyway, we can postone creation of last respects on MRI 1.8/1.9 and REE.
|
36
|
+
|
37
|
+
Kernel.at_exit {
|
38
|
+
Kernel.at_exit { chuck_norris_pays_last_respects }
|
39
|
+
}
|
data/test/test_chuck-norris.rb
CHANGED
@@ -1,7 +1,18 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
3
|
class TestChuckNorris < Test::Unit::TestCase
|
4
|
-
should "throw exception and
|
5
|
-
|
4
|
+
should "throw exception and say boom" do
|
5
|
+
begin
|
6
|
+
raise StandardError
|
7
|
+
rescue
|
8
|
+
end
|
6
9
|
end
|
10
|
+
|
11
|
+
should "throw String exception and say boom" do
|
12
|
+
begin
|
13
|
+
raise "String"
|
14
|
+
rescue
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
7
18
|
end
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chuck-norris
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 29
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
|
-
- 0
|
9
7
|
- 1
|
10
|
-
|
8
|
+
- 0
|
9
|
+
version: 0.1.0
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Pavel Gorbokon (pahanix)
|
@@ -15,7 +14,7 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2010-09-
|
17
|
+
date: 2010-09-25 00:00:00 +03:00
|
19
18
|
default_executable:
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
@@ -26,13 +25,12 @@ dependencies:
|
|
26
25
|
requirements:
|
27
26
|
- - ">="
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
28
|
segments:
|
31
29
|
- 0
|
32
30
|
version: "0"
|
33
31
|
type: :development
|
34
32
|
version_requirements: *id001
|
35
|
-
description:
|
33
|
+
description: When Chuck Norris throws exceptions, it's across the room
|
36
34
|
email: pahanix@gmail.com
|
37
35
|
executables: []
|
38
36
|
|
@@ -66,7 +64,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
66
64
|
requirements:
|
67
65
|
- - ">="
|
68
66
|
- !ruby/object:Gem::Version
|
69
|
-
hash: 3
|
70
67
|
segments:
|
71
68
|
- 0
|
72
69
|
version: "0"
|
@@ -75,7 +72,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
72
|
requirements:
|
76
73
|
- - ">="
|
77
74
|
- !ruby/object:Gem::Version
|
78
|
-
hash: 3
|
79
75
|
segments:
|
80
76
|
- 0
|
81
77
|
version: "0"
|