rails_gem_install 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +12 -19
- data/VERSION +1 -1
- data/lib/rails_gem_install/rails_gem_installer.rb +17 -1
- data/spec/rails_gem_installer_spec.rb +103 -0
- data/spec/spec.opts +2 -0
- data/{test/helper.rb → spec/spec_helper.rb} +5 -6
- metadata +27 -10
- data/test/test_rails_gem_install.rb +0 -7
data/Rakefile
CHANGED
@@ -10,7 +10,8 @@ begin
|
|
10
10
|
gem.email = "scottwb@gmail.com"
|
11
11
|
gem.homepage = "http://github.com/scottwb/rails_gem_install"
|
12
12
|
gem.authors = ["Scott W. Bradley"]
|
13
|
-
gem.add_development_dependency "
|
13
|
+
gem.add_development_dependency "rspec", ">= 1.2.9"
|
14
|
+
gem.add_development_dependency "rcov", ">= 0.9.8"
|
14
15
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
15
16
|
end
|
16
17
|
Jeweler::GemcutterTasks.new
|
@@ -18,29 +19,21 @@ rescue LoadError
|
|
18
19
|
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
19
20
|
end
|
20
21
|
|
21
|
-
require 'rake/
|
22
|
-
Rake::
|
23
|
-
|
24
|
-
|
25
|
-
test.verbose = true
|
22
|
+
require 'spec/rake/spectask'
|
23
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
24
|
+
spec.libs << 'lib' << 'spec'
|
25
|
+
spec.spec_files = FileList['spec/**/*_spec.rb']
|
26
26
|
end
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
test.pattern = 'test/**/test_*.rb'
|
33
|
-
test.verbose = true
|
34
|
-
end
|
35
|
-
rescue LoadError
|
36
|
-
task :rcov do
|
37
|
-
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
38
|
-
end
|
28
|
+
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
29
|
+
spec.libs << 'lib' << 'spec'
|
30
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
31
|
+
spec.rcov = true
|
39
32
|
end
|
40
33
|
|
41
|
-
task :
|
34
|
+
task :spec => :check_dependencies
|
42
35
|
|
43
|
-
task :default => :
|
36
|
+
task :default => :spec
|
44
37
|
|
45
38
|
require 'rake/rdoctask'
|
46
39
|
Rake::RDocTask.new do |rdoc|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.3
|
@@ -28,9 +28,25 @@ class RailsGemInstaller
|
|
28
28
|
# Parses out any dependency gems listed that are not yet satisified.
|
29
29
|
def parse_deps(input)
|
30
30
|
matches = input.scan(/\s+-\s+\[ \]\s+(\S+)\s+(\S+\s+[0-9.]+)/) || []
|
31
|
-
|
31
|
+
|
32
|
+
gemspecs = matches.map do |match|
|
32
33
|
{:name => match[0], :version => match[1]}
|
33
34
|
end
|
35
|
+
|
36
|
+
# NOTE: These gemspecs are gems that are not yet loaded. We don't know if
|
37
|
+
# they are installed or not, so we don't know for sure if the
|
38
|
+
# dependency will be met at runtime. So, we'll execute a gem command
|
39
|
+
# to check to see if these are installed and ignore the ones that
|
40
|
+
# already are.
|
41
|
+
gemspecs.delete_if do |gemspec|
|
42
|
+
cmd = "gem list #{gemspec[:name]} -i -l"
|
43
|
+
if gemspec[:version]
|
44
|
+
cmd << " -v '#{gemspec[:version]}'"
|
45
|
+
end
|
46
|
+
`#{cmd}` =~ /true/
|
47
|
+
end
|
48
|
+
|
49
|
+
return gemspecs
|
34
50
|
end
|
35
51
|
|
36
52
|
# Gets the set of required gems that need to be installed.
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe RailsGemInstaller do
|
4
|
+
describe "#parse_required" do
|
5
|
+
context "when there is a missing required gem" do
|
6
|
+
it "should return an array of just that gem with no version" do
|
7
|
+
gemspecs = subject.parse_required("no such file to load -- gdata\n")
|
8
|
+
gemspecs.should have(1).gemspec
|
9
|
+
gemspecs.first.should have(1).member
|
10
|
+
gemspecs.first.should have_key(:name)
|
11
|
+
gemspecs.first.should_not have_key(:version)
|
12
|
+
gemspecs.first[:name].should == 'gdata'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context "when there are no missing required gems" do
|
17
|
+
it "should returns an empty array" do
|
18
|
+
gemspecs = subject.parse_required("\n")
|
19
|
+
gemspecs.should be_empty
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "#parse_missing" do
|
25
|
+
context "when there are missing gems that specify version numbers" do
|
26
|
+
it "should return an array of gemspec hashes including name and version" do
|
27
|
+
pending "This is currently known to be broken."
|
28
|
+
gemspecs = subject.parse_missing <<EOT
|
29
|
+
Missing these required gems:
|
30
|
+
sanitize = 1.2.1
|
31
|
+
|
32
|
+
You're running:
|
33
|
+
ruby 1.8.7.174 at blah blah blah
|
34
|
+
EOT
|
35
|
+
gemspecs.should have(1).gemspec
|
36
|
+
gemspecs.first.should have(2).members
|
37
|
+
gemspecs.first[:name].should == 'sanitize'
|
38
|
+
gemspecs.first[:version].should == '= 1.2.1'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context "when there are missing gems that do not specify version numbers" do
|
43
|
+
it "should return an array of gemspec hashes including just the name" do
|
44
|
+
pending "This is currently known to be broken."
|
45
|
+
gemspecs = subject.parse_missing <<EOT
|
46
|
+
Missing these required gems:
|
47
|
+
sanitize
|
48
|
+
|
49
|
+
You're running:
|
50
|
+
ruby 1.8.7.174 at blah blah blah
|
51
|
+
EOT
|
52
|
+
gemspecs.should have(1).gemspec
|
53
|
+
gemspecs.first.should have(1).member
|
54
|
+
gemspecs.first[:name].should == 'sanitize'
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "#parse_deps" do
|
60
|
+
context "when there are uninstalled dependencies of a specific version" do
|
61
|
+
it "should return an array of gemspec hashes including name and version" do
|
62
|
+
gemspecs = subject.parse_deps <<EOT
|
63
|
+
- [I] rmagick
|
64
|
+
- [I] gdata
|
65
|
+
- [I] responders ~> 0.4.6
|
66
|
+
- [I] sanitize = 1.2.1
|
67
|
+
- [ ] nokogiri ~> 1.4.1
|
68
|
+
- [I] panztel-actionwebservice = 2.3.5
|
69
|
+
- [R] actionpack = 2.3.5
|
70
|
+
- [R] activerecord = 2.3.5
|
71
|
+
- [I] fastthread
|
72
|
+
- [I] jammit = 0.4.4
|
73
|
+
EOT
|
74
|
+
gemspecs.should have(1).gemspec
|
75
|
+
gemspecs.first.should have(2).members
|
76
|
+
gemspecs.first[:name].should == 'nokogiri'
|
77
|
+
gemspecs.first[:version].should == '~> 1.4.1'
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
context "when there are uninstalled dependencies that do not specify a version" do
|
82
|
+
it "should return an array of gemspec hashes including just the name" do
|
83
|
+
pending "This is currently known to be broken."
|
84
|
+
gemspecs = subject.parse_deps <<EOT
|
85
|
+
- [I] rmagick
|
86
|
+
- [ ] gdata
|
87
|
+
- [I] responders ~> 0.4.6
|
88
|
+
- [I] sanitize = 1.2.1
|
89
|
+
- [I] nokogiri ~> 1.4.1
|
90
|
+
- [I] panztel-actionwebservice = 2.3.5
|
91
|
+
- [R] actionpack = 2.3.5
|
92
|
+
- [R] activerecord = 2.3.5
|
93
|
+
- [I] fastthread
|
94
|
+
- [I] jammit = 0.4.4
|
95
|
+
EOT
|
96
|
+
gemspecs.should have(1).gemspec
|
97
|
+
gemspecs.first.should have(1).member
|
98
|
+
gemspecs.first[:name].should == 'gdata'
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
data/spec/spec.opts
ADDED
@@ -1,10 +1,9 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'test/unit'
|
3
|
-
require 'shoulda'
|
4
|
-
|
5
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
6
1
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
7
3
|
require 'rails_gem_install'
|
4
|
+
require 'spec'
|
5
|
+
require 'spec/autorun'
|
8
6
|
|
9
|
-
|
7
|
+
Spec::Runner.configure do |config|
|
8
|
+
|
10
9
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 0.3.
|
8
|
+
- 3
|
9
|
+
version: 0.3.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Scott W. Bradley
|
@@ -14,21 +14,37 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-07
|
17
|
+
date: 2010-12-07 00:00:00 -08:00
|
18
18
|
default_executable: rails_gem_install
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
|
-
name:
|
21
|
+
name: rspec
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
segments:
|
28
|
-
-
|
29
|
-
|
28
|
+
- 1
|
29
|
+
- 2
|
30
|
+
- 9
|
31
|
+
version: 1.2.9
|
30
32
|
type: :development
|
31
33
|
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: rcov
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
- 9
|
44
|
+
- 8
|
45
|
+
version: 0.9.8
|
46
|
+
type: :development
|
47
|
+
version_requirements: *id002
|
32
48
|
description: "Installs gem dependencies for a Rails 2 project where `rake gems:install` fails. I.e.: breaks the circular dependencies of requiring Rails and anything your vendored gems/plugins require in order to install these requirements."
|
33
49
|
email: scottwb@gmail.com
|
34
50
|
executables:
|
@@ -50,8 +66,9 @@ files:
|
|
50
66
|
- lib/rails_gem_install.rb
|
51
67
|
- lib/rails_gem_install/rails.rb
|
52
68
|
- lib/rails_gem_install/rails_gem_installer.rb
|
53
|
-
-
|
54
|
-
-
|
69
|
+
- spec/rails_gem_installer_spec.rb
|
70
|
+
- spec/spec.opts
|
71
|
+
- spec/spec_helper.rb
|
55
72
|
has_rdoc: true
|
56
73
|
homepage: http://github.com/scottwb/rails_gem_install
|
57
74
|
licenses: []
|
@@ -83,5 +100,5 @@ signing_key:
|
|
83
100
|
specification_version: 3
|
84
101
|
summary: Installs gem dependencies for a Rails 2 project.
|
85
102
|
test_files:
|
86
|
-
-
|
87
|
-
-
|
103
|
+
- spec/rails_gem_installer_spec.rb
|
104
|
+
- spec/spec_helper.rb
|