fail_fast 0.1.0 → 0.1.1
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.
- data/CHANGELOG.txt +2 -0
- data/README.markdown +56 -21
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/fail_fast.gemspec +7 -1
- data/lib/fail_fast/misc.rb +13 -0
- data/lib/fail_fast.rb +1 -0
- data/show_all_errors.rb +3 -0
- data/spec/misc_spec.rb +7 -0
- metadata +21 -4
data/CHANGELOG.txt
CHANGED
data/README.markdown
CHANGED
@@ -1,27 +1,62 @@
|
|
1
1
|
# fail_fast : don't start your application if some preconditions are not met.
|
2
2
|
|
3
|
+
## How to install :
|
4
|
+
|
5
|
+
gem install fail_fast
|
6
|
+
|
3
7
|
## How to use :
|
4
8
|
|
5
9
|
Early in your project boot sequence insert code like
|
6
10
|
|
7
11
|
require 'fail_fast'
|
8
12
|
FailFast('database.yml').check do
|
9
|
-
has_active_record_db_for
|
13
|
+
has_active_record_db_for Rails.env
|
10
14
|
end
|
11
15
|
|
12
16
|
FailFast('database.mongo.yml').check do
|
13
|
-
has_mongoDB_for
|
17
|
+
has_mongoDB_for Rails.env
|
14
18
|
end
|
15
19
|
|
16
20
|
FailFast('path_to/config.yml', prefix=Rails.env).check do
|
17
|
-
|
18
|
-
|
19
|
-
|
21
|
+
has_values_for 'author/fname', 'author/lname'
|
22
|
+
has_email_for 'newsletter/to_address'
|
23
|
+
has_url_for 'bug_tracker/url', :reachable => true
|
20
24
|
|
21
25
|
directory_exists_for '/tmp'
|
22
26
|
file_exists_for 'public/nda.pdf'
|
27
|
+
|
28
|
+
fail "I don't work on Sunday" if 0 == Time.now.wday
|
23
29
|
end
|
24
30
|
|
31
|
+
If it fails, you'll get a report like this :
|
32
|
+
|
33
|
+
+------------------------------------------------------------------------------------------
|
34
|
+
| FAIL_FAST error : "./spec/fixtures/simple.yml"
|
35
|
+
| key prefix = nil
|
36
|
+
+------------------------------------------------------------------------------------------
|
37
|
+
| error key value
|
38
|
+
+------------------------------------------------------------------------------------------
|
39
|
+
| * missing_value first_keyNOT
|
40
|
+
| * missing_value last_keyNOT
|
41
|
+
| * missing_value number_sixNOT
|
42
|
+
| * missing_value testNOT/mongoDB/database
|
43
|
+
| * value_does_not_match last_key dernier
|
44
|
+
| * not_an_email test/host localhost
|
45
|
+
| * not_a_url test/host localhost
|
46
|
+
| * url_not_reachable test/url_not_reachable http://xxx.zzz
|
47
|
+
| * directory_not_found /foobarbaz
|
48
|
+
| * directory_not_found test/a_file ./spec/fixtures/simple.yml
|
49
|
+
| * file_not_found /tmp/foo/bar/??nOTaFile
|
50
|
+
| * file_not_found test/a_directory ./spec/fixtures
|
51
|
+
| * mongoDB_server_not_found 10.0.0.123
|
52
|
+
| * mongoDB_server_not_found test/mongoDB localhost
|
53
|
+
| * mongoDB_db_not_found not_a_known_db
|
54
|
+
| * mongoDB_db_not_found test/unknown_mongoDB_db unknown_mongoDB_db
|
55
|
+
| * active_record_db_connection_error Unknown database 'some-db'
|
56
|
+
| * active_record_db_connection_error db_connection Unknown database 'a_db'
|
57
|
+
| * fail a custom failure message
|
58
|
+
+------------------------------------------------------------------------------------------
|
59
|
+
|
25
60
|
|
26
61
|
## Info :
|
27
62
|
|
@@ -49,10 +84,10 @@ You can also add custom rules, not related to any config files :
|
|
49
84
|
|
50
85
|
### _free/direct_ commands (not linked to the yaml file contents) :
|
51
86
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
87
|
+
directory_exists '/tmp'
|
88
|
+
file_exists '/Users/me/.bash_profile'
|
89
|
+
has_mongoDB 'localhost', 'db_app_1'
|
90
|
+
has_active_record_db :host => 'dbserv', :adapter => 'mysql', :database => 'db'
|
56
91
|
|
57
92
|
|
58
93
|
### _keyed_ commands (linked to a value found in a yaml file) :
|
@@ -61,8 +96,8 @@ You can also add custom rules, not related to any config files :
|
|
61
96
|
|
62
97
|
*presence :*
|
63
98
|
|
64
|
-
has_value_for
|
65
|
-
has_values_for
|
99
|
+
has_value_for :application_name
|
100
|
+
has_values_for 'author/fname', 'author/lname'
|
66
101
|
|
67
102
|
*contents <-> a regexp or pattern :*
|
68
103
|
|
@@ -72,20 +107,20 @@ You can also add custom rules, not related to any config files :
|
|
72
107
|
|
73
108
|
Test the file system :
|
74
109
|
|
75
|
-
directory_exists_for '
|
76
|
-
file_exists_for '
|
110
|
+
directory_exists_for 'assets-upload_dir'
|
111
|
+
file_exists_for 'assets-nda_pdf_file'
|
77
112
|
|
78
113
|
Test external services :
|
79
114
|
|
80
|
-
|
81
|
-
|
82
|
-
|
115
|
+
# is a webserver up ?
|
116
|
+
has_url_for 'bug_tracker/url', :reachable => true
|
117
|
+
has_url_for 'bug_tracker/url', :reachable => true, :may_add_trailing_slash => true
|
83
118
|
|
84
119
|
|
85
|
-
|
86
|
-
|
87
|
-
|
120
|
+
# can we connect to a mongoDB db/server :
|
121
|
+
has_mongoDB_for 'test/mongoDB'
|
122
|
+
has_mongoDB_for 'test/unknown_mongoDB_db', :check_database => false
|
88
123
|
|
89
|
-
|
90
|
-
|
124
|
+
# can we connect to a SQL db :
|
125
|
+
has_active_record_db_for 'production/db_connection'
|
91
126
|
|
data/Rakefile
CHANGED
@@ -11,6 +11,7 @@ begin
|
|
11
11
|
gem.homepage = "http://github.com/alainravet/fail_fast"
|
12
12
|
gem.authors = ["Alain Ravet"]
|
13
13
|
gem.add_development_dependency "rspec", ">= 1.2.9"
|
14
|
+
gem.add_development_dependency "activerecord"
|
14
15
|
gem.add_development_dependency "mongo"
|
15
16
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
16
17
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/fail_fast.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{fail_fast}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Alain Ravet"]
|
@@ -33,6 +33,7 @@ Gem::Specification.new do |s|
|
|
33
33
|
"lib/fail_fast/check_url.rb",
|
34
34
|
"lib/fail_fast/check_value.rb",
|
35
35
|
"lib/fail_fast/main.rb",
|
36
|
+
"lib/fail_fast/misc.rb",
|
36
37
|
"lib/fail_fast/report.txt.erb",
|
37
38
|
"show_all_errors.rb",
|
38
39
|
"spec/file_is_empty_spec.rb",
|
@@ -46,6 +47,7 @@ Gem::Specification.new do |s|
|
|
46
47
|
"spec/has_url_for_spec.rb",
|
47
48
|
"spec/has_value_for_spec.rb",
|
48
49
|
"spec/how_to_use_spec.rb",
|
50
|
+
"spec/misc_spec.rb",
|
49
51
|
"spec/spec.opts",
|
50
52
|
"spec/spec_helper.rb"
|
51
53
|
]
|
@@ -64,6 +66,7 @@ Gem::Specification.new do |s|
|
|
64
66
|
"spec/has_url_for_spec.rb",
|
65
67
|
"spec/has_value_for_spec.rb",
|
66
68
|
"spec/how_to_use_spec.rb",
|
69
|
+
"spec/misc_spec.rb",
|
67
70
|
"spec/spec_helper.rb"
|
68
71
|
]
|
69
72
|
|
@@ -73,13 +76,16 @@ Gem::Specification.new do |s|
|
|
73
76
|
|
74
77
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
75
78
|
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
79
|
+
s.add_development_dependency(%q<activerecord>, [">= 0"])
|
76
80
|
s.add_development_dependency(%q<mongo>, [">= 0"])
|
77
81
|
else
|
78
82
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
83
|
+
s.add_dependency(%q<activerecord>, [">= 0"])
|
79
84
|
s.add_dependency(%q<mongo>, [">= 0"])
|
80
85
|
end
|
81
86
|
else
|
82
87
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
88
|
+
s.add_dependency(%q<activerecord>, [">= 0"])
|
83
89
|
s.add_dependency(%q<mongo>, [">= 0"])
|
84
90
|
end
|
85
91
|
end
|
data/lib/fail_fast.rb
CHANGED
data/show_all_errors.rb
CHANGED
data/spec/misc_spec.rb
ADDED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fail_fast
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Alain Ravet
|
@@ -35,7 +35,7 @@ dependencies:
|
|
35
35
|
type: :development
|
36
36
|
version_requirements: *id001
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
|
-
name:
|
38
|
+
name: activerecord
|
39
39
|
prerelease: false
|
40
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
@@ -48,6 +48,20 @@ dependencies:
|
|
48
48
|
version: "0"
|
49
49
|
type: :development
|
50
50
|
version_requirements: *id002
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: mongo
|
53
|
+
prerelease: false
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
hash: 3
|
60
|
+
segments:
|
61
|
+
- 0
|
62
|
+
version: "0"
|
63
|
+
type: :development
|
64
|
+
version_requirements: *id003
|
51
65
|
description: raises an error if the yaml contents of a config file does not pass a test script.
|
52
66
|
email: alainravet@gmail.com
|
53
67
|
executables: []
|
@@ -74,6 +88,7 @@ files:
|
|
74
88
|
- lib/fail_fast/check_url.rb
|
75
89
|
- lib/fail_fast/check_value.rb
|
76
90
|
- lib/fail_fast/main.rb
|
91
|
+
- lib/fail_fast/misc.rb
|
77
92
|
- lib/fail_fast/report.txt.erb
|
78
93
|
- show_all_errors.rb
|
79
94
|
- spec/file_is_empty_spec.rb
|
@@ -87,6 +102,7 @@ files:
|
|
87
102
|
- spec/has_url_for_spec.rb
|
88
103
|
- spec/has_value_for_spec.rb
|
89
104
|
- spec/how_to_use_spec.rb
|
105
|
+
- spec/misc_spec.rb
|
90
106
|
- spec/spec.opts
|
91
107
|
- spec/spec_helper.rb
|
92
108
|
has_rdoc: true
|
@@ -133,4 +149,5 @@ test_files:
|
|
133
149
|
- spec/has_url_for_spec.rb
|
134
150
|
- spec/has_value_for_spec.rb
|
135
151
|
- spec/how_to_use_spec.rb
|
152
|
+
- spec/misc_spec.rb
|
136
153
|
- spec/spec_helper.rb
|