noe 1.1.0 → 1.2.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.
- data/CHANGELOG.md +36 -1
- data/Gemfile.lock +40 -0
- data/Manifest.txt +15 -0
- data/README.md +10 -9
- data/Rakefile +3 -2
- data/lib/noe.rb +1 -1
- data/lib/noe/ext/array.rb +0 -4
- data/lib/noe/ext/hash.rb +1 -1
- data/lib/noe/loader.rb +3 -67
- data/lib/noe/main.rb +1 -0
- data/noe.gemspec +4 -3
- data/noe.noespec +44 -0
- data/tasks/debug_mail.rake +77 -0
- data/tasks/debug_mail.txt +13 -0
- data/tasks/gem.rake +30 -6
- data/tasks/spec_test.rake +34 -16
- data/tasks/unit_test.rake +26 -6
- data/tasks/yard.rake +24 -9
- data/templates/ruby/CHANGELOG.md +18 -2
- data/templates/ruby/noespec.yaml +110 -4
- data/templates/ruby/short.yaml +25 -4
- data/templates/ruby/src/Manifest.txt +3 -0
- data/templates/ruby/src/Rakefile +3 -2
- data/templates/ruby/src/__lower__.gemspec +1 -1
- data/templates/ruby/src/lib/__lower__.rb +1 -1
- data/templates/ruby/src/lib/__lower__/loader.rb +1 -65
- data/templates/ruby/src/tasks/debug_mail.rake +77 -0
- data/templates/ruby/src/tasks/debug_mail.txt +13 -0
- data/templates/ruby/src/tasks/gem.rake +32 -8
- data/templates/ruby/src/tasks/spec_test.rake +39 -21
- data/templates/ruby/src/tasks/unit_test.rake +31 -11
- data/templates/ruby/src/tasks/yard.rake +24 -9
- metadata +39 -200
data/tasks/spec_test.rake
CHANGED
@@ -1,15 +1,36 @@
|
|
1
|
+
# Installs a rake task for for running examples written using rspec.
|
1
2
|
#
|
2
|
-
#
|
3
|
+
# This file installs the 'rake spec_test' (aliased as 'rake spec') as well as
|
4
|
+
# extends 'rake test' to run spec tests, if any. It is automatically generated
|
5
|
+
# by Noe from your .noespec file, and should therefore be configured there,
|
6
|
+
# under the variables/rake_tasks/spec_test entry, as illustrated below:
|
3
7
|
#
|
4
|
-
#
|
5
|
-
#
|
8
|
+
# variables:
|
9
|
+
# rake_tasks:
|
10
|
+
# spec_test:
|
11
|
+
# pattern: spec/**/*_spec.rb
|
12
|
+
# verbose: true
|
13
|
+
# rspec_opts: [--color, --backtrace]
|
14
|
+
# ...
|
15
|
+
#
|
16
|
+
# If you have specific needs requiring manual intervention on this file,
|
17
|
+
# don't forget to set safe-override to false in your noe specification:
|
18
|
+
#
|
19
|
+
# template-info:
|
20
|
+
# manifest:
|
21
|
+
# tasks/spec_test.rake:
|
22
|
+
# safe-override: false
|
23
|
+
#
|
24
|
+
# This file has been written to conform to RSpec v2.4.0. More information about
|
25
|
+
# rspec and options of the rake task defined below can be found on
|
26
|
+
# http://relishapp.com/rspec
|
6
27
|
#
|
7
28
|
begin
|
8
29
|
require "rspec/core/rake_task"
|
9
30
|
desc "Run RSpec code examples"
|
10
31
|
RSpec::Core::RakeTask.new(:spec_test) do |t|
|
11
32
|
# Glob pattern to match files.
|
12
|
-
t.pattern =
|
33
|
+
t.pattern = "spec/**/*_spec.rb"
|
13
34
|
|
14
35
|
# By default, if there is a Gemfile, the generated command will include
|
15
36
|
# 'bundle exec'. Set this to true to ignore the presence of a Gemfile,
|
@@ -17,7 +38,7 @@ begin
|
|
17
38
|
t.skip_bundler = false
|
18
39
|
|
19
40
|
# Name of Gemfile to use
|
20
|
-
t.gemfile =
|
41
|
+
t.gemfile = "Gemfile"
|
21
42
|
|
22
43
|
# Whether or not to fail Rake when an error occurs (typically when
|
23
44
|
# examples fail).
|
@@ -34,22 +55,19 @@ begin
|
|
34
55
|
t.rcov = false
|
35
56
|
|
36
57
|
# Path to rcov.
|
37
|
-
t.rcov_path =
|
58
|
+
t.rcov_path = "rcov"
|
38
59
|
|
39
|
-
# Command line options to pass to rcov.
|
40
|
-
|
41
|
-
t.rcov_opts = %w{}
|
60
|
+
# Command line options to pass to rcov. See 'rcov --help' about this
|
61
|
+
t.rcov_opts = []
|
42
62
|
|
43
|
-
# Command line options to pass to ruby.
|
44
|
-
|
45
|
-
t.ruby_opts = %w{}
|
63
|
+
# Command line options to pass to ruby. See 'ruby --help' about this
|
64
|
+
t.ruby_opts = []
|
46
65
|
|
47
66
|
# Path to rspec
|
48
|
-
t.rspec_path =
|
67
|
+
t.rspec_path = "rspec"
|
49
68
|
|
50
|
-
# Command line options to pass to rspec.
|
51
|
-
|
52
|
-
t.rspec_opts = %w{--color --backtrace}
|
69
|
+
# Command line options to pass to rspec. See 'rspec --help' about this
|
70
|
+
t.rspec_opts = ["--color", "--backtrace"]
|
53
71
|
end
|
54
72
|
rescue LoadError => ex
|
55
73
|
task :spec_test do
|
data/tasks/unit_test.rake
CHANGED
@@ -1,8 +1,28 @@
|
|
1
|
+
# Installs a rake task for for running unit tests.
|
1
2
|
#
|
2
|
-
#
|
3
|
+
# This file installs the 'rake unit_test' and extends 'rake test' to run unit
|
4
|
+
# tests, if any. It is automatically generated by Noe from your .noespec file,
|
5
|
+
# and should therefore be configured there, under the variables/rake_tasks/unit_test
|
6
|
+
# entry, as illustrated below:
|
3
7
|
#
|
4
|
-
#
|
5
|
-
#
|
8
|
+
# variables:
|
9
|
+
# rake_tasks:
|
10
|
+
# unit_test:
|
11
|
+
# pattern: test/test*.rb
|
12
|
+
# verbose: false
|
13
|
+
# warning: false
|
14
|
+
# ...
|
15
|
+
#
|
16
|
+
# If you have specific needs requiring manual intervention on this file,
|
17
|
+
# don't forget to set safe-override to false in your noe specification:
|
18
|
+
#
|
19
|
+
# template-info:
|
20
|
+
# manifest:
|
21
|
+
# tasks/unit_test.rake:
|
22
|
+
# safe-override: false
|
23
|
+
#
|
24
|
+
# More info about the TestTask and its options can be found on
|
25
|
+
# http://rake.rubyforge.org/classes/Rake/TestTask.html
|
6
26
|
#
|
7
27
|
begin
|
8
28
|
desc "Lauches unit tests"
|
@@ -11,21 +31,21 @@ begin
|
|
11
31
|
|
12
32
|
# List of directories to added to $LOAD_PATH before running the
|
13
33
|
# tests. (default is 'lib')
|
14
|
-
t.libs =
|
34
|
+
t.libs = ["lib"]
|
15
35
|
|
16
36
|
# True if verbose test output desired. (default is false)
|
17
37
|
t.verbose = false
|
18
38
|
|
19
39
|
# Test options passed to the test suite. An explicit TESTOPTS=opts
|
20
40
|
# on the command line will override this. (default is NONE)
|
21
|
-
t.options =
|
41
|
+
t.options = nil
|
22
42
|
|
23
43
|
# Request that the tests be run with the warning flag set.
|
24
44
|
# E.g. warning=true implies "ruby -w" used to run the tests.
|
25
45
|
t.warning = false
|
26
46
|
|
27
47
|
# Glob pattern to match test files. (default is 'test/test*.rb')
|
28
|
-
t.pattern =
|
48
|
+
t.pattern = "test/test*.rb"
|
29
49
|
|
30
50
|
# Style of test loader to use. Options are:
|
31
51
|
#
|
data/tasks/yard.rake
CHANGED
@@ -1,22 +1,37 @@
|
|
1
|
+
# Installs a rake task to generate API documentation using yard.
|
2
|
+
#
|
3
|
+
# This file installs the 'rake yard' task. It is automatically generated by Noe from
|
4
|
+
# your .noespec file, and should therefore be configured there, under the
|
5
|
+
# variables/rake_tasks/yard entry, as illustrated below:
|
6
|
+
#
|
7
|
+
# variables:
|
8
|
+
# rake_tasks:
|
9
|
+
# yard:
|
10
|
+
# files: lib/**/*.rb
|
11
|
+
# options: []
|
12
|
+
# ...
|
13
|
+
#
|
14
|
+
# If you have specific needs requiring manual intervention on this file,
|
15
|
+
# don't forget to set safe-override to false in your noe specification:
|
1
16
|
#
|
2
|
-
#
|
3
|
-
#
|
17
|
+
# template-info:
|
18
|
+
# manifest:
|
19
|
+
# tasks/yard.rake:
|
20
|
+
# safe-override: false
|
4
21
|
#
|
5
|
-
# More information about
|
6
|
-
#
|
22
|
+
# This file has been written to conform to yard v0.6.4. More information about
|
23
|
+
# yard and the rake task installed below can be found on http://yardoc.org/
|
7
24
|
#
|
8
|
-
# About project documentation
|
9
25
|
begin
|
10
26
|
require "yard"
|
11
27
|
desc "Generate yard documentation"
|
12
28
|
YARD::Rake::YardocTask.new(:yard) do |t|
|
13
|
-
# Array of options passed to
|
14
|
-
|
15
|
-
t.options = %w{--output-dir doc/api - README.md CHANGELOG.md LICENCE.md}
|
29
|
+
# Array of options passed to yardoc commandline. See 'yardoc --help' about this
|
30
|
+
t.options = ["--output-dir", "doc/api", "-", "README.md", "CHANGELOG.md", "LICENCE.md"]
|
16
31
|
|
17
32
|
# Array of ruby source files (and any extra documentation files
|
18
33
|
# separated by '-')
|
19
|
-
t.files = [
|
34
|
+
t.files = ["lib/**/*.rb"]
|
20
35
|
|
21
36
|
# A proc to call before running the task
|
22
37
|
# t.before = proc{ }
|
data/templates/ruby/CHANGELOG.md
CHANGED
@@ -1,10 +1,26 @@
|
|
1
|
-
# 1.
|
1
|
+
# 1.2.0 / 2011-01-17
|
2
|
+
|
3
|
+
* A 'description' variable is introduced in .noespec and made mandatory to avoid weird results
|
4
|
+
on rubygems.org when using the whole README.md file for project description.
|
5
|
+
* A 'version' variable is introduced in .noespec and made mandatory.
|
6
|
+
* Enhanced 'rake package/gem' to be configurable from .noespec under variables/rake_tasks/gem
|
7
|
+
* Enhanced 'rake unit_test' to be configurable from .noespec under variables/rake_tasks/unit_test
|
8
|
+
* Enhanced 'rake spec_test' to be configurable from .noespec under variables/rake_tasks/unit_test
|
9
|
+
* Enhanced 'rake yard' to be configurable from .noespec under variables/rake_tasks/yard
|
10
|
+
* Added 'rake debug_mail' which is configurable from .noespec under variables/rake_tasks/debug_mail
|
11
|
+
* lib/__lower__/loader.rb only use plain requires instead of a more complex algorithm. This follows
|
12
|
+
the discussion with Luis Lavena on ruby-talk (http://bit.ly/gqukPw)
|
13
|
+
* Added a proposal dependency (wlang ~> 0.10.1) required by the debug_mail task
|
14
|
+
* Fixed tasks/unit_test.rake under 1.9.2 (raised 'no such file to load -- []' with options=[] instead
|
15
|
+
of nil)
|
16
|
+
|
17
|
+
# 1.1.0 / 2011-01-11
|
2
18
|
|
3
19
|
* Added the tasks folder with well documented rake tasks
|
4
20
|
* Added a dependency loader in __lower__/loader.rb that helps requiring gems the good way
|
5
21
|
* Added Bundler support to easy developer's job trough Gemfile and "require 'bundle/setup'" in Rakefile
|
6
22
|
* LICENCE.txt -> LICENCE.md
|
7
|
-
* Follows a lot of changes
|
23
|
+
* Follows a lot of changes from Noe 1.0.0 -> 1.1.0
|
8
24
|
|
9
25
|
# 1.0.0 / 2011-01-11
|
10
26
|
|
data/templates/ruby/noespec.yaml
CHANGED
@@ -30,7 +30,7 @@ template-info:
|
|
30
30
|
description: |
|
31
31
|
This is a [Noe](https://github.com/blambeau/noe) template for creating a ruby gem
|
32
32
|
library. Generated project comes with rake tasks to support the lifecycle of the
|
33
|
-
library (testing, releasing, and so on). Following Noe
|
33
|
+
library (testing, releasing, and so on). Following Noe philosophy this template
|
34
34
|
also helps you understanding the ruby ecosystem by providing a fully documented
|
35
35
|
project, rake tasks, and so on.
|
36
36
|
authors:
|
@@ -95,6 +95,14 @@ template-info:
|
|
95
95
|
spec/spec_helper.rb:
|
96
96
|
description: Helper for ruby spec tests
|
97
97
|
safe-override: true
|
98
|
+
tasks/debug_mail.rake:
|
99
|
+
description: configuration file for 'rake debug_mail'
|
100
|
+
safe-override: true
|
101
|
+
wlang-dialect: wlang/ruby
|
102
|
+
tasks/debug_mail.txt:
|
103
|
+
description: mail template used by 'rake debug_mail'
|
104
|
+
safe-override: true
|
105
|
+
wlang-dialect: wlang/dummy
|
98
106
|
tasks/gem.rake:
|
99
107
|
description: configuration file for 'rake package', 'rake gem' and associated tasks
|
100
108
|
safe-override: true
|
@@ -125,10 +133,20 @@ variables:
|
|
125
133
|
# name.
|
126
134
|
upper:
|
127
135
|
HelloWorld
|
136
|
+
|
137
|
+
# Version of your library
|
138
|
+
version:
|
139
|
+
1.0.0
|
128
140
|
|
129
|
-
# Project summary
|
130
|
-
|
131
|
-
|
141
|
+
# Project summary (~ 1 line)
|
142
|
+
summary:
|
143
|
+
A simple "Hello World" example
|
144
|
+
|
145
|
+
# Project description (~ 5 lines). Project description should be more complete
|
146
|
+
# than the summary and will be used to describe your gem on rubygems.org
|
147
|
+
description: |-
|
148
|
+
This hello_world example provides you all you need to build a ruby gem library
|
149
|
+
while applying skeleton-driven coding with Noe (see http://revision-zero.org/noe)
|
132
150
|
|
133
151
|
# Authors of the project. Each author entry is a Hash and MUST at least have
|
134
152
|
# 'name' and 'email' keys. This is used to add meta information to your .gemspec
|
@@ -173,6 +191,8 @@ variables:
|
|
173
191
|
# YARD and BlueCloth are required to run 'rake yard'. See tasks/yard.rake
|
174
192
|
- {name: yard, version: "~> 0.6.4", groups: [development]}
|
175
193
|
- {name: bluecloth, version: "~> 2.0.9", groups: [development]}
|
194
|
+
# wlang is required to run 'rake debug_mail'. See tasks/debug_mail.rake
|
195
|
+
- {name: wlang, version: "~> 0.10.1", groups: [development]}
|
176
196
|
|
177
197
|
# Below are defined a certain number of specific variables for the .gemspec file
|
178
198
|
# of your library. We'll include it here to keep .gemspec under Noe's control for
|
@@ -199,3 +219,89 @@ variables:
|
|
199
219
|
requirements:
|
200
220
|
# A friendly message you would like to display when the user installs your gem
|
201
221
|
post_install_message:
|
222
|
+
|
223
|
+
# Below are defined a certain number of specific variables for each rake task.
|
224
|
+
# Have a look at tasks/*.rake for additional details on each one.
|
225
|
+
rake_tasks:
|
226
|
+
gem:
|
227
|
+
# Folder in which the packages are generated
|
228
|
+
package_dir: pkg
|
229
|
+
# Do you need a .tar package?
|
230
|
+
need_tar: false
|
231
|
+
# Do you need a .tar.gz package?
|
232
|
+
need_tar_gz: false
|
233
|
+
# Do you need a .tar.bz2 package?
|
234
|
+
need_tar_bz2: false
|
235
|
+
# Do you need a .zip package?
|
236
|
+
need_zip: false
|
237
|
+
# The shell command executed to build a .tar
|
238
|
+
tar_command: tar
|
239
|
+
# The shell command executed to build a .zip
|
240
|
+
zip_command: zip
|
241
|
+
debug_mail:
|
242
|
+
# Regular expression to detect change sections in
|
243
|
+
# the CHANGELOG file
|
244
|
+
rx_changelog_sections: '/^#/'
|
245
|
+
# Number of change sections to show in the mail
|
246
|
+
nb_changelog_sections: 1
|
247
|
+
spec_test:
|
248
|
+
# Pattern to find spec tests
|
249
|
+
pattern: spec/**/*_spec.rb
|
250
|
+
# By default, if there is a Gemfile, the generated command will include
|
251
|
+
# 'bundle exec'. Set this to true to ignore the presence of a Gemfile,
|
252
|
+
# and not add 'bundle exec' to the command.
|
253
|
+
skip_bundler: false
|
254
|
+
# Name of Gemfile to use
|
255
|
+
gemfile: Gemfile
|
256
|
+
# Whether or not to fail Rake when an error occurs (typically when
|
257
|
+
# examples fail).
|
258
|
+
fail_on_error: true
|
259
|
+
# A message to print to stderr when there are failures.
|
260
|
+
failure_message:
|
261
|
+
# Use verbose output. If this is set to true, the task will print the
|
262
|
+
# executed spec command to stdout.
|
263
|
+
verbose: true
|
264
|
+
# Use rcov for code coverage?
|
265
|
+
rcov: false
|
266
|
+
# Path to rcov.
|
267
|
+
rcov_path: rcov
|
268
|
+
# Command line options to pass to rcov. See 'rcov --help' about this
|
269
|
+
rcov_opts: []
|
270
|
+
# Command line options to pass to ruby. See 'ruby --help' about this
|
271
|
+
ruby_opts: []
|
272
|
+
# Path to rspec
|
273
|
+
rspec_path: rspec
|
274
|
+
# Command line options to pass to rspec. See 'rspec --help' about this
|
275
|
+
rspec_opts: [--color, --backtrace]
|
276
|
+
unit_test:
|
277
|
+
# Glob pattern to match test files. (default is 'test/test*.rb')
|
278
|
+
pattern: test/test*.rb
|
279
|
+
# Array of directories to added to $LOAD_PATH before running the tests.
|
280
|
+
libs: [ lib ]
|
281
|
+
# True if verbose test output desired.
|
282
|
+
verbose: false
|
283
|
+
# Test options passed to the test suite. An explicit TESTOPTS=opts
|
284
|
+
# on the command line will override this.
|
285
|
+
options:
|
286
|
+
# Request that the tests be run with the warning flag set.
|
287
|
+
# E.g. warning=true implies "ruby -w" used to run the tests.
|
288
|
+
warning: false
|
289
|
+
# Style of test loader to use. Options are:
|
290
|
+
#
|
291
|
+
# * :rake -- Rake provided test loading script (default).
|
292
|
+
# * :testrb -- Ruby provided test loading script.
|
293
|
+
# * :direct -- Load tests using command line loader.
|
294
|
+
#
|
295
|
+
loader: :rake
|
296
|
+
# Array of commandline options to pass to ruby when running test loader.
|
297
|
+
ruby_opts: []
|
298
|
+
# Explicitly define the list of test files to be included in a
|
299
|
+
# test. +list+ is expected to be an array of file names (a
|
300
|
+
# FileList is acceptable). If both +pattern+ and +test_files+ are
|
301
|
+
# used, then the list of test files is the union of the two.
|
302
|
+
test_files:
|
303
|
+
yard:
|
304
|
+
# Array of ruby source files
|
305
|
+
files: ['lib/**/*.rb']
|
306
|
+
# Array of options passed to yard commandline. See 'yardoc --help' about this
|
307
|
+
options: ['--output-dir', 'doc/api', '-', 'README.md', 'CHANGELOG.md', 'LICENCE.md']
|
data/templates/ruby/short.yaml
CHANGED
@@ -19,10 +19,20 @@ variables:
|
|
19
19
|
upper:
|
20
20
|
HelloWorld
|
21
21
|
|
22
|
-
#
|
23
|
-
|
24
|
-
|
22
|
+
# Version of your library
|
23
|
+
version:
|
24
|
+
1.0.0
|
25
|
+
|
26
|
+
# Project summary (~ 1 line).
|
27
|
+
summary: |-
|
28
|
+
A simple "Hello World" example
|
25
29
|
|
30
|
+
# Project description (~ 5 lines). Project description should be more complete
|
31
|
+
# than the summary and will be used to describe your gem on rubygems.org
|
32
|
+
description: |-
|
33
|
+
This hello_world example provides you all you need to build a ruby gem library
|
34
|
+
while applying skeleton-driven coding with Noe (see http://revision-zero.org/noe)
|
35
|
+
|
26
36
|
# Authors of the project (- {name: Bob, email: bob@gmail.com}, ...)
|
27
37
|
authors: []
|
28
38
|
|
@@ -30,4 +40,15 @@ variables:
|
|
30
40
|
links: []
|
31
41
|
|
32
42
|
# Gem dependencies. (- {name: ..., version: ..., groups: [...]}, ...)
|
33
|
-
dependencies:
|
43
|
+
dependencies:
|
44
|
+
# Rake is required for developers, as usual
|
45
|
+
- {name: rake, version: "~> 0.8.7", groups: [development]}
|
46
|
+
# Bundler is required for developers and is used by the Rakefile
|
47
|
+
- {name: bundler, version: "~> 1.0", groups: [development]}
|
48
|
+
# RSpec is required to run 'rake spec'. See tasks/spec.rake
|
49
|
+
- {name: rspec, version: "~> 2.4.0", groups: [development]}
|
50
|
+
# YARD and BlueCloth are required to run 'rake yard'. See tasks/yard.rake
|
51
|
+
- {name: yard, version: "~> 0.6.4", groups: [development]}
|
52
|
+
- {name: bluecloth, version: "~> 2.0.9", groups: [development]}
|
53
|
+
# wlang is required to run 'rake debug_mail'. See tasks/debug_mail.rake
|
54
|
+
- {name: wlang, version: "~> 0.10.1", groups: [development]}
|
data/templates/ruby/src/Rakefile
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
begin
|
2
2
|
gem "bundler", "~> 1.0"
|
3
3
|
require "bundler/setup"
|
4
|
-
rescue LoadError
|
5
|
-
|
4
|
+
rescue LoadError => ex
|
5
|
+
puts ex.message
|
6
|
+
abort "Bundler failed to load, (did you run 'gem install bundler' ?)"
|
6
7
|
end
|
7
8
|
|
8
9
|
# Dynamically load the gem spec
|
@@ -27,7 +27,7 @@ Gem::Specification.new do |s|
|
|
27
27
|
#
|
28
28
|
# The description should be more detailed than the summary. For example,
|
29
29
|
# you might wish to copy the entire README into the description.
|
30
|
-
s.description =
|
30
|
+
s.description = +{description}
|
31
31
|
|
32
32
|
# The URL of this gem home page (optional)
|
33
33
|
s.homepage = +{links.first}
|
@@ -1,65 +1 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
# This module provides tools to load stdlib and gem dependencies.
|
4
|
-
#
|
5
|
-
module Loader
|
6
|
-
|
7
|
-
#
|
8
|
-
# This method allows requiring dependencies with some flexibility.
|
9
|
-
#
|
10
|
-
# Implemented algorithm makes greedy choices about the environment:
|
11
|
-
# 1. It first attempts a simple <code>Kernel.require(name)</code> before
|
12
|
-
# anything else (even bypassing version requirement)
|
13
|
-
# 2. If step 1 fails with a LoadError then it falls back requiring the
|
14
|
-
# gem with specified version (defaults to >= 0) and retries step 1.
|
15
|
-
# 3. If step 2 fails with a NameError, 'rubygems' are required and step
|
16
|
-
# 2 is retried.
|
17
|
-
# 4. If step 3. fails, the initial LoadError is reraised.
|
18
|
-
#
|
19
|
-
# Doing so ensures flexibility for the users of the library by not making
|
20
|
-
# wrong assumptions about their environment. Testing the library is also
|
21
|
-
# made easier, as illustrated in the examples below. Please note that this
|
22
|
-
# method is useful to load external dependencies of your code only, not
|
23
|
-
# .rb files of your own library.
|
24
|
-
#
|
25
|
-
# Examples:
|
26
|
-
#
|
27
|
-
# # Require something from the standard library
|
28
|
-
# !{upper}::Loader.require('fileutils')
|
29
|
-
#
|
30
|
-
# # Require a gem without specifing any particular version
|
31
|
-
# !{upper}::Loader.require('highline')
|
32
|
-
#
|
33
|
-
# # Require a gem, specifing a particular version
|
34
|
-
# !{upper}::Loader.require('foo', "~> 1.6")
|
35
|
-
#
|
36
|
-
# # Twist the load path to use version of foo you've recently
|
37
|
-
# # forked (bypass the version requirement)
|
38
|
-
# $LOAD_PATH.unshift ... # or ruby -I...
|
39
|
-
# !{upper}::Loader.require('highline', "~> 1.6")
|
40
|
-
#
|
41
|
-
# Learn more about this pattern:
|
42
|
-
# - http://weblog.rubyonrails.org/2009/9/1/gem-packaging-best-practices
|
43
|
-
# - https://gist.github.com/54177
|
44
|
-
#
|
45
|
-
def require(name, version = nil)
|
46
|
-
Kernel.require name.to_s
|
47
|
-
rescue LoadError
|
48
|
-
begin
|
49
|
-
gem name.to_s, version || ">= 0"
|
50
|
-
rescue NameError
|
51
|
-
if $VERBOSE
|
52
|
-
Kernel.warn "#{__FILE__}:#{__LINE__}: warning: requiring rubygems myself, "\
|
53
|
-
" you should use 'ruby -rubygems' instead. "\
|
54
|
-
"See https://gist.github.com/54177"
|
55
|
-
end
|
56
|
-
require "rubygems"
|
57
|
-
gem name.to_s, version || ">= 0"
|
58
|
-
end
|
59
|
-
Kernel.require name.to_s
|
60
|
-
end
|
61
|
-
module_function :require
|
62
|
-
|
63
|
-
end # module Loader
|
64
|
-
end # module !{upper}
|
65
|
-
*{dependencies.select{|dep| dep.groups.include?('runtime')} as dep}{!{upper}::Loader.require(+{dep.name}, +{dep.version})}{!{"\n"}}
|
1
|
+
*{dependencies.select{|dep| dep.groups.include?('runtime')} as dep}{require +{dep.name}}{!{"\n"}}
|