gem_loader 0.1.4 → 0.2.0
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/README.markdown +9 -8
- data/VERSION +1 -1
- data/depends.rb +10 -9
- data/gem_loader.gemspec +11 -8
- data/lib/gem_loader.rb +1 -1
- data/lib/gem_loader/{base.rb → context.rb} +11 -9
- data/lib/gem_loader/context/dsl.rb +38 -0
- data/lib/gem_loader/gem.rb +18 -5
- data/lib/gem_loader/gem/dsl.rb +3 -3
- data/lib/gem_loader/gem_requirement.rb +18 -0
- data/lib/gem_loader/scope.rb +12 -8
- data/lib/gem_loader/scope/dsl.rb +6 -9
- data/spec/gem_loader/context/dsl_spec.rb +23 -0
- data/spec/gem_loader/context_spec.rb +21 -0
- data/spec/gem_loader/gem_requirement.rb +7 -0
- data/spec/gem_loader/gem_spec.rb +17 -8
- data/spec/gem_loader/gemspec_spec.rb +1 -5
- data/spec/gem_loader/scope/dsl_spec.rb +3 -3
- data/spec/gem_loader/scope_spec.rb +5 -5
- data/spec/spec_helper.rb +7 -1
- metadata +13 -10
- data/lib/gem_loader/base/dsl.rb +0 -31
- data/spec/gem_loader/base/dsl_spec.rb +0 -20
- data/spec/gem_loader/base_spec.rb +0 -6
data/README.markdown
CHANGED
@@ -23,18 +23,20 @@ You need to create a gem's dependencies file, such as "depends.rb" or any other
|
|
23
23
|
gem "sinatra", "1.0"
|
24
24
|
end
|
25
25
|
|
26
|
-
scope :
|
26
|
+
scope :optional
|
27
|
+
|
28
|
+
scope :test do
|
27
29
|
gem "rspec", ">= 1.3.0", :require => nil
|
28
30
|
end
|
29
|
-
|
30
|
-
scope :
|
31
|
+
|
32
|
+
scope :development => [ :optional, :test ]
|
31
33
|
|
32
34
|
scope :rakefile do
|
33
35
|
gem "rake", ">= 0.8.7"
|
34
36
|
gem "jeweler", ">= 1.4.0"
|
35
|
-
|
36
|
-
|
37
|
-
|
37
|
+
|
38
|
+
gem "rspec", :require => "spec/rake/spectask" # '>= 1.3.0' version shared at :test scope
|
39
|
+
|
38
40
|
end
|
39
41
|
end
|
40
42
|
|
@@ -65,5 +67,4 @@ example for Jeweler
|
|
65
67
|
|
66
68
|
## TODO
|
67
69
|
|
68
|
-
*
|
69
|
-
* Add a rake support, used to view the dependencies
|
70
|
+
* Add a rake or CLI support, used to view the dependencies
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/depends.rb
CHANGED
@@ -5,17 +5,18 @@ require File.expand_path("../lib/gem_loader", __FILE__)
|
|
5
5
|
GemLoader.setup do
|
6
6
|
|
7
7
|
scope :runtime
|
8
|
-
|
9
|
-
scope :
|
10
|
-
|
8
|
+
|
9
|
+
scope :optional
|
10
|
+
|
11
|
+
scope :test do
|
12
|
+
gem "rspec", ">= 1.3.0", :require => nil
|
11
13
|
end
|
12
14
|
|
13
|
-
scope :
|
15
|
+
scope :development => [:optional, :test]
|
14
16
|
|
15
|
-
scope :rakefile
|
16
|
-
gem
|
17
|
-
gem
|
18
|
-
|
19
|
-
require "spec/rake/spectask"
|
17
|
+
scope :rakefile do
|
18
|
+
gem "rake", ">= 0.8.7"
|
19
|
+
gem "jeweler", ">= 1.4.0"
|
20
|
+
gem "rspec", :require => "spec/rake/spectask"
|
20
21
|
end
|
21
22
|
end
|
data/gem_loader.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{gem_loader}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Sunteya"]
|
12
|
-
s.date = %q{2010-03-
|
12
|
+
s.date = %q{2010-03-29}
|
13
13
|
s.email = %q{Sunteya@gmail.com}
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE",
|
@@ -24,16 +24,18 @@ Gem::Specification.new do |s|
|
|
24
24
|
"depends.rb",
|
25
25
|
"gem_loader.gemspec",
|
26
26
|
"lib/gem_loader.rb",
|
27
|
-
"lib/gem_loader/
|
28
|
-
"lib/gem_loader/
|
27
|
+
"lib/gem_loader/context.rb",
|
28
|
+
"lib/gem_loader/context/dsl.rb",
|
29
29
|
"lib/gem_loader/gem.rb",
|
30
30
|
"lib/gem_loader/gem/dsl.rb",
|
31
|
+
"lib/gem_loader/gem_requirement.rb",
|
31
32
|
"lib/gem_loader/gemspec.rb",
|
32
33
|
"lib/gem_loader/scope.rb",
|
33
34
|
"lib/gem_loader/scope/dsl.rb",
|
34
35
|
"lib/gem_loader/version.rb",
|
35
|
-
"spec/gem_loader/
|
36
|
-
"spec/gem_loader/
|
36
|
+
"spec/gem_loader/context/dsl_spec.rb",
|
37
|
+
"spec/gem_loader/context_spec.rb",
|
38
|
+
"spec/gem_loader/gem_requirement.rb",
|
37
39
|
"spec/gem_loader/gem_spec.rb",
|
38
40
|
"spec/gem_loader/gemspec_spec.rb",
|
39
41
|
"spec/gem_loader/scope/dsl_spec.rb",
|
@@ -48,8 +50,9 @@ Gem::Specification.new do |s|
|
|
48
50
|
s.rubygems_version = %q{1.3.6}
|
49
51
|
s.summary = %q{a tiny gem's dependencies loader.}
|
50
52
|
s.test_files = [
|
51
|
-
"spec/gem_loader/
|
52
|
-
"spec/gem_loader/
|
53
|
+
"spec/gem_loader/context/dsl_spec.rb",
|
54
|
+
"spec/gem_loader/context_spec.rb",
|
55
|
+
"spec/gem_loader/gem_requirement.rb",
|
53
56
|
"spec/gem_loader/gem_spec.rb",
|
54
57
|
"spec/gem_loader/gemspec_spec.rb",
|
55
58
|
"spec/gem_loader/scope/dsl_spec.rb",
|
data/lib/gem_loader.rb
CHANGED
@@ -1,24 +1,26 @@
|
|
1
1
|
require File.expand_path("../scope", __FILE__)
|
2
|
+
require File.expand_path("../gem_requirement", __FILE__)
|
2
3
|
require File.expand_path("../gem", __FILE__)
|
3
|
-
require File.expand_path("../
|
4
|
+
require File.expand_path("../context/dsl", __FILE__)
|
4
5
|
|
5
6
|
module GemLoader
|
6
|
-
class
|
7
|
-
attr_accessor :scopes
|
7
|
+
class Context
|
8
|
+
attr_accessor :scopes, :gem_requirements
|
8
9
|
|
9
10
|
def initialize
|
10
11
|
self.scopes = {}
|
12
|
+
self.gem_requirements = {}
|
11
13
|
end
|
12
14
|
|
13
|
-
def scope(name
|
14
|
-
self.scopes ||=
|
15
|
-
self.scopes[name] ||= Scope.new(name, depend_scopes)
|
15
|
+
def scope(name)
|
16
|
+
self.scopes[name] ||= Scope.new(self, name)
|
16
17
|
end
|
17
18
|
|
18
|
-
def
|
19
|
-
self.
|
19
|
+
def gem_requirement(name)
|
20
|
+
self.gem_requirements[name] ||= GemRequirement.new(name)
|
20
21
|
end
|
21
22
|
|
23
|
+
|
22
24
|
def load(*args)
|
23
25
|
scope_names = [ args ].flatten
|
24
26
|
scope_names.each do |scope_name|
|
@@ -37,7 +39,7 @@ module GemLoader
|
|
37
39
|
end
|
38
40
|
|
39
41
|
def self.instance
|
40
|
-
@instance ||=
|
42
|
+
@instance ||= Context.new
|
41
43
|
end
|
42
44
|
|
43
45
|
def self.method_missing(sym, *args, &block)
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module GemLoader
|
2
|
+
class Context
|
3
|
+
|
4
|
+
def setup(&block)
|
5
|
+
self.dsl(&block)
|
6
|
+
end
|
7
|
+
|
8
|
+
def dsl(&block)
|
9
|
+
Dsl.new(self, &block)
|
10
|
+
end
|
11
|
+
|
12
|
+
class Dsl
|
13
|
+
attr_accessor :context
|
14
|
+
|
15
|
+
def initialize(context, &block)
|
16
|
+
self.context = context
|
17
|
+
instance_eval(&block) if block
|
18
|
+
end
|
19
|
+
|
20
|
+
def scope(arg, &block)
|
21
|
+
if arg.is_a?(Hash)
|
22
|
+
name = arg.keys.first
|
23
|
+
depend_scope_names = [ arg[name] ].flatten
|
24
|
+
else
|
25
|
+
name = arg
|
26
|
+
depend_scope_names = []
|
27
|
+
end
|
28
|
+
|
29
|
+
scope = self.context.scope(name)
|
30
|
+
depend_scope_names.each do |name|
|
31
|
+
scope.add_depend_scope(self.context.scope(name))
|
32
|
+
end
|
33
|
+
|
34
|
+
scope.dsl(&block)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/gem_loader/gem.rb
CHANGED
@@ -2,16 +2,29 @@ require File.expand_path("../gem/dsl", __FILE__)
|
|
2
2
|
|
3
3
|
module GemLoader
|
4
4
|
class Gem
|
5
|
-
attr_accessor :name, :
|
5
|
+
attr_accessor :name, :gem_requirement, :version_requirement, :options
|
6
6
|
|
7
|
-
def initialize(name,
|
7
|
+
def initialize(name, gem_requirement, *args)
|
8
8
|
self.name = name.to_s
|
9
|
-
self.
|
10
|
-
self.options =
|
9
|
+
self.gem_requirement = gem_requirement
|
10
|
+
self.options = {}
|
11
|
+
|
12
|
+
self.parse_args(*args)
|
13
|
+
end
|
14
|
+
|
15
|
+
def parse_args(*args)
|
16
|
+
self.options = args.pop if args.last.is_a?(Hash)
|
17
|
+
self.version_requirement = args.first
|
18
|
+
self.gem_requirement.add_version_requirement(version_requirement)
|
19
|
+
self
|
20
|
+
end
|
21
|
+
|
22
|
+
def version_requirements
|
23
|
+
self.gem_requirement.version_requirements
|
11
24
|
end
|
12
25
|
|
13
26
|
def gem_args
|
14
|
-
[self.name, self.
|
27
|
+
[self.name, self.version_requirements ].compact.flatten
|
15
28
|
end
|
16
29
|
|
17
30
|
def load
|
data/lib/gem_loader/gem/dsl.rb
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
require File.expand_path("../gem/dsl", __FILE__)
|
2
|
+
|
3
|
+
module GemLoader
|
4
|
+
class GemRequirement
|
5
|
+
|
6
|
+
attr_accessor :name, :version_requirements
|
7
|
+
|
8
|
+
def initialize(name)
|
9
|
+
self.name = name
|
10
|
+
self.version_requirements = []
|
11
|
+
end
|
12
|
+
|
13
|
+
def add_version_requirement(version_requirement)
|
14
|
+
self.version_requirements << version_requirement if version_requirement
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
data/lib/gem_loader/scope.rb
CHANGED
@@ -2,13 +2,16 @@ require File.expand_path("../scope/dsl", __FILE__)
|
|
2
2
|
|
3
3
|
module GemLoader
|
4
4
|
class Scope
|
5
|
-
attr_accessor :name, :depend_scopes, :gems, :libs
|
5
|
+
attr_accessor :context, :name, :depend_scopes, :gems, :libs
|
6
6
|
|
7
|
-
def initialize(
|
7
|
+
def initialize(context, name)
|
8
|
+
self.context = context
|
8
9
|
self.name = name
|
9
|
-
self.depend_scopes =
|
10
|
-
|
11
|
-
|
10
|
+
self.depend_scopes, self.gems, self.libs = [], [], []
|
11
|
+
end
|
12
|
+
|
13
|
+
def add_depend_scope(scope)
|
14
|
+
self.depend_scopes << scope
|
12
15
|
end
|
13
16
|
|
14
17
|
def all_gems
|
@@ -31,9 +34,10 @@ module GemLoader
|
|
31
34
|
end
|
32
35
|
end
|
33
36
|
|
34
|
-
def gem(name
|
35
|
-
|
36
|
-
|
37
|
+
def gem(name)
|
38
|
+
gem_requirement = self.context.gem_requirement(name)
|
39
|
+
gem = Gem.new(name, gem_requirement)
|
40
|
+
(self.gems << gem).last
|
37
41
|
end
|
38
42
|
|
39
43
|
end
|
data/lib/gem_loader/scope/dsl.rb
CHANGED
@@ -6,22 +6,19 @@ module GemLoader
|
|
6
6
|
end
|
7
7
|
|
8
8
|
class Dsl
|
9
|
-
attr_accessor :
|
9
|
+
attr_accessor :scope
|
10
10
|
|
11
|
-
def initialize(
|
12
|
-
self.
|
11
|
+
def initialize(scope, &block)
|
12
|
+
self.scope = scope
|
13
13
|
instance_eval(&block) if block
|
14
14
|
end
|
15
15
|
|
16
|
-
def gem(*args, &block)
|
17
|
-
|
18
|
-
name, version = *args
|
19
|
-
|
20
|
-
self.parent.gem(name, version, options).dsl(&block)
|
16
|
+
def gem(name, *args, &block)
|
17
|
+
self.scope.gem(name).parse_args(*args).dsl(&block)
|
21
18
|
end
|
22
19
|
|
23
20
|
def require(*args)
|
24
|
-
self.
|
21
|
+
self.scope.libs << [ args ].flatten
|
25
22
|
end
|
26
23
|
end
|
27
24
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe GemLoader::Context::Dsl do
|
4
|
+
|
5
|
+
|
6
|
+
it "should say scope successful" do
|
7
|
+
@context.dsl do
|
8
|
+
scope :foo
|
9
|
+
end
|
10
|
+
|
11
|
+
@context.scope(:foo).should_not be_nil
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should say scope with depend other scopes successful" do
|
15
|
+
@context.dsl do
|
16
|
+
scope :development => :test
|
17
|
+
end
|
18
|
+
|
19
|
+
scope = @context.scope(:development)
|
20
|
+
scope.depend_scopes.last.should == @context.scope(:test)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe GemLoader::Context do
|
4
|
+
|
5
|
+
it "should be build scope successful" do
|
6
|
+
scope = @context.scope("name")
|
7
|
+
@context.scope("name").should == scope
|
8
|
+
|
9
|
+
scope2 = @context.scope("name") # reinvoke
|
10
|
+
scope.should == scope2
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should be build gem requirement successful" do
|
14
|
+
gem_requirement = @context.gem_requirement("name")
|
15
|
+
@context.gem_requirement("name").should == gem_requirement
|
16
|
+
|
17
|
+
gem_requirement2 = @context.gem_requirement("name") # reinvoke
|
18
|
+
gem_requirement.should == gem_requirement2
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
data/spec/gem_loader/gem_spec.rb
CHANGED
@@ -1,37 +1,46 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe GemLoader::Gem do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
gem_requirement = GemLoader::GemRequirement.new("foo")
|
7
|
+
@foo_gem = GemLoader::Gem.new("foo", gem_requirement)
|
8
|
+
@foo_gem2 = GemLoader::Gem.new("foo", gem_requirement)
|
9
|
+
end
|
4
10
|
|
5
11
|
describe "should load and require by" do
|
6
12
|
it "name only" do
|
7
|
-
@gem = GemLoader::Gem.new("foo")
|
8
13
|
Kernel.should_receive(:gem).with("foo")
|
9
14
|
Kernel.should_receive(:require).with("foo")
|
10
15
|
end
|
11
16
|
|
12
17
|
it "name and version" do
|
13
|
-
@
|
14
|
-
|
18
|
+
@foo_gem.parse_args("0.1")
|
19
|
+
@foo_gem2.parse_args(">= 0.2")
|
20
|
+
|
21
|
+
Kernel.should_receive(:gem).with("foo", "0.1", ">= 0.2")
|
15
22
|
Kernel.should_receive(:require).with("foo")
|
16
23
|
end
|
17
24
|
|
18
25
|
it "with require lib" do
|
19
|
-
@
|
20
|
-
|
26
|
+
@foo_gem.parse_args("~> 2.3.5", :require => ["action_pack", "action_view", "action_controller"])
|
27
|
+
|
28
|
+
Kernel.should_receive(:gem).with("foo", "~> 2.3.5")
|
21
29
|
Kernel.should_receive(:require).with("action_pack")
|
22
30
|
Kernel.should_receive(:require).with("action_view")
|
23
31
|
Kernel.should_receive(:require).with("action_controller")
|
24
32
|
end
|
25
33
|
|
26
34
|
it "skip require" do
|
27
|
-
@
|
35
|
+
@foo_gem.parse_args("0.1", :require => nil)
|
36
|
+
|
28
37
|
Kernel.should_receive(:gem).with("foo", "0.1")
|
29
38
|
Kernel.stub!(:require).and_raise("fail")
|
30
39
|
end
|
31
40
|
|
32
41
|
after(:each) do
|
33
|
-
@
|
34
|
-
@
|
42
|
+
@foo_gem.load
|
43
|
+
@foo_gem.require
|
35
44
|
end
|
36
45
|
end
|
37
46
|
|
@@ -1,10 +1,6 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe GemLoader::Gemspec do
|
4
|
-
before(:each) do
|
5
|
-
@base = GemLoader::Base.new
|
6
|
-
GemLoader.stub!(:instance).and_return(@base)
|
7
|
-
end
|
8
4
|
|
9
5
|
it "should integrate gemspec with gem_loader" do
|
10
6
|
spec = Gem::Specification.new
|
@@ -13,7 +9,7 @@ describe GemLoader::Gemspec do
|
|
13
9
|
end
|
14
10
|
|
15
11
|
it "should integrate to gemspec" do
|
16
|
-
@
|
12
|
+
@context.setup do
|
17
13
|
scope :runtime do
|
18
14
|
gem "run", "= 0.2"
|
19
15
|
end
|
@@ -3,13 +3,13 @@ require "spec_helper"
|
|
3
3
|
describe GemLoader::Scope::Dsl do
|
4
4
|
|
5
5
|
before(:each) do
|
6
|
-
@scope =
|
6
|
+
@scope = @context.scope(:test)
|
7
7
|
@dsl = GemLoader::Scope::Dsl.new(@scope)
|
8
8
|
end
|
9
9
|
|
10
10
|
it "should say gem success" do
|
11
|
-
@dsl
|
12
|
-
@scope.
|
11
|
+
@scope.dsl { gem("foo") }
|
12
|
+
@scope.gem("foo").should_not be_nil
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should say require success" do
|
@@ -3,11 +3,11 @@ require "spec_helper"
|
|
3
3
|
describe GemLoader::Scope do
|
4
4
|
|
5
5
|
before(:each) do
|
6
|
-
@scope =
|
6
|
+
@scope = @context.scope(:test)
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should require by gem and libs" do
|
10
|
-
@scope.
|
10
|
+
@scope.gem("foo")
|
11
11
|
@scope.libs << [ "bar", "biz" ]
|
12
12
|
|
13
13
|
Kernel.should_receive(:require).with("foo")
|
@@ -18,9 +18,9 @@ describe GemLoader::Scope do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should include depends scope gems" do
|
21
|
-
depend_scope =
|
22
|
-
depend_scope.
|
23
|
-
@scope.
|
21
|
+
depend_scope = @context.scope("depend")
|
22
|
+
depend_scope.gem("depend_gem")
|
23
|
+
@scope.gem("test_gem")
|
24
24
|
@scope.depend_scopes << depend_scope
|
25
25
|
|
26
26
|
@scope.all_gems.should == [ depend_scope.gems + @scope.gems ].flatten
|
data/spec/spec_helper.rb
CHANGED
@@ -2,8 +2,14 @@ require File.expand_path("../../depends.rb", __FILE__)
|
|
2
2
|
require "gem_loader"
|
3
3
|
|
4
4
|
GemLoader.require(:test)
|
5
|
+
GemLoader.require(:runtime, :development)
|
5
6
|
|
6
7
|
|
7
8
|
Spec::Runner.configure do |config|
|
8
|
-
|
9
|
+
|
10
|
+
config.before(:each) do
|
11
|
+
@context = GemLoader::Context.new
|
12
|
+
GemLoader.stub!(:instance).and_return(@context)
|
13
|
+
end
|
14
|
+
|
9
15
|
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Sunteya
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-03-
|
17
|
+
date: 2010-03-29 00:00:00 +08:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -49,16 +49,18 @@ files:
|
|
49
49
|
- depends.rb
|
50
50
|
- gem_loader.gemspec
|
51
51
|
- lib/gem_loader.rb
|
52
|
-
- lib/gem_loader/
|
53
|
-
- lib/gem_loader/
|
52
|
+
- lib/gem_loader/context.rb
|
53
|
+
- lib/gem_loader/context/dsl.rb
|
54
54
|
- lib/gem_loader/gem.rb
|
55
55
|
- lib/gem_loader/gem/dsl.rb
|
56
|
+
- lib/gem_loader/gem_requirement.rb
|
56
57
|
- lib/gem_loader/gemspec.rb
|
57
58
|
- lib/gem_loader/scope.rb
|
58
59
|
- lib/gem_loader/scope/dsl.rb
|
59
60
|
- lib/gem_loader/version.rb
|
60
|
-
- spec/gem_loader/
|
61
|
-
- spec/gem_loader/
|
61
|
+
- spec/gem_loader/context/dsl_spec.rb
|
62
|
+
- spec/gem_loader/context_spec.rb
|
63
|
+
- spec/gem_loader/gem_requirement.rb
|
62
64
|
- spec/gem_loader/gem_spec.rb
|
63
65
|
- spec/gem_loader/gemspec_spec.rb
|
64
66
|
- spec/gem_loader/scope/dsl_spec.rb
|
@@ -97,8 +99,9 @@ signing_key:
|
|
97
99
|
specification_version: 3
|
98
100
|
summary: a tiny gem's dependencies loader.
|
99
101
|
test_files:
|
100
|
-
- spec/gem_loader/
|
101
|
-
- spec/gem_loader/
|
102
|
+
- spec/gem_loader/context/dsl_spec.rb
|
103
|
+
- spec/gem_loader/context_spec.rb
|
104
|
+
- spec/gem_loader/gem_requirement.rb
|
102
105
|
- spec/gem_loader/gem_spec.rb
|
103
106
|
- spec/gem_loader/gemspec_spec.rb
|
104
107
|
- spec/gem_loader/scope/dsl_spec.rb
|
data/lib/gem_loader/base/dsl.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
module GemLoader
|
2
|
-
class Base
|
3
|
-
|
4
|
-
def dsl(&block)
|
5
|
-
Dsl.new(self, &block)
|
6
|
-
end
|
7
|
-
|
8
|
-
class Dsl
|
9
|
-
attr_accessor :parent
|
10
|
-
|
11
|
-
def initialize(parent, &block)
|
12
|
-
self.parent = parent
|
13
|
-
instance_eval(&block) if block
|
14
|
-
end
|
15
|
-
|
16
|
-
def scope(arg, &block)
|
17
|
-
case arg
|
18
|
-
when Hash
|
19
|
-
name = arg.keys.first
|
20
|
-
dep_names = [ arg[name] ].flatten
|
21
|
-
else
|
22
|
-
name = arg
|
23
|
-
dep_names = []
|
24
|
-
end
|
25
|
-
|
26
|
-
dep_scopes = dep_names.map{ |dep_name| self.parent.scope(dep_name) }
|
27
|
-
self.parent.scope(name, dep_scopes).dsl(&block)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe GemLoader::Base::Dsl do
|
4
|
-
|
5
|
-
before(:each) do
|
6
|
-
@base = GemLoader::Base.new
|
7
|
-
@dsl = GemLoader::Base::Dsl.new(@base)
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should say scope success" do
|
11
|
-
@dsl.scope(:foo)
|
12
|
-
@base.scopes[:foo].should_not be_nil
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should say scope with depends" do
|
16
|
-
@dsl.scope(:foo => [:bar])
|
17
|
-
@base.scopes[:bar].should_not be_nil
|
18
|
-
@base.scopes[:foo].depend_scopes.should be_include @base.scopes[:bar]
|
19
|
-
end
|
20
|
-
end
|