geminstaller 0.2.5 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +8 -0
- data/LICENSE +1 -1
- data/Manifest.txt +6 -2
- data/README.txt +6 -4
- data/TODO.txt +35 -30
- data/ci/README_CI.txt +22 -0
- data/ci/cruise +50 -0
- data/cruise_config.rb +11 -0
- data/focused_spec.sh +2 -0
- data/focused_spec_debug.sh +2 -0
- data/geminstaller.yml +5 -3
- data/lib/geminstaller.rb +1 -1
- data/lib/geminstaller/autogem.rb +2 -2
- data/lib/geminstaller/backward_compatibility.rb +1 -1
- data/lib/geminstaller/dependency_injector.rb +5 -3
- data/lib/geminstaller/enhanced_stream_ui.rb +17 -7
- data/lib/geminstaller/gem_command_manager.rb +15 -12
- data/lib/geminstaller/gem_interaction_handler.rb +8 -0
- data/lib/geminstaller/gem_list_checker.rb +1 -1
- data/lib/geminstaller/gem_runner_proxy.rb +1 -1
- data/lib/geminstaller/gem_spec_manager.rb +25 -13
- data/lib/geminstaller/install_processor.rb +21 -6
- data/lib/geminstaller/missing_dependency_finder.rb +5 -0
- data/lib/geminstaller/requires.rb +16 -6
- data/lib/geminstaller/ruby_gem.rb +7 -2
- data/lib/geminstaller/rubygems_version_checker.rb +11 -5
- data/lib/geminstaller/source_index_search_adapter.rb +41 -0
- data/lib/geminstaller/valid_platform_selector.rb +5 -0
- data/start_local_gem_server.sh +1 -1
- data/test/test_all.rb +15 -10
- data/website/metainfo.yaml +8 -2
- data/website/src/code/index.page +49 -2
- data/website/src/community/index.page +1 -1
- data/website/src/community/links.page +2 -0
- data/website/src/documentation/documentation.page +14 -11
- data/website/src/documentation/tutorials.page +16 -10
- data/website/src/faq.page +15 -0
- data/website/src/index.page +21 -7
- metadata +51 -39
- data/ci/cruisecontrol +0 -50
- data/lib/geminstaller/gem_command_line_proxy.rb +0 -32
@@ -11,4 +11,4 @@ h2. Rubyforge Bug/Feature Tracker and Mailing Lists
|
|
11
11
|
|
12
12
|
h2. Source Code
|
13
13
|
|
14
|
-
* Subversion Repository:
|
14
|
+
* Subversion Repository: "http://geminstaller.rubyforge.org/svn/trunk":http://geminstaller.rubyforge.org/svn/trunk
|
@@ -25,7 +25,7 @@ h2. Table of Contents
|
|
25
25
|
** "<code>check_for_upgrade</code> config property":#check_for_upgrade_config_property
|
26
26
|
** "<code>fix_dependencies</code> config property":#fix_dependencies_config_property
|
27
27
|
** "<code>no_autogem</code> config property":#no_autogem_config_property
|
28
|
-
** "<code>prefer_binary_platform</code> config property":#prefer_binary_platform_config_property
|
28
|
+
** "<code>prefer_binary_platform</code> config property":#prefer_binary_platform_config_property (deprecated)
|
29
29
|
** "<code>include_config</code> directive":#include_config
|
30
30
|
* "Using GemInstaller with Ruby on Rails or Other Ruby Apps":#using_geminstaller_with_ruby_on_rails_or_other_ruby_apps
|
31
31
|
** "Invoking <code>GemInstaller</code> from Rails":#invoking_geminstaller_from_rails
|
@@ -119,8 +119,6 @@ h3(#redirect_stderr_to_stdout_option). <code>--redirect-stderr-to-stdout</code>
|
|
119
119
|
|
120
120
|
Currently, the GemInstaller <code>--sudo</code> option works by recursively re-invoking the <code>geminstaller</code> executable via <code>system()</code>. This option is automatically added in this case to ensure that errors that would normally go to <code>stderr</code> are printed to <code>stdout</code>. There are other solutions to this problem, but as of Ruby 1.8.5, there is no _easy_ way to make a system call which will give a return code AND show both stderr and stdout _synchronously_. GemInstaller does not have and will not have any third-party runtime dependencies, so I needed to roll my own solution, and this was The Simplest Thing That Could Possibly Work.
|
121
121
|
|
122
|
-
When RubyGems supports platform specification from the command line, I won't have to select platforms programatically via stdin, and I'll be able to invoke <code>gem</code> directly via sudo. Until then, though, there must be this recursive hackishness to handle sudo.
|
123
|
-
|
124
122
|
h3(#geminstaller_output_option). <code>--geminstaller-output</code> option
|
125
123
|
|
126
124
|
The <code>--geminstaller-output</code> option controls what GemInstaller prints out about it's internal activity. It is a comma-delimited list (no spaces), which can specify any of these output types:
|
@@ -183,7 +181,7 @@ defaults:
|
|
183
181
|
check_for_upgrade: [ true | FALSE ]
|
184
182
|
fix_dependencies: [ true | FALSE ]
|
185
183
|
no_autogem: [ true | FALSE ]
|
186
|
-
prefer_binary_platform: [ TRUE | false ]
|
184
|
+
prefer_binary_platform: [ TRUE | false ] (deprecated)
|
187
185
|
gems:
|
188
186
|
- name: [ gem name ]
|
189
187
|
version: '[ any valid version specification for this gem, e.g. >= 1.0.0 ]'
|
@@ -196,6 +194,7 @@ gems:
|
|
196
194
|
- name: [ another gem name ]
|
197
195
|
- name: [ yet another gem name ]
|
198
196
|
(etc...)
|
197
|
+
<%= include_config("#{File.expand_path(File.dirname(__FILE__))}/path/to/included_snippet.yml") %>
|
199
198
|
</pre>
|
200
199
|
|
201
200
|
All properties are optional, except for the gem name. If a default is specified, it will be used unless the gem specifically overrides it.
|
@@ -214,7 +213,7 @@ There are many different options for version specifications. For more info, see
|
|
214
213
|
|
215
214
|
h3(#platform_config_property). <code>platform</code> config property
|
216
215
|
|
217
|
-
Defaults to 'ruby'. This is the platform for the gem. This must match a platform which is valid and available for the gem name and version specification. See the sections on "Automatic Platform Detection":#automatic_platform_detection and the "<code>prefer_binary_platform</code> config property":#prefer_binary_platform for more info on how platforms are handled.
|
216
|
+
Defaults to 'ruby'. This is the platform for the gem. This must match a platform which is valid and available for the gem name and version specification. See the sections on "Automatic Platform Detection":#automatic_platform_detection and the "<code>prefer_binary_platform</code> config property":#prefer_binary_platform (deprecated) for more info on how platforms are handled.
|
218
217
|
|
219
218
|
h3(#install_options_config_property). <code>install_options</code> config property
|
220
219
|
|
@@ -234,7 +233,9 @@ h3(#no_autogem_config_property). <code>no_autogem</code> config property
|
|
234
233
|
|
235
234
|
Defaults to false. This option will prevent the <code>autogem</code> command from automatically requiring a gem. If you only want to require a few gems, you could set the default for this property to true, and only enable it (by setting a false value) for specific gems. For more details see "Automatically Requiring Gems with the <code>autogem</code> Method":#automatically_requiring_gems_with_the_autogem_method.
|
236
235
|
|
237
|
-
h3(#prefer_binary_platform_config_property). <code>prefer_binary_platform</code> config property
|
236
|
+
h3(#prefer_binary_platform_config_property). <code>prefer_binary_platform</code> config property (deprecated)
|
237
|
+
|
238
|
+
DEPRECATED: This is deprecated when using RubyGems >= 0.9.5, which handles platform detection.
|
238
239
|
|
239
240
|
Defaults to true. GemInstaller automatically guesses at the correct platform for gem which have no platform specified. Any platform which is not 'ruby' is considered a 'binary' platform.
|
240
241
|
|
@@ -362,20 +363,22 @@ gems:
|
|
362
363
|
|
363
364
|
h2(#automatic_platform_detection). Automatic Platform Detection
|
364
365
|
|
365
|
-
|
366
|
+
Up through version 0.9.4, RubyGems did not provide any way to specify a platform programatically or via the command line, and prompted via stdin if a specified version of a gem has any binary or platform-specific releases. RubyGems 0.9.5 and later should correctly determine the correct platform to install, and GemInstaller will automatically use this feature.
|
366
367
|
|
367
|
-
|
368
|
+
However, if you must run older versions of RubyGems <= 0.9.4, GemInstaller still includes support for automatically selecting the platform without any stdin prompts. If a multi-platform gem version is found, GemInstaller will handle the list prompt, and automatically select the correct platform.
|
368
369
|
|
369
|
-
|
370
|
+
This means that you don't have to worry about what version of RubyGems your app will run on - GemInstaller handles automatic platform selection on all RubyGems versions.
|
370
371
|
|
371
|
-
|
372
|
+
If you do want explicit control over the platform which is used, all you need to do is specify the <code>'platform'</code> property for any multiplatform gems can be specified in the geminstaller config file. If you know what platform you want for a specific gem, and you only run GemInstaller on one platform, you can hardcode this value. Even if you run GemInstaller on multiple platforms (and therefore can't hardcode the platform string), you can use <code>erb</code> to programatically pick the correct platform. See "Using <code>erb</code> in config files":#using_erb_in_config_files for an example.
|
372
373
|
|
373
|
-
See the section on the "<code>prefer_binary_platform</code> config property":#
|
374
|
+
See the section on the "<code>prefer_binary_platform</code> config property":#prefer_binary_platform_config_property (deprecated) for more info.
|
374
375
|
|
375
376
|
h2(#dealing_with_sudo). Dealing with sudo and root-owned RubyGem installations
|
376
377
|
|
377
378
|
If you only run geminstaller on Windows, you don't have to worry about this section :)
|
378
379
|
|
380
|
+
<strong>Important Note:</strong> For security, the sudo command does NOT pass most environment variables. See the faq item on "Environment Variables and sudo":../faq.html#environment_vars_and_sudo for more info.
|
381
|
+
|
379
382
|
On many unix-like systems (Mac, Linux, etc.), the root user will own the local installation of RubyGems (often /usr/local/ruby) and/or the executable directory where gem executables are installed (often /usr/local/bin). If this is the case, then gems must be installed and uninstalled by the root user, or via the sudo command. This presents a problem for geminstaller, which must have this same permission to automatically install gems.
|
380
383
|
|
381
384
|
There are several different solutions this problem. The solutions that are available are also determined by the way you use geminstaller (whether you call it from the executable, or use the GemInstaller classes directly from Ruby).
|
@@ -8,7 +8,7 @@ If anything is unclear, or if you'd like to see a tutorial on a topic, please su
|
|
8
8
|
* "Bootstrapping your GemInstaller Config with the <code>--print-rogue-gems</code> option":#bootstrapping_your_geminstaller_config
|
9
9
|
* "Using the <code>autogem</code> Option to Automatically Require Gems":#using_the_autogem_option_to_automatically_require_gems
|
10
10
|
* "Integrating GemInstaller into Ruby on Rails":#integrating_geminstaller_into_ruby_on_rails
|
11
|
-
* "Using Common or Shared Config Files":#using_common_or_shared_config_files
|
11
|
+
* "Using Common or Shared Config Files or Snippets":#using_common_or_shared_config_files
|
12
12
|
* "Running GemInstaller from Capistrano":#running_geminstaller_from_capistrano
|
13
13
|
|
14
14
|
h2(#installing_geminstaller). Installing GemInstaller
|
@@ -33,10 +33,10 @@ That was easy, wasn't it? This config file should specify the exact versions fo
|
|
33
33
|
|
34
34
|
Gotchas/Notes:
|
35
35
|
|
36
|
-
# If you generated the file on a unix/mac system with compiled gems and then try to run it on a different platform (like windows) which does not have a compiler, you may get errors. The "<code>prefer_binary_platform</code> config property":documentation.html#prefer_binary_platform_config_property will try to guess at the correct platform, but if a binary version of the gem does not exist for your platform, or if <code>prefer_binary_platform</code> fails to guess the right platform, you may still fail.
|
36
|
+
# If you generated the file on a unix/mac system with compiled gems and then try to run it on a different platform (like windows) which does not have a compiler, you may get errors. The "<code>prefer_binary_platform</code> config property":documentation.html#prefer_binary_platform_config_property (deprecated) will try to guess at the correct platform, but if a binary version of the gem does not exist for your platform, or if <code>prefer_binary_platform</code> fails to guess the right platform, you may still fail.
|
37
37
|
# The <code>--print-rogue-gems</code> option generates *exact* version specifications. This means that you won't ever get any gem upgrades by running GemInstaller with the standard generated file. This may be good (an upgrade can never break your app unexpectedly). However, you may wish to modify some of the version specifications to allow for upgrades. If you do this, remember to set the "<code>check_for_upgrade</code> config property":documentation.html#check_for_upgrade_config_property to true, but be aware that this will cause GemInstaller to check the remote gem server for upgrades each time it runs, and cause it to run slow or fail if the server is unavailable.
|
38
38
|
|
39
|
-
See also: Docs on "<code>--print-rogue-gems</code> option":documentation.html#print_rogue_gems_option, "<code>
|
39
|
+
See also: Docs on "<code>--print-rogue-gems</code> option":documentation.html#print_rogue_gems_option, "<code>check_for_upgrade</code> config property":documentation.html#check_for_upgrade_config_property, and "<code>prefer_binary_platform</code> config property":documentation.html#prefer_binary_platform_config_property (deprecated).
|
40
40
|
|
41
41
|
h2(#using_the_autogem_option_to_automatically_require_gems). Using the <code>autogem</code> Option to Automatically Require Gems option
|
42
42
|
|
@@ -76,7 +76,7 @@ h2(#integrating_geminstaller_into_ruby_on_rails). Integrating GemInstaller into
|
|
76
76
|
|
77
77
|
GemInstaller can be configured to automatically install all gems in the config file, and add them to the load path when Rails boots. This means that you can check out and run your application anywhere, without having to worry about manually ensuring that the required dependency gems are installed. This works with Webrick and Mongrel.
|
78
78
|
|
79
|
-
IMPORTANT NOTE: Currently, there is
|
79
|
+
IMPORTANT NOTE: Currently, there is an issue with installing Mongrel and Rails gems on Rails startup (the old versions are already on the LOAD_PATH, so a restart is required to pick up the new ones). See "Known Issues":../index.html#known_issues for details.
|
80
80
|
|
81
81
|
First, you need a Rails app. I'll let you handle this step on your own. See the "Rails documentation":http://www.rubyonrails.org/docs for details.
|
82
82
|
|
@@ -272,17 +272,23 @@ That's about it!
|
|
272
272
|
See also: Docs on "Using GemInstaller with Ruby on Rails or Other Ruby Apps":documentation.html#using_geminstaller_with_ruby_on_rails_or_other_ruby_apps.
|
273
273
|
|
274
274
|
|
275
|
-
h2(#using_common_or_shared_config_files). Using Common or Shared Config Files
|
275
|
+
h2(#using_common_or_shared_config_files). Using Common or Shared Config Files or Snippets
|
276
276
|
|
277
|
-
GemInstaller supports multiple config files, with the last config files in the list overriding the previous ones. This means you could do any of the following:
|
277
|
+
GemInstaller supports multiple config files, with the last config files in the list overriding the previous ones. It also supports the "<code>include_config</code>":documentation.html#include_config property in the <code>geminstaller.yml</code> file, which allows you to share a YAML snippet across multiple config files. This means you could do any of the following:
|
278
278
|
|
279
|
-
*
|
280
|
-
|
281
|
-
|
279
|
+
* With multiple config files:
|
280
|
+
** Have a common config file across all your projects, which is shared via an svn:external, and a custom config file to override or add gems which are not in the common config.
|
281
|
+
** Have a common config file across all development machines, shared on a windows share or NFS mounted drive, with machine- or platform-specific gems listed in local config files.
|
282
|
+
** Have config files that are specific to certain environments such as development and test, which will not be included when GemInstaller is run in a demo or production environment.
|
283
|
+
* With the "<code>include_config</code>":documentation.html#include_config property:
|
284
|
+
** Shared YAML snippets across multiple geminstaller.yml files via an svn:external.
|
285
|
+
** Extract geminstaller.yml entries that are duplicated across multiple files to a single shared include snippet file.
|
286
|
+
** Use a common include to simultaneously upgrade to the same version of a gem dependency across multiple projects.
|
287
|
+
** Extract complicated or shared ERB logic in geminstaller.yml (such as automatically determining the correct version of a gem based on an environment variable) into a separate file.
|
282
288
|
|
283
289
|
TODO: Finish writing examples of this, for now see docs on the "<code>--config</code>":documentation.html#config_option option.
|
284
290
|
|
285
|
-
See also: Docs on the "<code>--config</code>":documentation.html#config_option option.
|
291
|
+
See also: Docs on the "<code>--config</code>":documentation.html#config_option option, Docs on the "<code>include_config</code>":documentation.html#include_config property.
|
286
292
|
|
287
293
|
|
288
294
|
h2(#running_geminstaller_from_capistrano). Running GemInstaller from Capistrano
|
data/website/src/faq.page
CHANGED
@@ -3,5 +3,20 @@ title: FAQ
|
|
3
3
|
---
|
4
4
|
h1. Frequently Asked Questions
|
5
5
|
|
6
|
+
|
7
|
+
<span id="environment_vars_and_sudo"/>
|
8
|
+
Q: Why can't I use environment variables via ERB in geminstaller.yml when using sudo?<br/>
|
9
|
+
A: For security, the sudo command does NOT pass most environment variables. That means if you are trying to use an environment variable to control logic in your geminstaller.yml (for example to dynamically specify a gem version), then it won't work! I don't yet have a good workaround for this, other than not using sudo. I may add an option to auto-parse environment variables from the command line, like Rake. Let me know if you have ideas.
|
10
|
+
|
11
|
+
Q: Why do some gems (like BlueCloth) always get reinstalled, even though they are already installed?<br/>
|
12
|
+
A: Dunno, this is either a bug in the gem or in RubyGems. It isn't a problem with GemInstaller AFAIK, it happens even if you install manually via 'gem install'. Haven't had time to debug, let me know if you figure it out.
|
13
|
+
|
14
|
+
Q: What about gems like RMagick that have platform-specific binary dependencies?<br/>
|
15
|
+
A: You are on your own, this is outside of the scope of GemInstaller. The geminstaller.yml file is parsed with ERB, so you can put whatever hooks you want to perform necessary system setup and/or prereq validation. You can also google or check the RMagick home page: "http://rmagick.rubyforge.org/":http://rmagick.rubyforge.org/
|
16
|
+
|
6
17
|
Q: Why don't the tests/specs run on Windows?<br/>
|
7
18
|
A: Dunno, something with the process handling on windows for TestGemHome and EmbeddedGemServer. The manual application tests under spec/smoketest/ work on windows, though.
|
19
|
+
|
20
|
+
|
21
|
+
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>This space intentionally left blank.<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
|
22
|
+
|
data/website/src/index.page
CHANGED
@@ -10,15 +10,16 @@ GemInstaller provides automated management of RubyGems. It uses a simple YAML c
|
|
10
10
|
* Automatically install the correct versions of all required gems wherever your app runs.
|
11
11
|
* Automatically ensure installed gems and versions are consistent across multiple applications, machines, platforms, and environments
|
12
12
|
* Automatically add correct versions of gems to the ruby load path when your app runs ('require_gem'/'gem')
|
13
|
-
* Automatically reinstall missing dependency gems
|
14
|
-
* Automatically
|
13
|
+
* Automatically reinstall missing dependency gems (built in to RubyGems > 1.0)
|
14
|
+
* Automatically detect correct platform to install for multi-platform gems (built in to RubyGems > 1.0)
|
15
15
|
* Print YAML for "rogue gems" which are not specified in the current config, to easily bootstrap your config file, or find gems that were manually installed without GemInstaller.
|
16
|
-
* Allow for common configs to be reused across projects or environments by supporting multiple config files and defaults with overrides.
|
16
|
+
* Allow for common configs to be reused across projects or environments by supporting multiple config files, including common config file snippets, and defaults with overrides.
|
17
|
+
* Allow for dynamic selection of gems, versions, and platforms to be used based on environment vars or any other logic.
|
17
18
|
* Avoid the "works on demo, breaks on production" syndrome
|
18
19
|
|
19
20
|
GemInstaller can be used from the command line, or embedded to run automatically on startup for a Rails app or any other Ruby program.
|
20
21
|
|
21
|
-
It has been tested on all major platforms (mac, linux, windows), and recent versions of RubyGems (0.8.x through 0.
|
22
|
+
It has been tested on all major platforms (mac, linux, windows), and has an "extensive suite of tests":code/coverage/index.html which are "automatically run by Continuous Integration":http://ci.thewoolleyweb.com against recent versions of RubyGems (0.8.x through 1.0.1)..
|
22
23
|
|
23
24
|
h2. How do I get it?
|
24
25
|
|
@@ -32,14 +33,27 @@ h2. Who is responsible for GemInstaller?
|
|
32
33
|
|
33
34
|
GemInstaller was created by "Chad Woolley":http://www.thewoolleyweb.com.
|
34
35
|
|
35
|
-
h2(#
|
36
|
+
h2(#news). News
|
36
37
|
|
37
|
-
|
38
|
+
Version 0.3.0 of GemInstaller is released. This is tested and working against latest RubyGems 1.0.1.
|
38
39
|
|
39
|
-
|
40
|
+
h2(#known_issues). Known Issues
|
41
|
+
|
42
|
+
Currently, the only _major_ known issue is related to auto-installing the Rails or Mongrel gems via boot.rb or config/preinitializer.rb during startup of Mongrel or Webrick. This is because the old version is already on the load path before GemInstaller installs the new version. The simple workaround is to just restart Rails anytime GemInstaller auto-installs a Rails/Mongrel gem upgrade during app startup. For Rails and other deployable apps, you can also "run GemInstaller from Capistrano":documentation/tutorials.html#running_geminstaller_from_capistrano to avoid this problem in demo/production environments.
|
43
|
+
|
44
|
+
There's also some leakage of gem doc warning messages even if you turn down --rubygems-output, but these can be ignored (these same messages can show up when installing gems manually).
|
45
|
+
|
46
|
+
I bet there's another bug or twoo, so please "report them if you find them":http://rubyforge.org/tracker/?group_id=1902!
|
40
47
|
|
41
48
|
h2(#history). History
|
42
49
|
|
50
|
+
* 0.3.0
|
51
|
+
** Changes to work with RubyGems >= 0.9.5 and take advantage of new platform and auto-install features. See "notes on RubyGems version compatibility":code/index.html#rubygems_compatibility
|
52
|
+
** On Linux/Mac, you can now specify a RUBYGEMS_VERSION environment var to test against a specific version of RubyGems.
|
53
|
+
** Improved smoketest.rb and autogem_test.rb
|
54
|
+
** Tests now run on windows (only against latest rubygems, with it installed, and only via test/test_all.rb, not rake)
|
55
|
+
** deprecated/disabled prefer_binary_platform
|
56
|
+
** many other small cleanups
|
43
57
|
* 0.2.5
|
44
58
|
** Add 'include_config' directive to yaml config file, allowing other files to be included via ERB.
|
45
59
|
** Fix broken links in docs - patch from Maciej Kozak (macio)
|
metadata
CHANGED
@@ -1,33 +1,30 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.4
|
3
|
-
specification_version: 1
|
4
2
|
name: geminstaller
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2007-10-24 00:00:00 -07:00
|
8
|
-
summary: GemInstaller provides automated management of RubyGems.
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: ryand-ruby@zenspider.com
|
12
|
-
homepage: " by Chad Woolley"
|
13
|
-
rubyforge_project: geminstaller
|
14
|
-
description: "== FEATURES: GemInstaller provides automated management of RubyGems. It uses a simple YAML config file to: * Automatically install the correct versions of all required gems wherever your app runs. * Automatically ensure installed gems and versions are consistent across multiple applications, machines, platforms, and environments * Automatically add correct versions of gems to the ruby load path when your app runs ('require_gem'/'gem') * Automatically reinstall missing dependency gems * Automatically guess at correct platform to install for multi-platform gems * Print YAML for \"rogue gems\" which are not specified in the current config, to easily bootstrap your config file, or find gems that were manually installed without GemInstaller. * Avoid the \"works on demo, broken on production\" syndrome == SYNOPSYS: GemInstaller provides automated management of RubyGems."
|
15
|
-
autorequire:
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: 0.3.0
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
7
|
- Chad Woolley
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-01-01 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: "== FEATURES: GemInstaller provides automated management of RubyGems. It uses a simple YAML config file to: * Automatically install the correct versions of all required gems wherever your app runs. * Automatically ensure installed gems and versions are consistent across multiple applications, machines, platforms, and environments * Automatically add correct versions of gems to the ruby load path when your app runs ('require_gem'/'gem') * Automatically reinstall missing dependency gems (built in to RubyGems > 1.0) * Automatically detect correct platform to install for multi-platform gems (built in to RubyGems > 1.0) * Print YAML for \"rogue gems\" which are not specified in the current config, to easily bootstrap your config file, or find gems that were manually installed without GemInstaller. * Allow for common configs to be reused across projects or environments by supporting multiple config files, including common config file snippets, and defaults with overrides. * Allow for dynamic selection of gems, versions, and platforms to be used based on environment vars or any other logic. * Avoid the \"works on demo, breaks on production\" syndrome == SYNOPSYS: GemInstaller provides automated management of RubyGems."
|
17
|
+
email: ryand-ruby@zenspider.com
|
18
|
+
executables:
|
19
|
+
- geminstaller
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- History.txt
|
24
|
+
- Manifest.txt
|
25
|
+
- README.txt
|
26
|
+
- TODO.txt
|
27
|
+
- ci/README_CI.txt
|
31
28
|
files:
|
32
29
|
- .loadpath
|
33
30
|
- COPYING
|
@@ -38,7 +35,11 @@ files:
|
|
38
35
|
- Rakefile
|
39
36
|
- TODO.txt
|
40
37
|
- bin/geminstaller
|
41
|
-
- ci/
|
38
|
+
- ci/README_CI.txt
|
39
|
+
- ci/cruise
|
40
|
+
- cruise_config.rb
|
41
|
+
- focused_spec.sh
|
42
|
+
- focused_spec_debug.sh
|
42
43
|
- geminstaller.yml
|
43
44
|
- lib/geminstaller.rb
|
44
45
|
- lib/geminstaller/application.rb
|
@@ -52,7 +53,6 @@ files:
|
|
52
53
|
- lib/geminstaller/exact_match_list_command.rb
|
53
54
|
- lib/geminstaller/file_reader.rb
|
54
55
|
- lib/geminstaller/gem_arg_processor.rb
|
55
|
-
- lib/geminstaller/gem_command_line_proxy.rb
|
56
56
|
- lib/geminstaller/gem_command_manager.rb
|
57
57
|
- lib/geminstaller/gem_interaction_handler.rb
|
58
58
|
- lib/geminstaller/gem_list_checker.rb
|
@@ -76,6 +76,7 @@ files:
|
|
76
76
|
- lib/geminstaller/rubygems_exit.rb
|
77
77
|
- lib/geminstaller/rubygems_extensions.rb
|
78
78
|
- lib/geminstaller/rubygems_version_checker.rb
|
79
|
+
- lib/geminstaller/source_index_search_adapter.rb
|
79
80
|
- lib/geminstaller/unauthorized_dependency_prompt_error.rb
|
80
81
|
- lib/geminstaller/unexpected_prompt_error.rb
|
81
82
|
- lib/geminstaller/valid_platform_selector.rb
|
@@ -97,21 +98,32 @@ files:
|
|
97
98
|
- website/src/download.page
|
98
99
|
- website/src/faq.page
|
99
100
|
- website/src/index.page
|
100
|
-
|
101
|
-
|
101
|
+
has_rdoc: true
|
102
|
+
homepage: " by Chad Woolley"
|
103
|
+
post_install_message:
|
102
104
|
rdoc_options:
|
103
105
|
- --main
|
104
106
|
- README.txt
|
105
|
-
|
106
|
-
-
|
107
|
-
|
108
|
-
|
109
|
-
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
107
|
+
require_paths:
|
108
|
+
- lib
|
109
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: "0"
|
114
|
+
version:
|
115
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: "0"
|
120
|
+
version:
|
114
121
|
requirements: []
|
115
122
|
|
116
|
-
|
117
|
-
|
123
|
+
rubyforge_project: geminstaller
|
124
|
+
rubygems_version: 1.0.1
|
125
|
+
signing_key:
|
126
|
+
specification_version: 2
|
127
|
+
summary: GemInstaller provides automated management of RubyGems.
|
128
|
+
test_files:
|
129
|
+
- test/test_all.rb
|
data/ci/cruisecontrol
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
CRUISECONTROL_DIR=/home/woolley/workspace/geminstaller_ci
|
2
|
-
CRUISECONTROL_CMD=$CRUISECONTROL_DIR/cruise
|
3
|
-
PIDFILE=/tmp/cruisecontrol.pid
|
4
|
-
|
5
|
-
if [ "$CRUISECONTROL_USER" = "" ] ; then
|
6
|
-
CRUISECONTROL_USER=cruisecontrol
|
7
|
-
fi
|
8
|
-
|
9
|
-
if [ "$JAVA_HOME" = "" ] ; then
|
10
|
-
export JAVA_HOME=/usr/java/jdk
|
11
|
-
fi
|
12
|
-
export PATH=$PATH:$JAVA_HOME/bin
|
13
|
-
|
14
|
-
case "$1" in
|
15
|
-
start)
|
16
|
-
echo -n "Starting CruiseControl"
|
17
|
-
cd $CRUISECONTROL_DIR
|
18
|
-
start-stop-daemon --start --pidfile $PIDFILE --make-pidfile --user $CRUISECONTROL_USER --chuid $CRUISECONTROL_USER --chdir /home/woolley/workspace/geminstaller_ci --exec $CRUISECONTROL_CMD -- start >> /var/log/cruisecontrol/cruisecontrol.log 2>&1 &
|
19
|
-
echo "."
|
20
|
-
;;
|
21
|
-
stop)
|
22
|
-
echo "Stopping CruiseControl"
|
23
|
-
PARPID=`cat $PIDFILE`
|
24
|
-
if [ "$PARPID" = "" ] ; then
|
25
|
-
echo "No pidfile found for cruisecontrol, nothing to stop"
|
26
|
-
exit 1
|
27
|
-
fi
|
28
|
-
start-stop-daemon --stop --quiet --pidfile $PIDFILE
|
29
|
-
echo "."
|
30
|
-
CHILDPIDS=`ps -ea -o "pid ppid args" | grep -v grep | grep "${PARPID}" | grep -v "^ ${PARPID}" | \
|
31
|
-
sed -e 's/^ *//' -e 's/ .*//'`
|
32
|
-
if [ "${CHILDPIDS}" != "" ]; then
|
33
|
-
echo "Killing child processes: $CHILDPIDS"
|
34
|
-
kill -9 ${CHILDPIDS}
|
35
|
-
echo "Done killing child processes."
|
36
|
-
else
|
37
|
-
echo "No child processes killed."
|
38
|
-
fi
|
39
|
-
;;
|
40
|
-
restart)
|
41
|
-
$0 stop
|
42
|
-
sleep 2
|
43
|
-
$0 start
|
44
|
-
;;
|
45
|
-
*)
|
46
|
-
echo "Usage: /etc/init.d/cruisecontrol {start|stop|restart}"
|
47
|
-
exit 1
|
48
|
-
esac
|
49
|
-
|
50
|
-
exit 0
|
@@ -1,32 +0,0 @@
|
|
1
|
-
module GemInstaller
|
2
|
-
class GemCommandLineProxy
|
3
|
-
GEM_ERROR_REGEXP = /^ERROR.*/
|
4
|
-
def run(args)
|
5
|
-
args_string = args.join(" ")
|
6
|
-
output = `gem #{args_string} 2>&1`
|
7
|
-
return_value = $?
|
8
|
-
lines = output.split("\n")
|
9
|
-
# return value is always zero on windows (from gem.bat), so we have to resort to parsing the output
|
10
|
-
error_in_output = false
|
11
|
-
lines.each do |line|
|
12
|
-
if line.match(GemInstaller::GemCommandLineProxy::GEM_ERROR_REGEXP)
|
13
|
-
error_in_output = true
|
14
|
-
break
|
15
|
-
end
|
16
|
-
end
|
17
|
-
if (return_value != 0 or error_in_output)
|
18
|
-
error_message = "Error: gem command failed. Command was 'gem #{args_string}', return value was '#{return_value}'. Output was:\n"
|
19
|
-
lines.each do |line|
|
20
|
-
error_message += ' ' + line + '\n'
|
21
|
-
end
|
22
|
-
raise GemInstaller::GemInstallerError.new(error_message)
|
23
|
-
end
|
24
|
-
return lines
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|