sprout 1.0.32.pre → 1.0.35.pre
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sprout might be problematic. Click here for more details.
- data/Gemfile +2 -1
- data/Gemfile.lock +4 -2
- data/README.textile +12 -13
- data/VERSION +1 -0
- data/doc/Dir.html +288 -0
- data/doc/Rake/Task.html +184 -0
- data/doc/Sprout.html +144 -0
- data/doc/Sprout/ArchiveUnpacker.html +1246 -0
- data/doc/Sprout/Base.html +126 -0
- data/doc/Sprout/Base/ClassMethods.html +434 -0
- data/doc/Sprout/Concern.html +353 -0
- data/doc/Sprout/Daemon.html +166 -0
- data/doc/Sprout/Daemon/ClassMethods.html +244 -0
- data/doc/Sprout/Daemon/InstanceMethods.html +601 -0
- data/doc/Sprout/Errors.html +101 -0
- data/doc/Sprout/Errors/ArchiveUnpackerError.html +125 -0
- data/doc/Sprout/Errors/DestinationExistsError.html +133 -0
- data/doc/Sprout/Errors/DuplicateMemberError.html +132 -0
- data/doc/Sprout/Errors/ExecutableError.html +125 -0
- data/doc/Sprout/Errors/ExecutableRegistrationError.html +132 -0
- data/doc/Sprout/Errors/ExecutionError.html +121 -0
- data/doc/Sprout/Errors/GeneratorError.html +125 -0
- data/doc/Sprout/Errors/InvalidArgumentError.html +132 -0
- data/doc/Sprout/Errors/LoadError.html +121 -0
- data/doc/Sprout/Errors/MissingArgumentError.html +132 -0
- data/doc/Sprout/Errors/MissingExecutableError.html +132 -0
- data/doc/Sprout/Errors/MissingGeneratorError.html +132 -0
- data/doc/Sprout/Errors/MissingTemplateError.html +132 -0
- data/doc/Sprout/Errors/ProcessRunnerError.html +121 -0
- data/doc/Sprout/Errors/RemoteFileLoaderError.html +110 -0
- data/doc/Sprout/Errors/SproutError.html +114 -0
- data/doc/Sprout/Errors/UnknownArchiveType.html +122 -0
- data/doc/Sprout/Errors/UsageError.html +121 -0
- data/doc/Sprout/Errors/ValidationError.html +121 -0
- data/doc/Sprout/Errors/VersionRequirementNotMetError.html +121 -0
- data/doc/Sprout/Executable.html +173 -0
- data/doc/Sprout/Executable/Boolean.html +483 -0
- data/doc/Sprout/Executable/ClassMethods.html +417 -0
- data/doc/Sprout/Executable/CollectionParam.html +483 -0
- data/doc/Sprout/Executable/FileParam.html +484 -0
- data/doc/Sprout/Executable/Files.html +292 -0
- data/doc/Sprout/Executable/InstanceMethods.html +2006 -0
- data/doc/Sprout/Executable/Number.html +141 -0
- data/doc/Sprout/Executable/Param.html +2818 -0
- data/doc/Sprout/Executable/ParameterFactory.html +232 -0
- data/doc/Sprout/Executable/Path.html +223 -0
- data/doc/Sprout/Executable/Paths.html +253 -0
- data/doc/Sprout/Executable/StringParam.html +213 -0
- data/doc/Sprout/Executable/Strings.html +167 -0
- data/doc/Sprout/Executable/Url.html +160 -0
- data/doc/Sprout/Executable/Urls.html +170 -0
- data/doc/Sprout/FileTarget.html +1109 -0
- data/doc/Sprout/Generator.html +689 -0
- data/doc/Sprout/Generator/Base.html +1626 -0
- data/doc/Sprout/Generator/Command.html +690 -0
- data/doc/Sprout/Generator/DirectoryManifest.html +476 -0
- data/doc/Sprout/Generator/FileManifest.html +572 -0
- data/doc/Sprout/Generator/Manifest.html +377 -0
- data/doc/Sprout/Generator/TemplateManifest.html +196 -0
- data/doc/Sprout/GeneratorGenerator.html +1018 -0
- data/doc/Sprout/Library.html +1141 -0
- data/doc/Sprout/LibraryGenerator.html +309 -0
- data/doc/Sprout/Log.html +496 -0
- data/doc/Sprout/MXMLC.html +6373 -0
- data/doc/Sprout/Platform.html +714 -0
- data/doc/Sprout/ProcessRunner.html +1352 -0
- data/doc/Sprout/ProgressBar.html +376 -0
- data/doc/Sprout/ProgressBarImpl.html +2119 -0
- data/doc/Sprout/ProgressBarManager.html +434 -0
- data/doc/Sprout/ProgressBarOutputStream.html +416 -0
- data/doc/Sprout/RDocParser.html +211 -0
- data/doc/Sprout/RemoteFileLoader.html +172 -0
- data/doc/Sprout/RemoteFileTarget.html +679 -0
- data/doc/Sprout/ReversedProgressBar.html +194 -0
- data/doc/Sprout/RubyFeature.html +155 -0
- data/doc/Sprout/RubyFeature/ClassMethods.html +1065 -0
- data/doc/Sprout/RubyGenerator.html +764 -0
- data/doc/Sprout/Specification.html +767 -0
- data/doc/Sprout/System.html +191 -0
- data/doc/Sprout/System/BaseSystem.html +1455 -0
- data/doc/Sprout/System/JavaSystem.html +122 -0
- data/doc/Sprout/System/OSXSystem.html +335 -0
- data/doc/Sprout/System/ThreadMock.html +193 -0
- data/doc/Sprout/System/UnixSystem.html +584 -0
- data/doc/Sprout/System/VistaSystem.html +251 -0
- data/doc/Sprout/System/WinNixSystem.html +325 -0
- data/doc/Sprout/System/WinSystem.html +571 -0
- data/doc/Sprout/ToolGenerator.html +931 -0
- data/doc/Sprout/VERSION.html +128 -0
- data/doc/SproutTestCase.html +1412 -0
- data/doc/String.html +286 -0
- data/doc/_index.html +1035 -0
- data/doc/class_list.html +36 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +53 -0
- data/doc/css/style.css +310 -0
- data/doc/file.README.html +96 -0
- data/doc/file.archive_unpacker.html +288 -0
- data/doc/file.base.html +208 -0
- data/doc/file.base_system.html +278 -0
- data/doc/file.boolean.html +135 -0
- data/doc/file.collection_param.html +139 -0
- data/doc/file.command.html +126 -0
- data/doc/file.concern.html +136 -0
- data/doc/file.daemon.html +309 -0
- data/doc/file.dir.html +76 -0
- data/doc/file.directory_manifest.html +122 -0
- data/doc/file.errors.html +147 -0
- data/doc/file.executable.html +638 -0
- data/doc/file.file_manifest.html +109 -0
- data/doc/file.file_param.html +120 -0
- data/doc/file.file_target.html +140 -0
- data/doc/file.files.html +85 -0
- data/doc/file.generator.html +296 -0
- data/doc/file.generator_class.html +72 -0
- data/doc/file.generator_generator.html +137 -0
- data/doc/file.generator_test.html +92 -0
- data/doc/file.generator_test_helper.html +67 -0
- data/doc/file.java_system.html +62 -0
- data/doc/file.library.html +291 -0
- data/doc/file.library_generator.html +74 -0
- data/doc/file.log.html +100 -0
- data/doc/file.manifest.html +67 -0
- data/doc/file.mxmlc.html +740 -0
- data/doc/file.number.html +67 -0
- data/doc/file.osx_system.html +79 -0
- data/doc/file.param.html +491 -0
- data/doc/file.parameter_factory.html +119 -0
- data/doc/file.path.html +81 -0
- data/doc/file.paths.html +80 -0
- data/doc/file.platform.html +124 -0
- data/doc/file.process_runner.html +224 -0
- data/doc/file.progress_bar.html +390 -0
- data/doc/file.rdoc_parser.html +145 -0
- data/doc/file.remote_file_loader.html +117 -0
- data/doc/file.remote_file_target.html +176 -0
- data/doc/file.ruby_base.html +64 -0
- data/doc/file.ruby_feature.html +244 -0
- data/doc/file.ruby_generator.html +118 -0
- data/doc/file.ruby_input.html +62 -0
- data/doc/file.ruby_test_case.html +78 -0
- data/doc/file.ruby_test_helper.html +61 -0
- data/doc/file.specification.html +248 -0
- data/doc/file.sprout.html +64 -0
- data/doc/file.sprout_test_case.html +280 -0
- data/doc/file.string.html +72 -0
- data/doc/file.string_param.html +76 -0
- data/doc/file.strings.html +71 -0
- data/doc/file.system.html +86 -0
- data/doc/file.template_manifest.html +67 -0
- data/doc/file.tool.html +92 -0
- data/doc/file.tool_generator.html +90 -0
- data/doc/file.unix_system.html +128 -0
- data/doc/file.url.html +71 -0
- data/doc/file.urls.html +70 -0
- data/doc/file.version.html +71 -0
- data/doc/file.vista_system.html +69 -0
- data/doc/file.win_nix_system.html +88 -0
- data/doc/file.win_system.html +129 -0
- data/doc/file_list.html +230 -0
- data/doc/frames.html +13 -0
- data/doc/index.html +96 -0
- data/doc/js/app.js +202 -0
- data/doc/js/full_list.js +149 -0
- data/doc/js/jquery.js +154 -0
- data/doc/method_list.html +3355 -0
- data/doc/top-level-namespace.html +192 -0
- data/lib/sprout/archive_unpacker.rb +203 -137
- data/lib/sprout/base.rb +38 -11
- data/lib/sprout/concern.rb +51 -0
- data/lib/sprout/daemon.rb +256 -0
- data/lib/sprout/executable.rb +40 -11
- data/lib/sprout/executable/boolean.rb +47 -1
- data/lib/sprout/executable/collection_param.rb +33 -1
- data/lib/sprout/executable/file_param.rb +16 -3
- data/lib/sprout/executable/files.rb +5 -0
- data/lib/sprout/executable/number.rb +5 -1
- data/lib/sprout/executable/param.rb +232 -16
- data/lib/sprout/executable/parameter_factory.rb +39 -1
- data/lib/sprout/executable/path.rb +7 -1
- data/lib/sprout/executable/paths.rb +6 -1
- data/lib/sprout/executable/string_param.rb +8 -1
- data/lib/sprout/executable/strings.rb +7 -1
- data/lib/sprout/executable/url.rb +8 -1
- data/lib/sprout/executable/urls.rb +7 -1
- data/lib/sprout/file_target.rb +11 -11
- data/lib/sprout/generator.rb +244 -0
- data/lib/sprout/generator/base.rb +0 -94
- data/lib/sprout/generators/generator/generator_generator.rb +35 -1
- data/lib/sprout/generators/generator/templates/generator_class.rb +3 -3
- data/lib/sprout/library.rb +75 -0
- data/lib/sprout/log.rb +11 -12
- data/lib/sprout/process_runner.rb +29 -9
- data/lib/sprout/remote_file_target.rb +20 -9
- data/lib/sprout/system/base_system.rb +11 -3
- data/lib/sprout/test/sprout_test_case.rb +1 -0
- data/lib/sprout/version.rb +7 -11
- data/rakefile.rb +7 -12
- data/script/add_param_handler.rb +43 -0
- data/sprout.gemspec +2 -3
- data/test/fixtures/executable/fdb.rb +764 -0
- data/test/fixtures/executable/flex3sdk_gem/fdb +60 -0
- data/test/fixtures/executable/mxmlc.rb +9 -11
- data/test/unit/daemon_test.rb +61 -0
- data/test/unit/process_runner_test.rb +21 -0
- data/test/unit/remote_file_target_test.rb +45 -11
- data/test/unit/sprout_test_helper.rb +1 -1
- metadata +210 -29
@@ -0,0 +1,117 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<meta name="Content-Type" content="text/html; charset=utf-8" />
|
6
|
+
<title>File: remote_file_loader</title>
|
7
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
|
8
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
9
|
+
|
10
|
+
<script type="text/javascript" charset="utf-8">
|
11
|
+
relpath = '';
|
12
|
+
if (relpath != '') relpath += '/';
|
13
|
+
</script>
|
14
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
15
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
16
|
+
|
17
|
+
</head>
|
18
|
+
<body>
|
19
|
+
<script type="text/javascript" charset="utf-8">
|
20
|
+
if (window.top.frames.main) document.body.className = 'frames';
|
21
|
+
</script>
|
22
|
+
|
23
|
+
<div id="header">
|
24
|
+
<div id="menu">
|
25
|
+
|
26
|
+
<a href="_index.html" title="Index">Index</a> »
|
27
|
+
<span class="title">File: remote_file_loader</span>
|
28
|
+
|
29
|
+
|
30
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div id="search">
|
34
|
+
<a id="class_list_link" href="#">Class List</a>
|
35
|
+
<a id="method_list_link" href="#">Method List</a>
|
36
|
+
<a id ="file_list_link" href="#">File List</a>
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<div class="clear"></div>
|
40
|
+
</div>
|
41
|
+
|
42
|
+
<iframe id="search_frame"></iframe>
|
43
|
+
|
44
|
+
<div id="content"><div id='filecontents'>
|
45
|
+
<p>module Sprout</p>
|
46
|
+
|
47
|
+
<pre class="code"><span class='comment'>##
|
48
|
+
</span><span class='comment'># This class is used to load remote files from the network.
|
49
|
+
</span><span class='kw'>class</span> <span class='const'>RemoteFileLoader</span>
|
50
|
+
|
51
|
+
<span class='kw'>class</span> <span class='op'><<</span> <span class='kw'>self</span>
|
52
|
+
|
53
|
+
<span class='kw'>def</span> <span class='id load'>load</span> <span class='id uri'>uri</span><span class='comma'>,</span> <span class='id md5'>md5</span><span class='op'>=</span><span class='kw'>nil</span><span class='comma'>,</span> <span class='id display_name'>display_name</span><span class='op'>=</span><span class='kw'>nil</span>
|
54
|
+
<span class='id fetch'>fetch</span> <span class='id uri'>uri</span><span class='period'>.</span><span class='id to_s'>to_s</span><span class='comma'>,</span> <span class='id display_name'>display_name</span>
|
55
|
+
<span class='kw'>end</span>
|
56
|
+
|
57
|
+
<span class='id private'>private</span>
|
58
|
+
|
59
|
+
<span class='kw'>def</span> <span class='id fetch'>fetch</span> <span class='id uri'>uri</span><span class='comma'>,</span> <span class='id display_name'>display_name</span><span class='op'>=</span><span class='kw'>nil</span>
|
60
|
+
<span class='kw'>begin</span>
|
61
|
+
<span class='kw'>return</span> <span class='id open_uri'>open_uri</span> <span class='id uri'>uri</span><span class='comma'>,</span> <span class='id display_name'>display_name</span>
|
62
|
+
<span class='kw'>rescue</span> <span class='const'>SocketError</span> <span class='op'>=></span> <span class='id sock_err'>sock_err</span>
|
63
|
+
<span class='id raise'>raise</span> <span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>RemoteFileLoaderError</span><span class='period'>.</span><span class='id new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>[ERROR] Failed to load file from: '</span><span class='embexpr_beg'>#{</span><span class='id uri'>uri</span><span class='period'>.</span><span class='id to_s'>to_s</span><span class='rbrace'>}</span><span class='tstring_content'>' - Please check that your machine has a connection to the internet.\n[REMOTE ERROR] </span><span class='embexpr_beg'>#{</span><span class='id sock_err'>sock_err</span><span class='period'>.</span><span class='id to_s'>to_s</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
64
|
+
<span class='kw'>rescue</span> <span class='const'>OpenURI</span><span class='op'>::</span><span class='const'>HTTPError</span> <span class='op'>=></span> <span class='id http_err'>http_err</span>
|
65
|
+
<span class='id raise'>raise</span> <span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>RemoteFileLoaderError</span><span class='period'>.</span><span class='id new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>[ERROR] Failed to load file from: '</span><span class='embexpr_beg'>#{</span><span class='id uri'>uri</span><span class='period'>.</span><span class='id to_s'>to_s</span><span class='rbrace'>}</span><span class='tstring_content'>'\n[REMOTE ERROR] </span><span class='embexpr_beg'>#{</span><span class='id http_err'>http_err</span><span class='period'>.</span><span class='id io'>io</span><span class='period'>.</span><span class='id read'>read</span><span class='period'>.</span><span class='id strip'>strip</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
66
|
+
<span class='kw'>rescue</span> <span class='const'>Errno</span><span class='op'>::</span><span class='const'>ECONNREFUSED</span> <span class='op'>=></span> <span class='id econ_err'>econ_err</span>
|
67
|
+
<span class='id raise'>raise</span> <span class='const'>Errno</span><span class='op'>::</span><span class='const'>ECONNREFUSED</span><span class='period'>.</span><span class='id new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>[ERROR] Connection refused at: '</span><span class='embexpr_beg'>#{</span><span class='id uri'>uri</span><span class='period'>.</span><span class='id to_s'>to_s</span><span class='rbrace'>}</span><span class='tstring_content'>'</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
68
|
+
<span class='kw'>end</span>
|
69
|
+
<span class='kw'>end</span>
|
70
|
+
|
71
|
+
<span class='id private'>private</span>
|
72
|
+
|
73
|
+
<span class='kw'>def</span> <span class='id open_uri'>open_uri</span> <span class='id uri'>uri</span><span class='comma'>,</span> <span class='id display_name'>display_name</span><span class='op'>=</span><span class='kw'>nil</span>
|
74
|
+
<span class='id uri'>uri</span> <span class='op'>=</span> <span class='const'>URI</span><span class='period'>.</span><span class='id parse'>parse</span><span class='lparen'>(</span><span class='id uri'>uri</span><span class='rparen'>)</span>
|
75
|
+
<span class='id progress'>progress</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
76
|
+
<span class='id response'>response</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
77
|
+
<span class='id display_name'>display_name</span> <span class='op'>||=</span> <span class='id uri'>uri</span><span class='period'>.</span><span class='id path'>path</span><span class='period'>.</span><span class='id split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>/</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id pop'>pop</span>
|
78
|
+
|
79
|
+
<span class='comment'># Why was this here? Shouldn't the 'open' command work for other
|
80
|
+
</span> <span class='comment'># protocols like https?
|
81
|
+
</span> <span class='comment'>#
|
82
|
+
</span> <span class='comment'>#message = "The RemoteFileTask failed for #{display_name}. We can only handle HTTP requests at this time, it seems you were trying: '#{uri.scheme}'"
|
83
|
+
</span> <span class='comment'>#raise Sprout::Errors::RemoteFileLoaderError.new(message) if uri.scheme != 'http' || uri.scheme != 'https'
|
84
|
+
</span>
|
85
|
+
<span class='comment'># This is the strangest implementation I've seen in Ruby yet.
|
86
|
+
</span> <span class='comment'># Double lambda arguments with a block to top it off?! Gawsh.
|
87
|
+
</span> <span class='id open'>open</span><span class='lparen'>(</span><span class='id uri'>uri</span><span class='period'>.</span><span class='id to_s'>to_s</span><span class='comma'>,</span>
|
88
|
+
<span class='symbol'>:content_length_proc</span> <span class='op'>=></span> <span class='id lambda'>lambda</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id length'>length</span><span class='op'>|</span>
|
89
|
+
<span class='id length'>length</span> <span class='op'>||=</span> <span class='int'>0</span>
|
90
|
+
<span class='id progress'>progress</span> <span class='op'>=</span> <span class='const'>Sprout</span><span class='op'>::</span><span class='const'>ProgressBar</span><span class='period'>.</span><span class='id new'>new</span><span class='lparen'>(</span><span class='id display_name'>display_name</span><span class='comma'>,</span> <span class='id length'>length</span><span class='rparen'>)</span>
|
91
|
+
<span class='id progress'>progress</span><span class='period'>.</span><span class='id file_transfer_mode'>file_transfer_mode</span>
|
92
|
+
<span class='id progress'>progress</span><span class='period'>.</span><span class='id set'>set</span><span class='lparen'>(</span><span class='int'>0</span><span class='rparen'>)</span>
|
93
|
+
<span class='rbrace'>}</span><span class='comma'>,</span>
|
94
|
+
<span class='symbol'>:progress_proc</span> <span class='op'>=></span> <span class='id lambda'>lambda</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id length'>length</span><span class='op'>|</span>
|
95
|
+
<span class='id progress'>progress</span><span class='period'>.</span><span class='id set'>set</span> <span class='id length'>length</span> <span class='kw'>if</span> <span class='id progress'>progress</span>
|
96
|
+
<span class='rbrace'>}</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id f'>f</span><span class='op'>|</span>
|
97
|
+
<span class='id response'>response</span> <span class='op'>=</span> <span class='id f'>f</span><span class='period'>.</span><span class='id read'>read</span>
|
98
|
+
<span class='id progress'>progress</span><span class='period'>.</span><span class='id finish'>finish</span>
|
99
|
+
<span class='kw'>end</span>
|
100
|
+
|
101
|
+
<span class='id response'>response</span>
|
102
|
+
<span class='kw'>end</span>
|
103
|
+
|
104
|
+
<span class='kw'>end</span>
|
105
|
+
<span class='kw'>end</span></pre>
|
106
|
+
|
107
|
+
<p>end</p>
|
108
|
+
</div></div>
|
109
|
+
|
110
|
+
<div id="footer">
|
111
|
+
Generated on Wed Dec 22 11:58:32 2010 by
|
112
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
113
|
+
0.6.3 (ruby-1.9.2).
|
114
|
+
</div>
|
115
|
+
|
116
|
+
</body>
|
117
|
+
</html>
|
@@ -0,0 +1,176 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<meta name="Content-Type" content="text/html; charset=utf-8" />
|
6
|
+
<title>File: remote_file_target</title>
|
7
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
|
8
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
9
|
+
|
10
|
+
<script type="text/javascript" charset="utf-8">
|
11
|
+
relpath = '';
|
12
|
+
if (relpath != '') relpath += '/';
|
13
|
+
</script>
|
14
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
15
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
16
|
+
|
17
|
+
</head>
|
18
|
+
<body>
|
19
|
+
<script type="text/javascript" charset="utf-8">
|
20
|
+
if (window.top.frames.main) document.body.className = 'frames';
|
21
|
+
</script>
|
22
|
+
|
23
|
+
<div id="header">
|
24
|
+
<div id="menu">
|
25
|
+
|
26
|
+
<a href="_index.html" title="Index">Index</a> »
|
27
|
+
<span class="title">File: remote_file_target</span>
|
28
|
+
|
29
|
+
|
30
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div id="search">
|
34
|
+
<a id="class_list_link" href="#">Class List</a>
|
35
|
+
<a id="method_list_link" href="#">Method List</a>
|
36
|
+
<a id ="file_list_link" href="#">File List</a>
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<div class="clear"></div>
|
40
|
+
</div>
|
41
|
+
|
42
|
+
<iframe id="search_frame"></iframe>
|
43
|
+
|
44
|
+
<div id="content"><div id='filecontents'>
|
45
|
+
<p>require ‘digest/md5’</p>
|
46
|
+
|
47
|
+
<p>module Sprout</p>
|
48
|
+
|
49
|
+
<pre class="code"><span class='kw'>class</span> <span class='const'>RemoteFileTarget</span> <span class='op'><</span> <span class='const'>FileTarget</span>
|
50
|
+
|
51
|
+
<span class='id attr_accessor'>attr_accessor</span> <span class='symbol'>:archive_type</span>
|
52
|
+
<span class='id attr_accessor'>attr_accessor</span> <span class='symbol'>:url</span>
|
53
|
+
<span class='id attr_accessor'>attr_accessor</span> <span class='symbol'>:md5</span>
|
54
|
+
|
55
|
+
<span class='kw'>def</span> <span class='id validate'>validate</span>
|
56
|
+
<span class='kw'>super</span>
|
57
|
+
<span class='id raise'>raise</span> <span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>ValidationError</span><span class='period'>.</span><span class='id new'>new</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>RemoteFileTarget.url is a required field</span><span class='tstring_end'>"</span></span> <span class='kw'>if</span> <span class='id url'>url</span><span class='period'>.</span><span class='id nil?'>nil?</span>
|
58
|
+
<span class='id raise'>raise</span> <span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>ValidationError</span><span class='period'>.</span><span class='id new'>new</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>RemoteFileTarget.md5 is a required field</span><span class='tstring_end'>"</span></span> <span class='kw'>if</span> <span class='id md5'>md5</span><span class='period'>.</span><span class='id nil?'>nil?</span>
|
59
|
+
<span class='id raise'>raise</span> <span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>ValidationError</span><span class='period'>.</span><span class='id new'>new</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>RemoteFileTarget.archive_type is a required field</span><span class='tstring_end'>"</span></span> <span class='kw'>if</span> <span class='id archive_type'>archive_type</span><span class='period'>.</span><span class='id nil?'>nil?</span>
|
60
|
+
<span class='kw'>end</span>
|
61
|
+
|
62
|
+
<span class='kw'>def</span> <span class='id resolve'>resolve</span>
|
63
|
+
<span class='id validate'>validate</span>
|
64
|
+
<span class='id load_unpack_or_ignore_archive'>load_unpack_or_ignore_archive</span>
|
65
|
+
<span class='kw'>self</span>
|
66
|
+
<span class='kw'>end</span>
|
67
|
+
|
68
|
+
<span class='comment'>##
|
69
|
+
</span> <span class='comment'># Do not cache this value...
|
70
|
+
</span> <span class='comment'>#
|
71
|
+
</span> <span class='comment'># This response can change over time IF:
|
72
|
+
</span> <span class='comment'># - The downloaded bytes do not match the expected MD5
|
73
|
+
</span> <span class='comment'># - AND the user confirms the prompt that they are OK with this
|
74
|
+
</span> <span class='kw'>def</span> <span class='id downloaded_file'>downloaded_file</span>
|
75
|
+
<span class='const'>File</span><span class='period'>.</span><span class='id join'>join</span><span class='lparen'>(</span><span class='const'>Sprout</span><span class='period'>.</span><span class='id cache'>cache</span><span class='comma'>,</span> <span class='id pkg_name'>pkg_name</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id md5'>md5</span><span class='rbrace'>}</span><span class='tstring_content'>.</span><span class='embexpr_beg'>#{</span><span class='id archive_type'>archive_type</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
76
|
+
<span class='kw'>end</span>
|
77
|
+
|
78
|
+
<span class='kw'>def</span> <span class='id unpacked_file'>unpacked_file</span>
|
79
|
+
<span class='id upcased_pkg'>upcased_pkg</span> <span class='op'>=</span> <span class='id pkg_name'>pkg_name</span><span class='period'>.</span><span class='id upcase'>upcase</span>
|
80
|
+
<span class='id upcased_version'>upcased_version</span> <span class='op'>=</span> <span class='id pkg_version'>pkg_version</span><span class='period'>.</span><span class='id upcase'>upcase</span><span class='period'>.</span><span class='id gsub'>gsub</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\.</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>_</span><span class='tstring_end'>'</span></span>
|
81
|
+
<span class='const'>ENV</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>SPROUT_</span><span class='embexpr_beg'>#{</span><span class='id upcased_pkg'>upcased_pkg</span><span class='rbrace'>}</span><span class='tstring_content'>_</span><span class='embexpr_beg'>#{</span><span class='id upcased_version'>upcased_version</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span> <span class='op'>||</span>
|
82
|
+
<span class='const'>ENV</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>SPROUT_</span><span class='embexpr_beg'>#{</span><span class='id upcased_pkg'>upcased_pkg</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span> <span class='op'>||</span>
|
83
|
+
<span class='const'>ENV</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id upcased_pkg'>upcased_pkg</span><span class='rbrace'>}</span><span class='tstring_content'>_</span><span class='embexpr_beg'>#{</span><span class='id upcased_version'>upcased_version</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span><span class='rbracket'>]</span> <span class='op'>||</span>
|
84
|
+
<span class='const'>ENV</span><span class='lbracket'>[</span><span class='id upcased_pkg'>upcased_pkg</span><span class='rbracket'>]</span> <span class='op'>||</span>
|
85
|
+
<span class='const'>File</span><span class='period'>.</span><span class='id join'>join</span><span class='lparen'>(</span><span class='const'>Sprout</span><span class='period'>.</span><span class='id cache'>cache</span><span class='comma'>,</span> <span class='id pkg_name'>pkg_name</span><span class='comma'>,</span> <span class='id pkg_version'>pkg_version</span><span class='rparen'>)</span>
|
86
|
+
<span class='kw'>end</span>
|
87
|
+
|
88
|
+
<span class='id protected'>protected</span>
|
89
|
+
|
90
|
+
<span class='kw'>def</span> <span class='id logger'>logger</span>
|
91
|
+
<span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Log</span>
|
92
|
+
<span class='kw'>end</span>
|
93
|
+
|
94
|
+
<span class='kw'>def</span> <span class='id expand_local_path'>expand_local_path</span> <span class='id path'>path</span>
|
95
|
+
<span class='const'>File</span><span class='period'>.</span><span class='id join'>join</span> <span class='id unpacked_file'>unpacked_file</span><span class='comma'>,</span> <span class='id path'>path</span>
|
96
|
+
<span class='kw'>end</span>
|
97
|
+
|
98
|
+
<span class='id private'>private</span>
|
99
|
+
|
100
|
+
<span class='kw'>def</span> <span class='id load_unpack_or_ignore_archive'>load_unpack_or_ignore_archive</span>
|
101
|
+
<span class='kw'>if</span><span class='lparen'>(</span><span class='op'>!</span><span class='id unpacked_files_exist?'>unpacked_files_exist?</span><span class='rparen'>)</span>
|
102
|
+
<span class='kw'>if</span><span class='lparen'>(</span><span class='op'>!</span><span class='const'>File</span><span class='period'>.</span><span class='id exists?'>exists?</span><span class='lparen'>(</span><span class='id downloaded_file'>downloaded_file</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
103
|
+
<span class='id bytes'>bytes</span> <span class='op'>=</span> <span class='id download_archive'>download_archive</span>
|
104
|
+
<span class='id write_archive'>write_archive</span> <span class='id bytes'>bytes</span>
|
105
|
+
<span class='kw'>end</span>
|
106
|
+
|
107
|
+
<span class='comment'># If we *just* downloaded the file,
|
108
|
+
</span> <span class='comment'># use the bytes directly, otherwise
|
109
|
+
</span> <span class='comment'># read them off disk from a previous
|
110
|
+
</span> <span class='comment'># download attempt:
|
111
|
+
</span> <span class='id bytes'>bytes</span> <span class='op'>||=</span> <span class='const'>File</span><span class='period'>.</span><span class='id open'>open</span><span class='lparen'>(</span><span class='id downloaded_file'>downloaded_file</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>rb</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id read'>read</span>
|
112
|
+
|
113
|
+
<span class='kw'>if</span> <span class='id should_unpack?'>should_unpack?</span><span class='lparen'>(</span><span class='id bytes'>bytes</span><span class='comma'>,</span> <span class='id md5'>md5</span><span class='rparen'>)</span>
|
114
|
+
<span class='id unpack_archive'>unpack_archive</span>
|
115
|
+
<span class='kw'>end</span>
|
116
|
+
<span class='kw'>end</span>
|
117
|
+
<span class='kw'>end</span>
|
118
|
+
|
119
|
+
<span class='kw'>def</span> <span class='id unpacked_files_exist?'>unpacked_files_exist?</span>
|
120
|
+
<span class='const'>File</span><span class='period'>.</span><span class='id exists?'>exists?</span><span class='lparen'>(</span><span class='id unpacked_file'>unpacked_file</span><span class='rparen'>)</span> <span class='op'>&&</span> <span class='op'>!</span><span class='const'>Dir</span><span class='period'>.</span><span class='id empty?'>empty?</span><span class='lparen'>(</span><span class='id unpacked_file'>unpacked_file</span><span class='rparen'>)</span>
|
121
|
+
<span class='kw'>end</span>
|
122
|
+
|
123
|
+
<span class='kw'>def</span> <span class='id download_archive'>download_archive</span>
|
124
|
+
<span class='const'>Sprout</span><span class='op'>::</span><span class='const'>RemoteFileLoader</span><span class='period'>.</span><span class='id load'>load</span> <span class='id url'>url</span><span class='comma'>,</span> <span class='id pkg_name'>pkg_name</span>
|
125
|
+
<span class='kw'>end</span>
|
126
|
+
|
127
|
+
<span class='kw'>def</span> <span class='id write_archive'>write_archive</span> <span class='id bytes'>bytes</span>
|
128
|
+
<span class='const'>FileUtils</span><span class='period'>.</span><span class='id mkdir_p'>mkdir_p</span> <span class='const'>File</span><span class='period'>.</span><span class='id dirname'>dirname</span><span class='lparen'>(</span><span class='id downloaded_file'>downloaded_file</span><span class='rparen'>)</span>
|
129
|
+
<span class='const'>File</span><span class='period'>.</span><span class='id open'>open</span> <span class='id downloaded_file'>downloaded_file</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>wb+</span><span class='tstring_end'>'</span></span> <span class='kw'>do</span> <span class='op'>|</span><span class='id f'>f</span><span class='op'>|</span>
|
130
|
+
<span class='id f'>f</span><span class='period'>.</span><span class='id write'>write</span> <span class='id bytes'>bytes</span>
|
131
|
+
<span class='kw'>end</span>
|
132
|
+
<span class='kw'>end</span>
|
133
|
+
|
134
|
+
<span class='kw'>def</span> <span class='id should_unpack?'>should_unpack?</span> <span class='id bytes'>bytes</span><span class='comma'>,</span> <span class='id expected_md5sum'>expected_md5sum</span>
|
135
|
+
<span class='kw'>if</span> <span class='id expected_md5sum'>expected_md5sum</span>
|
136
|
+
<span class='id downloaded_md5'>downloaded_md5</span> <span class='op'>=</span> <span class='const'>Digest</span><span class='op'>::</span><span class='const'>MD5</span><span class='period'>.</span><span class='id new'>new</span>
|
137
|
+
<span class='id downloaded_md5'>downloaded_md5</span> <span class='op'><<</span> <span class='id bytes'>bytes</span>
|
138
|
+
|
139
|
+
<span class='kw'>if</span><span class='lparen'>(</span><span class='id expected_md5sum'>expected_md5sum</span> <span class='op'>!=</span> <span class='id downloaded_md5'>downloaded_md5</span><span class='period'>.</span><span class='id hexdigest'>hexdigest</span><span class='rparen'>)</span>
|
140
|
+
<span class='kw'>return</span> <span class='id prompt_for_md5_failure'>prompt_for_md5_failure</span> <span class='id downloaded_md5'>downloaded_md5</span><span class='comma'>,</span> <span class='id expected_md5sum'>expected_md5sum</span>
|
141
|
+
<span class='kw'>end</span>
|
142
|
+
<span class='kw'>end</span>
|
143
|
+
<span class='kw'>return</span> <span class='kw'>true</span>
|
144
|
+
<span class='kw'>end</span>
|
145
|
+
|
146
|
+
<span class='kw'>def</span> <span class='id prompt_for_md5_failure'>prompt_for_md5_failure</span> <span class='id downloaded_md5'>downloaded_md5</span><span class='comma'>,</span> <span class='id expected_md5sum'>expected_md5sum</span>
|
147
|
+
<span class='id puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>The MD5 Sum of the downloaded file (</span><span class='embexpr_beg'>#{</span><span class='id downloaded_md5'>downloaded_md5</span><span class='period'>.</span><span class='id hexdigest'>hexdigest</span><span class='rbrace'>}</span><span class='tstring_content'>) does not match what was expected (</span><span class='embexpr_beg'>#{</span><span class='id expected_md5sum'>expected_md5sum</span><span class='rbrace'>}</span><span class='tstring_content'>).</span><span class='tstring_end'>"</span></span>
|
148
|
+
<span class='id puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Would you like to install anyway? [Yn]</span><span class='tstring_end'>"</span></span>
|
149
|
+
<span class='id user_response'>user_response</span> <span class='op'>=</span> <span class='gvar'>$stdin</span><span class='period'>.</span><span class='id gets'>gets</span><span class='period'>.</span><span class='id chomp!'>chomp!</span>
|
150
|
+
<span class='kw'>if</span><span class='lparen'>(</span><span class='id user_response'>user_response</span><span class='period'>.</span><span class='id downcase'>downcase</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>y</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
151
|
+
<span class='kw'>return</span> <span class='kw'>true</span>
|
152
|
+
<span class='kw'>else</span>
|
153
|
+
<span class='id raise'>raise</span> <span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>RemoteFileLoaderError</span><span class='period'>.</span><span class='id new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>MD5 Checksum failed</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
154
|
+
<span class='kw'>end</span>
|
155
|
+
<span class='kw'>end</span>
|
156
|
+
|
157
|
+
<span class='kw'>def</span> <span class='id unpack_archive'>unpack_archive</span>
|
158
|
+
<span class='id logger'>logger</span><span class='period'>.</span><span class='id puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Unpacking archive at </span><span class='embexpr_beg'>#{</span><span class='id downloaded_file'>downloaded_file</span><span class='rbrace'>}</span><span class='tstring_content'> now. This can take anywhere from a few seconds to many minutes depending on your OS and the size of the archive.\n\nIf you're on windows, consider using this ample time to look into improving the zip utils in Ruby...</span><span class='tstring_end'>"</span></span>
|
159
|
+
<span class='const'>FileUtils</span><span class='period'>.</span><span class='id mkdir_p'>mkdir_p</span> <span class='id unpacked_file'>unpacked_file</span>
|
160
|
+
<span class='id unpacker'>unpacker</span> <span class='op'>=</span> <span class='const'>Sprout</span><span class='op'>::</span><span class='const'>ArchiveUnpacker</span><span class='period'>.</span><span class='id new'>new</span>
|
161
|
+
<span class='id unpacker'>unpacker</span><span class='period'>.</span><span class='id unpack'>unpack</span> <span class='id downloaded_file'>downloaded_file</span><span class='comma'>,</span> <span class='id unpacked_file'>unpacked_file</span><span class='comma'>,</span> <span class='id archive_type'>archive_type</span>
|
162
|
+
<span class='kw'>end</span>
|
163
|
+
|
164
|
+
<span class='kw'>end</span></pre>
|
165
|
+
|
166
|
+
<p>end</p>
|
167
|
+
</div></div>
|
168
|
+
|
169
|
+
<div id="footer">
|
170
|
+
Generated on Wed Dec 22 11:58:32 2010 by
|
171
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
172
|
+
0.6.3 (ruby-1.9.2).
|
173
|
+
</div>
|
174
|
+
|
175
|
+
</body>
|
176
|
+
</html>
|
@@ -0,0 +1,64 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<meta name="Content-Type" content="text/html; charset=utf-8" />
|
6
|
+
<title>File: ruby_base</title>
|
7
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
|
8
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
9
|
+
|
10
|
+
<script type="text/javascript" charset="utf-8">
|
11
|
+
relpath = '';
|
12
|
+
if (relpath != '') relpath += '/';
|
13
|
+
</script>
|
14
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
15
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
16
|
+
|
17
|
+
</head>
|
18
|
+
<body>
|
19
|
+
<script type="text/javascript" charset="utf-8">
|
20
|
+
if (window.top.frames.main) document.body.className = 'frames';
|
21
|
+
</script>
|
22
|
+
|
23
|
+
<div id="header">
|
24
|
+
<div id="menu">
|
25
|
+
|
26
|
+
<a href="_index.html" title="Index">Index</a> »
|
27
|
+
<span class="title">File: ruby_base</span>
|
28
|
+
|
29
|
+
|
30
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div id="search">
|
34
|
+
<a id="class_list_link" href="#">Class List</a>
|
35
|
+
<a id="method_list_link" href="#">Method List</a>
|
36
|
+
<a id ="file_list_link" href="#">File List</a>
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<div class="clear"></div>
|
40
|
+
</div>
|
41
|
+
|
42
|
+
<iframe id="search_frame"></iframe>
|
43
|
+
|
44
|
+
<div id="content"><div id='filecontents'>
|
45
|
+
<p>require ‘sprout’</p>
|
46
|
+
|
47
|
+
<p>module <%= input.camel_case %></p>
|
48
|
+
|
49
|
+
<pre class="code"><span class='kw'>class</span> <span class='const'>Base</span>
|
50
|
+
<span class='id include'>include</span> <span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Executable</span>
|
51
|
+
|
52
|
+
<span class='kw'>end</span></pre>
|
53
|
+
|
54
|
+
<p>end</p>
|
55
|
+
</div></div>
|
56
|
+
|
57
|
+
<div id="footer">
|
58
|
+
Generated on Wed Dec 22 11:58:32 2010 by
|
59
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
60
|
+
0.6.3 (ruby-1.9.2).
|
61
|
+
</div>
|
62
|
+
|
63
|
+
</body>
|
64
|
+
</html>
|
@@ -0,0 +1,244 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<meta name="Content-Type" content="text/html; charset=utf-8" />
|
6
|
+
<title>File: ruby_feature</title>
|
7
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
|
8
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
9
|
+
|
10
|
+
<script type="text/javascript" charset="utf-8">
|
11
|
+
relpath = '';
|
12
|
+
if (relpath != '') relpath += '/';
|
13
|
+
</script>
|
14
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
15
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
16
|
+
|
17
|
+
</head>
|
18
|
+
<body>
|
19
|
+
<script type="text/javascript" charset="utf-8">
|
20
|
+
if (window.top.frames.main) document.body.className = 'frames';
|
21
|
+
</script>
|
22
|
+
|
23
|
+
<div id="header">
|
24
|
+
<div id="menu">
|
25
|
+
|
26
|
+
<a href="_index.html" title="Index">Index</a> »
|
27
|
+
<span class="title">File: ruby_feature</span>
|
28
|
+
|
29
|
+
|
30
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div id="search">
|
34
|
+
<a id="class_list_link" href="#">Class List</a>
|
35
|
+
<a id="method_list_link" href="#">Method List</a>
|
36
|
+
<a id ="file_list_link" href="#">File List</a>
|
37
|
+
</div>
|
38
|
+
|
39
|
+
<div class="clear"></div>
|
40
|
+
</div>
|
41
|
+
|
42
|
+
<iframe id="search_frame"></iframe>
|
43
|
+
|
44
|
+
<div id="content"><div id='filecontents'>
|
45
|
+
<p>module Sprout</p>
|
46
|
+
|
47
|
+
<pre class="code"><span class='comment'>##
|
48
|
+
</span><span class='comment'># This class represents a Feature that is written in
|
49
|
+
</span><span class='comment'># Ruby code that exists on the other side of the
|
50
|
+
</span><span class='comment'># Ruby load path.
|
51
|
+
</span><span class='comment'>#
|
52
|
+
</span><span class='comment'># The idea here, is that one can +include+ the Sprout::RubyFeature
|
53
|
+
</span><span class='comment'># module into their concrete class, and then accept
|
54
|
+
</span><span class='comment'># requests to +register+ and +load+ from clients that
|
55
|
+
</span><span class='comment'># are interested in pluggable features.
|
56
|
+
</span><span class='comment'>#
|
57
|
+
</span><span class='comment'># An example is as follows:
|
58
|
+
</span><span class='comment'>#
|
59
|
+
</span><span class='comment'># require 'sprout'
|
60
|
+
</span><span class='comment'>#
|
61
|
+
</span><span class='comment'># class MyClass
|
62
|
+
</span><span class='comment'># include Sprout::RubyFeature
|
63
|
+
</span><span class='comment'># end
|
64
|
+
</span><span class='comment'>#
|
65
|
+
</span><span class='comment'># In some other Ruby file:
|
66
|
+
</span><span class='comment'>#
|
67
|
+
</span><span class='comment'># MyClass.load :other, 'other_gem', '>= 1.0pre'
|
68
|
+
</span><span class='comment'>#
|
69
|
+
</span><span class='comment'># In the desired Ruby file:
|
70
|
+
</span><span class='comment'>#
|
71
|
+
</span><span class='comment'># class OtherClass
|
72
|
+
</span><span class='comment'># include Sprout::Executable
|
73
|
+
</span><span class='comment'>#
|
74
|
+
</span><span class='comment'># set :name, :other
|
75
|
+
</span><span class='comment'># set :pkg_name, 'other_gem'
|
76
|
+
</span><span class='comment'># set :pkg_version, '1.0.pre'
|
77
|
+
</span><span class='comment'>#
|
78
|
+
</span><span class='comment'># # do something...
|
79
|
+
</span><span class='comment'># end
|
80
|
+
</span><span class='comment'>#
|
81
|
+
</span><span class='comment'># MyClass.register OtherClass.new
|
82
|
+
</span><span class='comment'>#
|
83
|
+
</span><span class='kw'>module</span> <span class='const'>RubyFeature</span>
|
84
|
+
|
85
|
+
<span class='id extend'>extend</span> <span class='const'>Concern</span>
|
86
|
+
|
87
|
+
<span class='kw'>module</span> <span class='const'>ClassMethods</span>
|
88
|
+
|
89
|
+
<span class='comment'>##
|
90
|
+
</span> <span class='comment'># Register a new feature for future lookups
|
91
|
+
</span> <span class='kw'>def</span> <span class='id register'>register</span> <span class='id entity'>entity</span>
|
92
|
+
<span class='id validate_registration'>validate_registration</span> <span class='id entity'>entity</span>
|
93
|
+
<span class='id registered_entities'>registered_entities</span><span class='period'>.</span><span class='id unshift'>unshift</span> <span class='id entity'>entity</span>
|
94
|
+
<span class='id entity'>entity</span>
|
95
|
+
<span class='kw'>end</span>
|
96
|
+
|
97
|
+
<span class='comment'>##
|
98
|
+
</span> <span class='comment'># Load a feature by name.
|
99
|
+
</span> <span class='kw'>def</span> <span class='id load'>load</span> <span class='id name_or_names'>name_or_names</span><span class='comma'>,</span> <span class='id pkg_name'>pkg_name</span><span class='op'>=</span><span class='kw'>nil</span><span class='comma'>,</span> <span class='id version_requirement'>version_requirement</span><span class='op'>=</span><span class='kw'>nil</span>
|
100
|
+
<span class='id entity'>entity</span> <span class='op'>=</span> <span class='id entity_for'>entity_for</span> <span class='id name_or_names'>name_or_names</span><span class='comma'>,</span> <span class='id pkg_name'>pkg_name</span><span class='comma'>,</span> <span class='id version_requirement'>version_requirement</span>
|
101
|
+
<span class='kw'>if</span><span class='lparen'>(</span><span class='id entity'>entity</span><span class='period'>.</span><span class='id nil?'>nil?</span><span class='rparen'>)</span>
|
102
|
+
<span class='comment'># Try to require the pkg_name:
|
103
|
+
</span> <span class='id require_ruby_package'>require_ruby_package</span> <span class='id pkg_name'>pkg_name</span> <span class='kw'>unless</span> <span class='id pkg_name'>pkg_name</span><span class='period'>.</span><span class='id nil?'>nil?</span>
|
104
|
+
<span class='comment'># Update any entities that registered from our require:
|
105
|
+
</span> <span class='id update_registered_entities'>update_registered_entities</span>
|
106
|
+
<span class='comment'># search for the requested entity:
|
107
|
+
</span> <span class='id entity'>entity</span> <span class='op'>=</span> <span class='id entity_for'>entity_for</span> <span class='id name_or_names'>name_or_names</span><span class='comma'>,</span> <span class='id pkg_name'>pkg_name</span><span class='comma'>,</span> <span class='id version_requirement'>version_requirement</span>
|
108
|
+
<span class='kw'>end</span>
|
109
|
+
|
110
|
+
<span class='kw'>if</span><span class='lparen'>(</span><span class='id entity'>entity</span><span class='period'>.</span><span class='id nil?'>nil?</span><span class='rparen'>)</span>
|
111
|
+
<span class='id message'>message</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>The requested entity: (</span><span class='embexpr_beg'>#{</span><span class='id name_or_names'>name_or_names</span><span class='rbrace'>}</span><span class='tstring_content'>) with pkg_name: (</span><span class='embexpr_beg'>#{</span><span class='id pkg_name'>pkg_name</span><span class='rbrace'>}</span><span class='tstring_content'>) and version: </span><span class='tstring_end'>"</span></span>
|
112
|
+
<span class='id message'>message</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>(</span><span class='embexpr_beg'>#{</span><span class='id version_requirement'>version_requirement</span><span class='rbrace'>}</span><span class='tstring_content'>) does not appear to be loaded.</span><span class='tstring_end'>"</span></span>
|
113
|
+
<span class='id message'>message</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>\n</span><span class='tstring_end'>"</span></span>
|
114
|
+
<span class='id message'>message</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>We did find (</span><span class='embexpr_beg'>#{</span><span class='id registered_entities'>registered_entities</span><span class='period'>.</span><span class='id size'>size</span><span class='rbrace'>}</span><span class='tstring_content'>) registered entities in that package:\n\n</span><span class='tstring_end'>"</span></span>
|
115
|
+
<span class='id registered_entities'>registered_entities</span><span class='period'>.</span><span class='id each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id other'>other</span><span class='op'>|</span>
|
116
|
+
<span class='id message'>message</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>>> name: (</span><span class='embexpr_beg'>#{</span><span class='id other'>other</span><span class='period'>.</span><span class='id name'>name</span><span class='rbrace'>}</span><span class='tstring_content'>) pkg_name: (</span><span class='embexpr_beg'>#{</span><span class='id other'>other</span><span class='period'>.</span><span class='id pkg_name'>pkg_name</span><span class='rbrace'>}</span><span class='tstring_content'>) pkg_version: (</span><span class='embexpr_beg'>#{</span><span class='id other'>other</span><span class='period'>.</span><span class='id pkg_version'>pkg_version</span><span class='rbrace'>}</span><span class='tstring_content'>)\n</span><span class='tstring_end'>"</span></span>
|
117
|
+
<span class='kw'>end</span>
|
118
|
+
<span class='id message'>message</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>\n\nYou may need to update your Gemfile and run 'bundle install' </span><span class='tstring_end'>"</span></span>
|
119
|
+
<span class='id message'>message</span> <span class='op'><<</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>to update your local gems.\n\n</span><span class='tstring_end'>"</span></span>
|
120
|
+
<span class='id raise'>raise</span> <span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>LoadError</span><span class='period'>.</span><span class='id new'>new</span> <span class='id message'>message</span>
|
121
|
+
<span class='kw'>end</span>
|
122
|
+
|
123
|
+
<span class='id resolve_file_target'>resolve_file_target</span> <span class='id entity'>entity</span>
|
124
|
+
<span class='id entity'>entity</span>
|
125
|
+
<span class='kw'>end</span>
|
126
|
+
|
127
|
+
<span class='kw'>def</span> <span class='id clear_entities!'>clear_entities!</span>
|
128
|
+
<span class='ivar'>@registered_entities</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
129
|
+
<span class='kw'>end</span>
|
130
|
+
|
131
|
+
<span class='id protected'>protected</span>
|
132
|
+
|
133
|
+
<span class='kw'>def</span> <span class='id resolve_file_target'>resolve_file_target</span> <span class='id entity'>entity</span>
|
134
|
+
<span class='kw'>if</span><span class='lparen'>(</span><span class='id entity'>entity</span><span class='period'>.</span><span class='id respond_to?'>respond_to?</span> <span class='symbol'>:resolve</span><span class='rparen'>)</span>
|
135
|
+
<span class='id entity'>entity</span><span class='period'>.</span><span class='id resolve'>resolve</span>
|
136
|
+
<span class='kw'>elsif</span><span class='lparen'>(</span><span class='id entity'>entity</span><span class='period'>.</span><span class='id respond_to?'>respond_to?</span> <span class='symbol'>:file_target</span><span class='rparen'>)</span>
|
137
|
+
<span class='id file_target'>file_target</span> <span class='op'>=</span> <span class='id entity'>entity</span><span class='period'>.</span><span class='id file_target'>file_target</span>
|
138
|
+
<span class='kw'>if</span><span class='lparen'>(</span><span class='id file_target'>file_target</span><span class='period'>.</span><span class='id respond_to?'>respond_to?</span> <span class='symbol'>:resolve</span><span class='rparen'>)</span>
|
139
|
+
<span class='id file_target'>file_target</span><span class='period'>.</span><span class='id resolve'>resolve</span>
|
140
|
+
<span class='kw'>end</span>
|
141
|
+
<span class='kw'>end</span>
|
142
|
+
<span class='kw'>end</span>
|
143
|
+
|
144
|
+
<span class='kw'>def</span> <span class='id validate_registration'>validate_registration</span> <span class='id entity'>entity</span>
|
145
|
+
<span class='kw'>if</span><span class='lparen'>(</span><span class='op'>!</span><span class='id entity'>entity</span><span class='period'>.</span><span class='id respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:name</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id entity'>entity</span><span class='period'>.</span><span class='id name'>name</span><span class='period'>.</span><span class='id nil?'>nil?</span><span class='rparen'>)</span>
|
146
|
+
<span class='id raise'>raise</span> <span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>UsageError</span><span class='period'>.</span><span class='id new'>new</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Cannot register a RubyFeature without a 'name' getter</span><span class='tstring_end'>"</span></span>
|
147
|
+
<span class='kw'>end</span>
|
148
|
+
<span class='kw'>end</span>
|
149
|
+
|
150
|
+
<span class='comment'>#
|
151
|
+
</span> <span class='comment'># Used by the Generator::Base to update inputs from
|
152
|
+
</span> <span class='comment'># empty class definitions to instances..
|
153
|
+
</span> <span class='kw'>def</span> <span class='id update_registered_entities'>update_registered_entities</span>
|
154
|
+
<span class='kw'>end</span>
|
155
|
+
|
156
|
+
<span class='kw'>def</span> <span class='id entity_for'>entity_for</span> <span class='id name_or_names'>name_or_names</span><span class='comma'>,</span> <span class='id pkg_name'>pkg_name</span><span class='comma'>,</span> <span class='id version_requirement'>version_requirement</span>
|
157
|
+
<span class='comment'># These commented blocks help immensely when debugging
|
158
|
+
</span> <span class='comment'># loading and registration issues, please leave them here:
|
159
|
+
</span> <span class='comment'>#puts "+++++++++++++++++++++++++++"
|
160
|
+
</span> <span class='comment'>#puts ">> entity_for #{name_or_names} pkg_name: #{pkg_name} version: #{version_requirement}"
|
161
|
+
</span> <span class='comment'>#registered_entities.each do |entity|
|
162
|
+
</span> <span class='comment'>#puts ">> entity: #{entity.name} platform: #{entity.platform} pkg_name: #{entity.pkg_name} version: #{entity.pkg_version}"
|
163
|
+
</span> <span class='comment'>#end
|
164
|
+
</span> <span class='id registered_entities'>registered_entities</span><span class='period'>.</span><span class='id reverse'>reverse</span><span class='period'>.</span><span class='id select'>select</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id entity'>entity</span><span class='op'>|</span>
|
165
|
+
<span class='id satisfies_name?'>satisfies_name?</span><span class='lparen'>(</span><span class='id entity'>entity</span><span class='comma'>,</span> <span class='id name_or_names'>name_or_names</span><span class='rparen'>)</span> <span class='op'>&&</span>
|
166
|
+
<span class='id satisfies_platform?'>satisfies_platform?</span><span class='lparen'>(</span><span class='id entity'>entity</span><span class='rparen'>)</span> <span class='op'>&&</span>
|
167
|
+
<span class='id satisfies_pkg_name?'>satisfies_pkg_name?</span><span class='lparen'>(</span><span class='id entity'>entity</span><span class='comma'>,</span> <span class='id pkg_name'>pkg_name</span><span class='rparen'>)</span> <span class='op'>&&</span>
|
168
|
+
<span class='id satisfies_version?'>satisfies_version?</span><span class='lparen'>(</span><span class='id entity'>entity</span><span class='comma'>,</span> <span class='id version_requirement'>version_requirement</span><span class='rparen'>)</span>
|
169
|
+
<span class='kw'>end</span><span class='period'>.</span><span class='id first'>first</span>
|
170
|
+
<span class='kw'>end</span>
|
171
|
+
|
172
|
+
<span class='kw'>def</span> <span class='id satisfies_environment?'>satisfies_environment?</span> <span class='id entity'>entity</span><span class='comma'>,</span> <span class='id environment'>environment</span>
|
173
|
+
<span class='comment'>#puts ">> env: #{entity.environment} vs. #{environment}"
|
174
|
+
</span> <span class='id environment'>environment</span><span class='period'>.</span><span class='id nil?'>nil?</span> <span class='op'>||</span> <span class='op'>!</span><span class='id entity'>entity</span><span class='period'>.</span><span class='id respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:environment</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id entity'>entity</span><span class='period'>.</span><span class='id environment'>environment</span><span class='period'>.</span><span class='id to_s'>to_s</span> <span class='op'>==</span> <span class='id environment'>environment</span><span class='period'>.</span><span class='id to_s'>to_s</span>
|
175
|
+
<span class='kw'>end</span>
|
176
|
+
|
177
|
+
<span class='kw'>def</span> <span class='id satisfies_pkg_name?'>satisfies_pkg_name?</span> <span class='id entity'>entity</span><span class='comma'>,</span> <span class='id expected'>expected</span>
|
178
|
+
<span class='comment'>#puts ">> pkg_name: #{entity.pkg_name} vs. #{expected}"
|
179
|
+
</span> <span class='id expected'>expected</span><span class='period'>.</span><span class='id nil?'>nil?</span> <span class='op'>||</span> <span class='op'>!</span><span class='id entity'>entity</span><span class='period'>.</span><span class='id respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:pkg_name</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id entity'>entity</span><span class='period'>.</span><span class='id pkg_name'>pkg_name</span><span class='period'>.</span><span class='id to_s'>to_s</span> <span class='op'>==</span> <span class='id expected'>expected</span><span class='period'>.</span><span class='id to_s'>to_s</span>
|
180
|
+
<span class='kw'>end</span>
|
181
|
+
|
182
|
+
<span class='kw'>def</span> <span class='id satisfies_name?'>satisfies_name?</span> <span class='id entity'>entity</span><span class='comma'>,</span> <span class='id expected'>expected</span>
|
183
|
+
<span class='comment'>#puts ">> name: #{entity.name} vs. #{expected}"
|
184
|
+
</span> <span class='kw'>return</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='id expected'>expected</span><span class='period'>.</span><span class='id nil?'>nil?</span> <span class='op'>||</span> <span class='op'>!</span><span class='id entity'>entity</span><span class='period'>.</span><span class='id respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:name</span><span class='rparen'>)</span>
|
185
|
+
<span class='kw'>if</span> <span class='id expected'>expected</span><span class='period'>.</span><span class='id is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Array</span><span class='rparen'>)</span>
|
186
|
+
<span class='kw'>return</span> <span class='id expected'>expected</span><span class='period'>.</span><span class='id include?'>include?</span> <span class='id entity'>entity</span><span class='period'>.</span><span class='id name'>name</span>
|
187
|
+
<span class='kw'>end</span>
|
188
|
+
<span class='kw'>return</span> <span class='id expected'>expected</span><span class='period'>.</span><span class='id to_s'>to_s</span> <span class='op'>==</span> <span class='id entity'>entity</span><span class='period'>.</span><span class='id name'>name</span><span class='period'>.</span><span class='id to_s'>to_s</span>
|
189
|
+
<span class='kw'>end</span>
|
190
|
+
|
191
|
+
<span class='kw'>def</span> <span class='id satisfies_platform?'>satisfies_platform?</span> <span class='id entity'>entity</span>
|
192
|
+
<span class='comment'>#puts">> satisfies platform?"
|
193
|
+
</span> <span class='comment'># If not platform is defined, it's assumed to work on all platforms:
|
194
|
+
</span> <span class='kw'>return</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id entity'>entity</span><span class='period'>.</span><span class='id respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:platform</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id entity'>entity</span><span class='period'>.</span><span class='id platform'>platform</span><span class='period'>.</span><span class='id nil?'>nil?</span>
|
195
|
+
<span class='comment'>#puts ">> platform: #{entity.platform}"
|
196
|
+
</span> <span class='const'>Sprout</span><span class='period'>.</span><span class='id current_system'>current_system</span><span class='period'>.</span><span class='id can_execute?'>can_execute?</span><span class='lparen'>(</span><span class='id entity'>entity</span><span class='period'>.</span><span class='id platform'>platform</span><span class='rparen'>)</span>
|
197
|
+
<span class='kw'>end</span>
|
198
|
+
|
199
|
+
<span class='kw'>def</span> <span class='id satisfies_version?'>satisfies_version?</span> <span class='id entity'>entity</span><span class='comma'>,</span> <span class='id version_requirement'>version_requirement</span><span class='op'>=</span><span class='kw'>nil</span>
|
200
|
+
<span class='kw'>return</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='id version_requirement'>version_requirement</span><span class='period'>.</span><span class='id nil?'>nil?</span>
|
201
|
+
<span class='id req_version'>req_version</span> <span class='op'>=</span> <span class='const'>Gem</span><span class='op'>::</span><span class='const'>Requirement</span><span class='period'>.</span><span class='id create'>create</span> <span class='id version_requirement'>version_requirement</span>
|
202
|
+
<span class='id req_version'>req_version</span><span class='period'>.</span><span class='id satisfied_by?'>satisfied_by?</span><span class='lparen'>(</span><span class='const'>Gem</span><span class='op'>::</span><span class='const'>Version</span><span class='period'>.</span><span class='id create'>create</span><span class='lparen'>(</span><span class='id entity'>entity</span><span class='period'>.</span><span class='id pkg_version'>pkg_version</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
203
|
+
<span class='kw'>end</span>
|
204
|
+
|
205
|
+
<span class='kw'>def</span> <span class='id require_ruby_package'>require_ruby_package</span> <span class='id name'>name</span>
|
206
|
+
<span class='kw'>begin</span>
|
207
|
+
<span class='id require'>require</span> <span class='id name'>name</span><span class='period'>.</span><span class='id to_s'>to_s</span>
|
208
|
+
<span class='kw'>rescue</span> <span class='const'>LoadError</span> <span class='op'>=></span> <span class='id e'>e</span>
|
209
|
+
<span class='id raise'>raise</span> <span class='const'>Sprout</span><span class='op'>::</span><span class='const'>Errors</span><span class='op'>::</span><span class='const'>LoadError</span><span class='period'>.</span><span class='id new'>new</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Could not load the required file (</span><span class='embexpr_beg'>#{</span><span class='id name'>name</span><span class='rbrace'>}</span><span class='tstring_content'>) - Maybe you need to run 'gem install </span><span class='embexpr_beg'>#{</span><span class='id name'>name</span><span class='rbrace'>}</span><span class='tstring_content'>' or maybe 'bundle install'?</span><span class='tstring_end'>"</span></span>
|
210
|
+
<span class='kw'>end</span>
|
211
|
+
<span class='kw'>end</span>
|
212
|
+
|
213
|
+
<span class='comment'>##
|
214
|
+
</span> <span class='comment'># An entity has the following parameters:
|
215
|
+
</span> <span class='comment'># name
|
216
|
+
</span> <span class='comment'># pkg_name
|
217
|
+
</span> <span class='comment'># pkg_version
|
218
|
+
</span> <span class='comment'># platform
|
219
|
+
</span> <span class='comment'>#
|
220
|
+
</span> <span class='kw'>def</span> <span class='id registered_entities'>registered_entities</span>
|
221
|
+
<span class='ivar'>@registered_entities</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
222
|
+
<span class='kw'>end</span>
|
223
|
+
<span class='kw'>end</span>
|
224
|
+
|
225
|
+
<span class='kw'>end</span></pre>
|
226
|
+
|
227
|
+
<p>end</p>
|
228
|
+
|
229
|
+
<p>## # Mixin on the Rake::Task so # that our concrete entities # can
|
230
|
+
interoperate with some # knowledge of each other. class Rake::Task</p>
|
231
|
+
|
232
|
+
<pre class="code"><span class='id attr_accessor'>attr_accessor</span> <span class='symbol'>:sprout_entity</span></pre>
|
233
|
+
|
234
|
+
<p>end</p>
|
235
|
+
</div></div>
|
236
|
+
|
237
|
+
<div id="footer">
|
238
|
+
Generated on Wed Dec 22 11:58:32 2010 by
|
239
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
240
|
+
0.6.3 (ruby-1.9.2).
|
241
|
+
</div>
|
242
|
+
|
243
|
+
</body>
|
244
|
+
</html>
|