auser-skelerl 0.0.2 → 0.0.3
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/Manifest.txt +12 -9
- data/README.txt +1 -1
- data/bin/{appfile → skelerl} +4 -4
- data/config/hoe.rb +1 -1
- data/{app_generators → generators}/appfile/USAGE +0 -0
- data/{app_generators → generators}/appfile/appfile_generator.rb +0 -0
- data/{app_generators → generators}/appfile/templates/appfile.app +0 -0
- data/{app_generators → generators}/gen_server/USAGE +0 -0
- data/{app_generators → generators}/gen_server/gen_server_generator.rb +0 -0
- data/{app_generators → generators}/gen_server/templates/gen_server.erl +0 -0
- data/generators/skeleton/USAGE +7 -0
- data/generators/skeleton/skeleton_generator.rb +91 -0
- data/generators/skeleton/templates/README.txt +1 -0
- data/generators/skeleton/templates/Rakefile +1 -0
- data/generators/skeleton/templates/gitignore +2 -0
- data/lib/skelerl.rb +1 -1
- data/lib/skelerl/erlpers/erl_mapper.rb +5 -1
- data/skelerl.gemspec +7 -7
- data/tasks/build.rake +39 -2
- metadata +18 -16
- data/bin/build-app +0 -22
- data/bin/erl_runner +0 -26
data/Manifest.txt
CHANGED
@@ -2,20 +2,23 @@ History.txt
|
|
2
2
|
Manifest.txt
|
3
3
|
README.txt
|
4
4
|
Rakefile
|
5
|
-
app_generators/appfile/USAGE
|
6
|
-
app_generators/appfile/appfile_generator.rb
|
7
|
-
app_generators/appfile/templates/appfile.app
|
8
|
-
app_generators/gen_server/USAGE
|
9
|
-
app_generators/gen_server/gen_server_generator.rb
|
10
|
-
app_generators/gen_server/templates/gen_server.erl
|
11
|
-
bin/appfile
|
12
|
-
bin/build-app
|
13
|
-
bin/erl_runner
|
14
5
|
bin/gen_server
|
6
|
+
bin/skelerl
|
15
7
|
config/hoe.rb
|
16
8
|
config/requirements.rb
|
17
9
|
ebin/packager.app
|
18
10
|
examples/example_runner.rb
|
11
|
+
generators/appfile/USAGE
|
12
|
+
generators/appfile/appfile_generator.rb
|
13
|
+
generators/appfile/templates/appfile.app
|
14
|
+
generators/gen_server/USAGE
|
15
|
+
generators/gen_server/gen_server_generator.rb
|
16
|
+
generators/gen_server/templates/gen_server.erl
|
17
|
+
generators/skeleton/USAGE
|
18
|
+
generators/skeleton/skeleton_generator.rb
|
19
|
+
generators/skeleton/templates/README.txt
|
20
|
+
generators/skeleton/templates/Rakefile
|
21
|
+
generators/skeleton/templates/gitignore
|
19
22
|
include/empty
|
20
23
|
lib/skelerl.rb
|
21
24
|
lib/skelerl/core/object.rb
|
data/README.txt
CHANGED
@@ -6,7 +6,7 @@ Skeleton Erlang application
|
|
6
6
|
|
7
7
|
This is a basic skeleton for erlang applications.
|
8
8
|
|
9
|
-
This skeleton app takes care of everything you'd need in an erlang application, hopefully
|
9
|
+
This skeleton app takes care of everything you'd need in an erlang application, hopefully!
|
10
10
|
|
11
11
|
h2. Building an application
|
12
12
|
1. Include the source code in the src/ directory.
|
data/bin/{appfile → skelerl}
RENAMED
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'rubigen'
|
5
|
+
require "skelerl"
|
5
6
|
|
6
7
|
if %w(-v --version).include? ARGV.first
|
7
|
-
|
8
|
-
puts "#{File.basename($0)} #{Appfile::VERSION::STRING}"
|
8
|
+
puts "#{File.basename($0)} #{Skelerl::VERSION::STRING}"
|
9
9
|
exit(0)
|
10
10
|
end
|
11
11
|
|
12
12
|
require 'rubigen/scripts/generate'
|
13
13
|
source = RubiGen::PathSource.new(:application,
|
14
|
-
File.join(File.dirname(__FILE__), "../
|
14
|
+
File.join(File.dirname(__FILE__), "../generators"))
|
15
15
|
RubiGen::Base.reset_sources
|
16
16
|
RubiGen::Base.append_sources source
|
17
|
-
RubiGen::Scripts::Generate.new.run(ARGV, :generator => '
|
17
|
+
RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'skeleton')
|
data/config/hoe.rb
CHANGED
@@ -2,7 +2,7 @@ require 'skelerl'
|
|
2
2
|
|
3
3
|
AUTHOR = 'Ari Lerner' # can also be an array of Authors
|
4
4
|
EMAIL = "arilerner@mac.com"
|
5
|
-
DESCRIPTION = "This skeleton app takes care of everything you'd need in an erlang application, but don't want to do yourself...
|
5
|
+
DESCRIPTION = "This skeleton app takes care of everything you'd need in an erlang application, but don't want to do yourself... Check out the README for more!\n\n\n#{Time.now}"
|
6
6
|
GEM_NAME = 'skelerl' # what ppl will type to install your gem
|
7
7
|
RUBYFORGE_PROJECT = 'skelerl' # The unix name for your project
|
8
8
|
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'rbconfig'
|
2
|
+
|
3
|
+
class SkeletonGenerator < RubiGen::Base
|
4
|
+
DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
|
5
|
+
Config::CONFIG['ruby_install_name'])
|
6
|
+
|
7
|
+
default_options :shebang => DEFAULT_SHEBANG,
|
8
|
+
:an_option => 'some_default'
|
9
|
+
|
10
|
+
attr_reader :app_name, :module_name
|
11
|
+
|
12
|
+
def initialize(runtime_args, runtime_options = {})
|
13
|
+
super
|
14
|
+
usage if args.empty?
|
15
|
+
@destination_root = args.shift
|
16
|
+
@app_name = File.basename(File.expand_path(@destination_root))
|
17
|
+
@module_name = app_name.camelize
|
18
|
+
extract_options
|
19
|
+
end
|
20
|
+
|
21
|
+
def manifest
|
22
|
+
# Use /usr/bin/env if no special shebang was specified
|
23
|
+
script_options = { :chmod => 0755, :shebang => options[:shebang] == DEFAULT_SHEBANG ? nil : options[:shebang] }
|
24
|
+
windows = (RUBY_PLATFORM =~ /dos|win32|cygwin/i) || (RUBY_PLATFORM =~ /(:?mswin|mingw)/)
|
25
|
+
|
26
|
+
record do |m|
|
27
|
+
# Root directory and all subdirectories.
|
28
|
+
m.directory ''
|
29
|
+
BASEDIRS.each { |path| m.directory path }
|
30
|
+
|
31
|
+
# Root
|
32
|
+
m.template_copy_each %w( Rakefile )
|
33
|
+
m.file_copy_each %w( README.txt )
|
34
|
+
|
35
|
+
# Test helper
|
36
|
+
m.template "gitignore", ".gitignore"
|
37
|
+
|
38
|
+
# Tests
|
39
|
+
%w(ebin include src).each do |directory|
|
40
|
+
m.directory "test/#{directory}"
|
41
|
+
end
|
42
|
+
|
43
|
+
include_eunit
|
44
|
+
include_configerl
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def include_eunit
|
50
|
+
cmds = [
|
51
|
+
"svn co http://svn.process-one.net/contribs/trunk/eunit #{@destination_root}/test/include/eunit",
|
52
|
+
"cd #{@destination_root}/test/include/eunit",
|
53
|
+
"make"
|
54
|
+
]
|
55
|
+
Kernel.system cmds.join(" && ")
|
56
|
+
end
|
57
|
+
def include_configerl
|
58
|
+
cmds = [
|
59
|
+
"git submodule add git://github.com/auser/configerl.git #{@destination_root}/deps/configerl",
|
60
|
+
"git submodule init",
|
61
|
+
"git submodule update"
|
62
|
+
]
|
63
|
+
Kernel.system cmds.join(" && ")
|
64
|
+
end
|
65
|
+
|
66
|
+
protected
|
67
|
+
def banner
|
68
|
+
<<-EOS
|
69
|
+
Create a stub for #{File.basename $0} to get started.
|
70
|
+
|
71
|
+
Usage: #{File.basename $0} /path/to/your/app [options]"
|
72
|
+
EOS
|
73
|
+
end
|
74
|
+
|
75
|
+
def add_options!(opts)
|
76
|
+
opts.separator ''
|
77
|
+
opts.separator "#{File.basename $0} options:"
|
78
|
+
opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
|
79
|
+
end
|
80
|
+
|
81
|
+
def extract_options
|
82
|
+
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
83
|
+
# Templates can access these value via the attr_reader-generated methods, but not the
|
84
|
+
# raw instance variable value.
|
85
|
+
@author = options[:author]
|
86
|
+
@description = options[:desc] || "Description of your project"
|
87
|
+
end
|
88
|
+
|
89
|
+
BASEDIRS = %w(deps doc ebin include priv scripts src support)
|
90
|
+
BASEFILES = %w(README.txt Rakefile)
|
91
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Your app description
|
@@ -0,0 +1 @@
|
|
1
|
+
require "skelerl"
|
data/lib/skelerl.rb
CHANGED
@@ -43,7 +43,11 @@ class ErlMapper
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def realize(force_testing=false)
|
46
|
-
contexts.collect {|mc| (force_testing || testing) ? mc.string :
|
46
|
+
contexts.collect {|mc| (force_testing || testing) ? mc.string : launch(mc.string) }
|
47
|
+
end
|
48
|
+
|
49
|
+
def launch(cmd)
|
50
|
+
Kernel.system cmd
|
47
51
|
end
|
48
52
|
|
49
53
|
def daemonize(cmd, &block)
|
data/skelerl.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{skelerl}
|
5
|
-
s.version = "0.0.
|
5
|
+
s.version = "0.0.3"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Ari Lerner"]
|
9
|
-
s.date = %q{2009-02-
|
10
|
-
s.description = %q{This skeleton app takes care of everything you'd need in an erlang application, but don't want to do yourself...
|
9
|
+
s.date = %q{2009-02-07}
|
10
|
+
s.description = %q{This skeleton app takes care of everything you'd need in an erlang application, but don't want to do yourself... Check out the README for more! Sat Feb 07 16:35:38 -0800 2009}
|
11
11
|
s.email = ["arilerner@mac.com"]
|
12
|
-
s.executables = ["
|
13
|
-
s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
|
14
|
-
s.files = ["History.txt", "Manifest.txt", "README.txt", "Rakefile", "
|
12
|
+
s.executables = ["gen_server", "skelerl"]
|
13
|
+
s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt", "generators/skeleton/templates/README.txt"]
|
14
|
+
s.files = ["History.txt", "Manifest.txt", "README.txt", "Rakefile", "bin/gen_server", "bin/skelerl", "config/hoe.rb", "config/requirements.rb", "ebin/packager.app", "examples/example_runner.rb", "generators/appfile/USAGE", "generators/appfile/appfile_generator.rb", "generators/appfile/templates/appfile.app", "generators/gen_server/USAGE", "generators/gen_server/gen_server_generator.rb", "generators/gen_server/templates/gen_server.erl", "generators/skeleton/USAGE", "generators/skeleton/skeleton_generator.rb", "generators/skeleton/templates/README.txt", "generators/skeleton/templates/Rakefile", "generators/skeleton/templates/gitignore", "include/empty", "lib/skelerl.rb", "lib/skelerl/core/object.rb", "lib/skelerl/erlpers/core/array.rb", "lib/skelerl/erlpers/core/object.rb", "lib/skelerl/erlpers/erl_mapper.rb", "lib/skelerl/erlpers/mappers/command.rb", "lib/skelerl/erlpers/mappers/context.rb", "lib/skelerl/erlpers/mappers/namespace.rb", "lib/skelerl/init.rb", "script/generate", "setup.rb", "skelerl.gemspec", "src/packager.erl", "tasks/build.rake", "tasks/deployment.rake", "tasks/environment.rake", "tasks/generate.rake", "tasks/website.rake", "test/erlpers/erl_mapper_spec.rb", "test/erlpers/object_spec.rb", "test/helper.rb"]
|
15
15
|
s.has_rdoc = true
|
16
16
|
s.homepage = %q{http://skelerl.rubyforge.org}
|
17
17
|
s.post_install_message = %q{}
|
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
s.rubyforge_project = %q{skelerl}
|
21
21
|
s.rubygems_version = %q{1.3.1}
|
22
|
-
s.summary = %q{This skeleton app takes care of everything you'd need in an erlang application, but don't want to do yourself...
|
22
|
+
s.summary = %q{This skeleton app takes care of everything you'd need in an erlang application, but don't want to do yourself... Check out the README for more! Sat Feb 07 16:35:38 -0800 2009}
|
23
23
|
|
24
24
|
if s.respond_to? :specification_version then
|
25
25
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
data/tasks/build.rake
CHANGED
@@ -2,12 +2,22 @@
|
|
2
2
|
require 'rake/clean'
|
3
3
|
require 'pp'
|
4
4
|
|
5
|
+
deps_dir = Dir.pwd + "/deps"
|
6
|
+
|
5
7
|
INCLUDE = File.dirname(__FILE__) + "/include"
|
6
|
-
ERLC_FLAGS = "-I#{INCLUDE} +warn_unused_vars +warn_unused_import"
|
7
8
|
|
8
|
-
|
9
|
+
DEPS = Dir["#{deps_dir}/*"].select {|d| d if File.directory? d }
|
10
|
+
DEPS_FILES = DEPS.map {|d| "./deps/#{File.basename(d)}" }
|
11
|
+
EXTRA_ERLC = DEPS_FILES.map {|a| "-pa #{a}/ebin" }.join(" ")
|
12
|
+
|
13
|
+
ERLC_FLAGS = "-I#{INCLUDE} +warn_unused_vars +warn_unused_import -o ebin -W0 #{EXTRA_ERLC}"
|
14
|
+
|
15
|
+
SRC = FileList["src/*.erl"]
|
9
16
|
SRC_OBJ = SRC.pathmap("%{src,ebin}X.beam")
|
10
17
|
|
18
|
+
DEP = DEPS_FILES.map {|d| FileList["#{d}/src/*.erl"]}
|
19
|
+
DEP_OBJ = DEP.map {|d| d.pathmap("%{src,ebin}X.beam")}
|
20
|
+
|
11
21
|
TEST = FileList['test/src/*.erl']
|
12
22
|
TEST_OBJ = TEST.pathmap("%{src,ebin}X.beam")
|
13
23
|
|
@@ -29,6 +39,13 @@ desc "Compile everything"
|
|
29
39
|
task :compile => ["src:compile", "test:compile"]
|
30
40
|
task :recompile => ["clean", "src:compile", "test:compile"]
|
31
41
|
|
42
|
+
desc "Compile deps"
|
43
|
+
task :compile_deps do
|
44
|
+
DEPS_FILES.each do |dir|
|
45
|
+
Kernel.system "cd #{dir} && rake compile"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
32
49
|
namespace :src do
|
33
50
|
desc "Compile src"
|
34
51
|
task :compile => ['ebin'] + SRC_OBJ
|
@@ -92,4 +109,24 @@ desc "Rebuild and repackage"
|
|
92
109
|
task :repackage => [:build_boot_scripts] do
|
93
110
|
cmd = "erl -pa ./ebin -s packager start -s init stop"
|
94
111
|
Kernel.system cmd
|
112
|
+
end
|
113
|
+
|
114
|
+
desc "Shell command"
|
115
|
+
task :shell do
|
116
|
+
cmd = "erl -pa ./ebin #{EXTRA_ERLC} -boot start_sasl"
|
117
|
+
Kernel.system cmd
|
118
|
+
end
|
119
|
+
|
120
|
+
desc "Update submodules"
|
121
|
+
task :update do
|
122
|
+
cmd = "git submodule update"
|
123
|
+
DEPS_FILES.each do |dir|
|
124
|
+
Kernel.system "cd #{dir} && #{cmd}"
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
desc "Build eunit"
|
129
|
+
task :build_eunit do
|
130
|
+
cmd = "cd test/include/eunit && make"
|
131
|
+
Kernel.system cmd
|
95
132
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: auser-skelerl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ari Lerner
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-02-
|
12
|
+
date: 2009-02-07 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -21,39 +21,41 @@ dependencies:
|
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 1.8.0
|
23
23
|
version:
|
24
|
-
description: This skeleton app takes care of everything you'd need in an erlang application, but don't want to do yourself...
|
24
|
+
description: This skeleton app takes care of everything you'd need in an erlang application, but don't want to do yourself... Check out the README for more! Sat Feb 07 16:35:38 -0800 2009
|
25
25
|
email:
|
26
26
|
- arilerner@mac.com
|
27
27
|
executables:
|
28
|
-
- appfile
|
29
|
-
- build-app
|
30
|
-
- erl_runner
|
31
28
|
- gen_server
|
29
|
+
- skelerl
|
32
30
|
extensions: []
|
33
31
|
|
34
32
|
extra_rdoc_files:
|
35
33
|
- History.txt
|
36
34
|
- Manifest.txt
|
37
35
|
- README.txt
|
36
|
+
- generators/skeleton/templates/README.txt
|
38
37
|
files:
|
39
38
|
- History.txt
|
40
39
|
- Manifest.txt
|
41
40
|
- README.txt
|
42
41
|
- Rakefile
|
43
|
-
- app_generators/appfile/USAGE
|
44
|
-
- app_generators/appfile/appfile_generator.rb
|
45
|
-
- app_generators/appfile/templates/appfile.app
|
46
|
-
- app_generators/gen_server/USAGE
|
47
|
-
- app_generators/gen_server/gen_server_generator.rb
|
48
|
-
- app_generators/gen_server/templates/gen_server.erl
|
49
|
-
- bin/appfile
|
50
|
-
- bin/build-app
|
51
|
-
- bin/erl_runner
|
52
42
|
- bin/gen_server
|
43
|
+
- bin/skelerl
|
53
44
|
- config/hoe.rb
|
54
45
|
- config/requirements.rb
|
55
46
|
- ebin/packager.app
|
56
47
|
- examples/example_runner.rb
|
48
|
+
- generators/appfile/USAGE
|
49
|
+
- generators/appfile/appfile_generator.rb
|
50
|
+
- generators/appfile/templates/appfile.app
|
51
|
+
- generators/gen_server/USAGE
|
52
|
+
- generators/gen_server/gen_server_generator.rb
|
53
|
+
- generators/gen_server/templates/gen_server.erl
|
54
|
+
- generators/skeleton/USAGE
|
55
|
+
- generators/skeleton/skeleton_generator.rb
|
56
|
+
- generators/skeleton/templates/README.txt
|
57
|
+
- generators/skeleton/templates/Rakefile
|
58
|
+
- generators/skeleton/templates/gitignore
|
57
59
|
- include/empty
|
58
60
|
- lib/skelerl.rb
|
59
61
|
- lib/skelerl/core/object.rb
|
@@ -102,6 +104,6 @@ rubyforge_project: skelerl
|
|
102
104
|
rubygems_version: 1.2.0
|
103
105
|
signing_key:
|
104
106
|
specification_version: 2
|
105
|
-
summary: This skeleton app takes care of everything you'd need in an erlang application, but don't want to do yourself...
|
107
|
+
summary: This skeleton app takes care of everything you'd need in an erlang application, but don't want to do yourself... Check out the README for more! Sat Feb 07 16:35:38 -0800 2009
|
106
108
|
test_files: []
|
107
109
|
|
data/bin/build-app
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
$:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
|
3
|
-
|
4
|
-
root_dir = ::File.expand_path( ::File.join(::File.dirname(__FILE__), "..", "ebin") )
|
5
|
-
|
6
|
-
if ARGV.size > 0
|
7
|
-
@name = ARGV.shift
|
8
|
-
@version = ARGV.shift || "0.1"
|
9
|
-
end
|
10
|
-
|
11
|
-
@version ||= "0.1"
|
12
|
-
@name ||= ::File.basename(::File.dirname( root_dir ))
|
13
|
-
|
14
|
-
INCLUDE = "include"
|
15
|
-
ERLC_FLAGS = "-I#{INCLUDE}"
|
16
|
-
|
17
|
-
cmd = "cd #{root_dir} && NAME=#{@name} VERSION=#{@version} rake build_boot_scripts"
|
18
|
-
|
19
|
-
puts "** Building #{@name} **"
|
20
|
-
puts "Running command #{cmd}"
|
21
|
-
|
22
|
-
%x[#{cmd}]
|
data/bin/erl_runner
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require "#{::File.dirname(__FILE__)}/../lib/skelerl"
|
3
|
-
require 'rubygems'
|
4
|
-
require 'optparse'
|
5
|
-
|
6
|
-
@opts = OptionParser.new
|
7
|
-
progname = File.basename(__FILE__, File.extname(__FILE__))
|
8
|
-
|
9
|
-
|
10
|
-
@opts.on('-v', '--verbose', 'Be verbose') { @verbose = true }
|
11
|
-
@opts.on('-t', '--test', 'Put in test mode') { @testing = true }
|
12
|
-
|
13
|
-
@opts.on_tail("-h", "--help", "Show this message") do
|
14
|
-
puts <<-EOP
|
15
|
-
Usage: #{progname} <filename> [options]
|
16
|
-
EOP
|
17
|
-
exit
|
18
|
-
end
|
19
|
-
|
20
|
-
@opts.parse(ARGV.dup)
|
21
|
-
|
22
|
-
instance_eval open(ARGV.pop).read
|
23
|
-
|
24
|
-
mappers.each do |mapper|
|
25
|
-
@testing ? puts(mapper.realize(@testing)) : mapper.realize(@testing)
|
26
|
-
end
|