pakada 0.3.1 → 0.3.2

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/Gemfile CHANGED
@@ -1,9 +1,12 @@
1
- source "http://rubygems.org"
1
+ source :rubygems
2
2
 
3
3
  gemspec
4
4
 
5
5
  gem "awesome_print"
6
6
  gem "rake"
7
7
 
8
+ gem "thin"
9
+ gem "shotgun"
10
+
8
11
  gem "fakefs", :git => "https://github.com/lgierth/fakefs",
9
12
  :branch => "fix_infinite_loop"
data/Rakefile CHANGED
@@ -1,9 +1,4 @@
1
- require "bundler"
2
- Bundler.setup :development
1
+ task :default => :spec
3
2
 
4
3
  require "rspec/core/rake_task"
5
-
6
- task :default => :spec
7
4
  RSpec::Core::RakeTask.new :spec
8
-
9
- Bundler::GemHelper.install_tasks
data/lib/pakada/module.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require "pathname"
2
+
1
3
  class Pakada
2
4
  module Module
3
5
  @descendants = []
@@ -23,6 +25,8 @@ class Pakada
23
25
  # use Kernel.caller instead of self.caller so Mocha doesn't explode...
24
26
  file = Kernel.caller[0].split(":")[0]
25
27
  klass.instance_variable_set :@path, detect_path(file)
28
+ else
29
+ klass.instance_variable_set :@path, Pathname.new(klass.path)
26
30
  end
27
31
 
28
32
  unless klass.dependencies
@@ -42,8 +46,10 @@ class Pakada
42
46
  end
43
47
 
44
48
  def detect_path(file)
49
+ file = String(file)
45
50
  filepath = nil
46
51
  filepath = file if file =~ /^\// && File.exists?(file)
52
+
47
53
  $LOAD_PATH.each do |dir|
48
54
  x = File.join dir, file
49
55
  if File.exists? x
@@ -56,7 +62,8 @@ class Pakada
56
62
  segments = File.dirname(filepath).split("/").reverse
57
63
  pos = segments.find_index("lib") || -1
58
64
 
59
- segments[(pos + 1)..-1].reverse.join "/"
65
+ path = segments[(pos + 1)..-1].reverse.join("/")
66
+ Pathname.new File.expand_path(path)
60
67
  end
61
68
  end
62
69
 
@@ -1,3 +1,3 @@
1
1
  class Pakada
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
data/lib/pakada.rb CHANGED
@@ -40,14 +40,18 @@ class Pakada
40
40
  def self.boot
41
41
  instance(:default) {|ins| ins.urls = ["/"] } if instances.empty?
42
42
 
43
- @urlmap = Rack::URLMap.new instances.values.inject({}) {|map, ins|
44
- ins.urls.each {|url|
45
- map[url] = proc {|env|
46
- instance(ins.name) { ins.call env }
43
+ if instances.keys.length > 1
44
+ @urlmap = Rack::URLMap.new instances.values.inject({}) {|map, ins|
45
+ ins.urls.each {|url|
46
+ map[url] = proc {|env|
47
+ instance(ins.name) { ins.call env }
48
+ }
47
49
  }
50
+ map
48
51
  }
49
- map
50
- }
52
+ else
53
+ @urlmap = instances.values[0]
54
+ end
51
55
 
52
56
  instances.values.each {|ins|
53
57
  instance(ins.name) { ins.boot }
data/spec/module_spec.rb CHANGED
@@ -24,14 +24,14 @@ describe Pakada::Module do
24
24
  it "loops through the load path to find a matching path" do
25
25
  m = Pakada::Module
26
26
 
27
- path = "/my/path"
28
- FileUtils.mkdir_p path + "/lib"
29
- FileUtils.touch path + "/lib/some_module.rb"
30
- $LOAD_PATH << path + "/lib"
27
+ path = Pathname.new("/my/path")
28
+ FileUtils.mkdir_p path.join("lib")
29
+ FileUtils.touch path.join("lib/some_module.rb")
30
+ $LOAD_PATH << path.join("lib")
31
31
 
32
32
  m.detect_path("some_module.rb").should == path
33
- m.detect_path(path + "/lib/some_module.rb").should == path
34
- $LOAD_PATH.delete path + "/lib"
33
+ m.detect_path(path.join("lib/some_module.rb")).should == path
34
+ $LOAD_PATH.delete path.join("lib")
35
35
 
36
36
  m.detect_path("config.ru").should be_nil
37
37
  end
@@ -86,23 +86,19 @@ describe Pakada::Module do
86
86
  end
87
87
 
88
88
  it "tries to determine the module's path" do
89
- path = "/my/path"
90
- file = path + "/lib/some_module.rb"
89
+ path = Pathname.new("/my/path")
90
+ file = path.join("lib/some_module.rb")
91
91
 
92
- Kernel.should_receive(:mock_caller).once { [file + ":1: in `something'"] }
93
- Kernel.instance_eval do
94
- alias orig_caller caller
95
- alias caller mock_caller
96
- end
92
+ Kernel.should_receive(:caller).once {
93
+ [file.to_s + ":1: in `something'"]
94
+ }
97
95
 
98
- Pakada::Module.should_receive(:detect_path).with(file).once { path }
96
+ Pakada::Module.should_receive(:detect_path).with(file.to_s).once { path }
99
97
  klass = Class.new do
100
98
  @pakada_name = :some_module
101
99
  include Pakada::Module
102
100
  end
103
101
  klass.path.should == path
104
-
105
- Kernel.instance_eval { alias caller orig_caller }
106
102
  end
107
103
 
108
104
  it "respects an already set path" do
@@ -112,7 +108,7 @@ describe Pakada::Module do
112
108
  @path = "/my/path"
113
109
  include Pakada::Module
114
110
  end
115
- klass.path.should == "/my/path"
111
+ klass.path.should == Pathname.new("/my/path")
116
112
  end
117
113
 
118
114
  it "adds the module to the list of descendants" do
@@ -159,7 +155,7 @@ describe "SomeModule" do
159
155
 
160
156
  describe ".path" do
161
157
  it "contains the module's base path" do
162
- @klass.path.should == "/opt/pakada"
158
+ @klass.path.should == Pathname.new("/opt/pakada")
163
159
  end
164
160
 
165
161
  it "is read-only" do
data/spec/pakada_spec.rb CHANGED
@@ -98,6 +98,12 @@ describe Pakada do
98
98
  Pakada.boot
99
99
  end
100
100
 
101
+ it "doesn't create a URLMap if there's only one instance" do
102
+ Pakada.instances.delete :bar
103
+ Rack::URLMap.should_not_receive :new
104
+ Pakada.boot
105
+ end
106
+
101
107
  it "calls #boot on each instance" do
102
108
  foo.should_receive :boot
103
109
  bar.should_receive :boot
@@ -108,15 +114,10 @@ describe Pakada do
108
114
 
109
115
  it "creates a default instance if there are no others" do
110
116
  Pakada.instances.clear
111
-
112
- Rack::URLMap.should_receive(:new) {|map|
113
- default.should_receive(:call) {
114
- Pakada.instance.should == default
115
- }
116
- map["/"].call({})
117
- }
118
-
119
117
  Pakada.boot
118
+
119
+ Pakada.instances[:default].should equal(default)
120
+ default.urls.should == ["/"]
120
121
  end
121
122
  end
122
123
 
@@ -127,6 +128,9 @@ describe Pakada do
127
128
 
128
129
  before do
129
130
  Rack::URLMap.stub :new => urlmap
131
+
132
+ Pakada.instance(:foo) {}
133
+ Pakada.instance(:bar) {}
130
134
  Pakada.boot
131
135
  end
132
136
 
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,3 @@
1
- require "bundler"
2
- Bundler.setup :default, :development
3
-
4
1
  require "pakada"
5
2
 
6
3
  require "fakefs/safe"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pakada
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-08-11 00:00:00.000000000Z
12
+ date: 2011-08-14 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
16
- requirement: &68362700 !ruby/object:Gem::Requirement
16
+ requirement: &70444740 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *68362700
24
+ version_requirements: *70444740
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: hooked
27
- requirement: &68362330 !ruby/object:Gem::Requirement
27
+ requirement: &70444530 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *68362330
35
+ version_requirements: *70444530
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &68362010 !ruby/object:Gem::Requirement
38
+ requirement: &70444320 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *68362010
46
+ version_requirements: *70444320
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: fakefs
49
- requirement: &68361690 !ruby/object:Gem::Requirement
49
+ requirement: &70444110 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *68361690
57
+ version_requirements: *70444110
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: fakefs-require
60
- requirement: &68361290 !ruby/object:Gem::Requirement
60
+ requirement: &70443900 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *68361290
68
+ version_requirements: *70443900
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: yard
71
- requirement: &68361000 !ruby/object:Gem::Requirement
71
+ requirement: &70443690 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *68361000
79
+ version_requirements: *70443690
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rdiscount
82
- requirement: &68360670 !ruby/object:Gem::Requirement
82
+ requirement: &70504120 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *68360670
90
+ version_requirements: *70504120
91
91
  description:
92
92
  email:
93
93
  - lars.gierth@gmail.com