geminstaller 0.2.5 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. data/History.txt +8 -0
  2. data/LICENSE +1 -1
  3. data/Manifest.txt +6 -2
  4. data/README.txt +6 -4
  5. data/TODO.txt +35 -30
  6. data/ci/README_CI.txt +22 -0
  7. data/ci/cruise +50 -0
  8. data/cruise_config.rb +11 -0
  9. data/focused_spec.sh +2 -0
  10. data/focused_spec_debug.sh +2 -0
  11. data/geminstaller.yml +5 -3
  12. data/lib/geminstaller.rb +1 -1
  13. data/lib/geminstaller/autogem.rb +2 -2
  14. data/lib/geminstaller/backward_compatibility.rb +1 -1
  15. data/lib/geminstaller/dependency_injector.rb +5 -3
  16. data/lib/geminstaller/enhanced_stream_ui.rb +17 -7
  17. data/lib/geminstaller/gem_command_manager.rb +15 -12
  18. data/lib/geminstaller/gem_interaction_handler.rb +8 -0
  19. data/lib/geminstaller/gem_list_checker.rb +1 -1
  20. data/lib/geminstaller/gem_runner_proxy.rb +1 -1
  21. data/lib/geminstaller/gem_spec_manager.rb +25 -13
  22. data/lib/geminstaller/install_processor.rb +21 -6
  23. data/lib/geminstaller/missing_dependency_finder.rb +5 -0
  24. data/lib/geminstaller/requires.rb +16 -6
  25. data/lib/geminstaller/ruby_gem.rb +7 -2
  26. data/lib/geminstaller/rubygems_version_checker.rb +11 -5
  27. data/lib/geminstaller/source_index_search_adapter.rb +41 -0
  28. data/lib/geminstaller/valid_platform_selector.rb +5 -0
  29. data/start_local_gem_server.sh +1 -1
  30. data/test/test_all.rb +15 -10
  31. data/website/metainfo.yaml +8 -2
  32. data/website/src/code/index.page +49 -2
  33. data/website/src/community/index.page +1 -1
  34. data/website/src/community/links.page +2 -0
  35. data/website/src/documentation/documentation.page +14 -11
  36. data/website/src/documentation/tutorials.page +16 -10
  37. data/website/src/faq.page +15 -0
  38. data/website/src/index.page +21 -7
  39. metadata +51 -39
  40. data/ci/cruisecontrol +0 -50
  41. 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: svn://rubyforge.org/var/svn/geminstaller/trunk
14
+ * Subversion Repository: "http://geminstaller.rubyforge.org/svn/trunk":http://geminstaller.rubyforge.org/svn/trunk
@@ -7,3 +7,5 @@ h1. Links
7
7
  ** "DiabeticMommy.com":http://www.diabeticmommy.com - Support site for women with diabetes, created and edited by Chad's wife
8
8
  * RubyGems
9
9
  ** "RubyGems Homepage":http://rubygems.org
10
+ * RSpec
11
+ ** "RSpec Homepage":http://rspec.info/
@@ -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
- Currently (as of version 0.9.2), RubyGems does not provide any way to specify a platform programatically or via the command line. If the specified version of a gem has any binary or platform-specific releases, a list will be presented, and RubyGems will halt until input is provided via stdin. This means that even if you write a script to install your required gems, you still have to deal with parsing the list and providing stdin input to select multi-platform gems. To make it even more confusing, there are enforced requirements for what platforms are valid in a Gem specification file - the gem author can put whatever they want. The RubyGems developers plan to deal with this situation in a future release, but until then...
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
- ...GemInstaller solves this problem! If a multi-platform gem version is found, GemInstaller will handle the list prompt, and automatically select the correct platform.
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
- The "correct" platform can be determined in a few ways. The easiest way is to let GemInstaller guess at the platform for you. It contains logic which will attempt to determine the correct platform to choose, based on the platform of the current machine.
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
- However, GemInstaller may not always guess right, especially for uncommon platforms, or gems which do not have a standard platform string specified. In these cases, the <code>'platform'</code> property for a 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
+ 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":#prefer_binary_platform for more info.
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>prefer_binary_platform</code> config property":documentation.html#prefer_binary_platform_config_property, and "<code>check_for_upgrade</code> config property":documentation.html#check_for_upgrade_config_property
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 a bug with installing Mongrel and Rails gems on Rails startup. See "Known Bugs":../index.html#known_bugs for details.
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
- * 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.
280
- * 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.
281
- * 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.
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
@@ -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
+
@@ -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 guess at correct platform to install for multi-platform gems
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.9.4).
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(#known_bugs). Known Bugs
36
+ h2(#news). News
36
37
 
37
- Currently, the only _major_ known bug is related to auto-installing the Rails or Mongrel gems via boot.rb during startup of Mongrel or Webrick. The simple workaround is to run GemInstaller manually or 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. I bet there's another bug or twoo, so please "report them if you find them":http://rubyforge.org/tracker/?group_id=1902!
38
+ Version 0.3.0 of GemInstaller is released. This is tested and working against latest RubyGems 1.0.1.
38
39
 
39
- 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 show up when installing gems manually). This should be fixed soon.
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.2.5
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/cruisecontrol
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
- test_files:
101
- - test/test_all.rb
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
- extra_rdoc_files:
106
- - History.txt
107
- - Manifest.txt
108
- - README.txt
109
- - TODO.txt
110
- executables:
111
- - geminstaller
112
- extensions: []
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
- dependencies: []
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
@@ -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
-