sinatra-sugar 0.5.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/sinatra/sugar.rb +1 -83
- data/spec/sinatra/sugar_spec.rb +0 -25
- metadata +4 -36
data/lib/sinatra/sugar.rb
CHANGED
@@ -25,32 +25,8 @@ module Sinatra
|
|
25
25
|
end
|
26
26
|
|
27
27
|
module ClassMethods
|
28
|
-
|
29
28
|
attr_writer :root, :guessed_root
|
30
29
|
|
31
|
-
# More advanced set:
|
32
|
-
# - Adds set_#{key} and set_value hooks to set.
|
33
|
-
# - Merges the old value with the new one, if both are hashes:
|
34
|
-
# set :haml, :format => :html5, :escape_html => true
|
35
|
-
# set :haml, :excape_html => false
|
36
|
-
# haml # => { :format => :html5, :escape_html => false }
|
37
|
-
# - Allowes passing a block (for Sinatra 0.9.x):
|
38
|
-
# set(:foo) { Time.now }
|
39
|
-
def set(key, value = self, &block)
|
40
|
-
symbolized = (key.to_sym if key.respond_to? :to_sym)
|
41
|
-
old_value = (send(symbolized) if symbolized and respond_to? symbolized)
|
42
|
-
value = old_value.merge value if value.is_a? Hash and old_value.is_a? Hash
|
43
|
-
super
|
44
|
-
# HACK: Sinatra::Base.set uses recursion and in the final step value always
|
45
|
-
# is a Proc. Also, if value is a Proc no step ever follows. I abuse this to
|
46
|
-
# invoke the hooks only once per set.
|
47
|
-
if value.is_a? Proc
|
48
|
-
invoke_hook "set_#{key}", self
|
49
|
-
invoke_hook :set_value, self, key
|
50
|
-
end
|
51
|
-
self
|
52
|
-
end
|
53
|
-
|
54
30
|
# More advanced register:
|
55
31
|
# - If an exntesion is registered twice, the registered hook will only be called once.
|
56
32
|
def register(*extensions, &block)
|
@@ -76,64 +52,9 @@ module Sinatra
|
|
76
52
|
def root_glob(*args, &block)
|
77
53
|
Dir.glob(root_path(*args)).each(&block)
|
78
54
|
end
|
79
|
-
|
80
|
-
# Whether or not to start a webserver.
|
81
|
-
def run?
|
82
|
-
@run ||= true
|
83
|
-
@run and !@running and app_file? and $0.expand_path == app_file.expand_path
|
84
|
-
end
|
85
|
-
|
86
|
-
# Disable automatically running this class as soon it is subclassed.
|
87
|
-
def inherited
|
88
|
-
super
|
89
|
-
@run = false
|
90
|
-
end
|
91
|
-
|
92
|
-
# The application's root directory. BigBand will guess if missing.
|
93
|
-
def root
|
94
|
-
return ".".expand_path unless app_file?
|
95
|
-
return @root if @root
|
96
|
-
@guessed_root ||= begin
|
97
|
-
dir = app_file.expand_path.dirname
|
98
|
-
if dir.basename == "lib" and not (dir / "lib").directory?
|
99
|
-
dir.dirname
|
100
|
-
else
|
101
|
-
dir
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
# Returns true if the #root is known.
|
107
|
-
def root?
|
108
|
-
!!@root || app_file?
|
109
|
-
end
|
110
|
-
|
111
|
-
# Option parser for #run!
|
112
|
-
def run_option_parser
|
113
|
-
@run_option_parser ||= begin
|
114
|
-
require 'optparse'
|
115
|
-
OptionParser.new do |op|
|
116
|
-
op.on('-x') { set :lock, true }
|
117
|
-
op.on('-e env') { |val| set :environment, val.to_sym }
|
118
|
-
op.on('-s server') { |val| set :server, val }
|
119
|
-
op.on('-p port') { |val| set :port, val.to_i }
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
# Extended #run!, offers an extandable option parser for
|
125
|
-
# BigBand with the same standard options as the one of
|
126
|
-
# Sinatra::Base (see #run_option_parser).
|
127
|
-
def run!(options = {})
|
128
|
-
run_option_parser.parse!(ARGV.dup) unless ARGV.empty?
|
129
|
-
@running = true
|
130
|
-
super(options)
|
131
|
-
end
|
132
|
-
|
133
55
|
end
|
134
56
|
|
135
57
|
module InstanceMethods
|
136
|
-
|
137
58
|
# See BigBand::BasicExtentions::ClassMethods#root_path
|
138
59
|
def root_path(*args)
|
139
60
|
self.class.root_path(*args)
|
@@ -153,7 +74,6 @@ module Sinatra
|
|
153
74
|
def root?
|
154
75
|
self.class.root
|
155
76
|
end
|
156
|
-
|
157
77
|
end
|
158
78
|
|
159
79
|
def self.registered(klass)
|
@@ -164,10 +84,8 @@ module Sinatra
|
|
164
84
|
def self.set_app_file(klass)
|
165
85
|
klass.guessed_root = nil
|
166
86
|
end
|
167
|
-
|
168
87
|
end
|
169
|
-
|
88
|
+
|
170
89
|
Base.ignore_caller
|
171
90
|
register Sugar
|
172
|
-
|
173
91
|
end
|
data/spec/sinatra/sugar_spec.rb
CHANGED
@@ -4,30 +4,6 @@ describe Sinatra::Sugar do
|
|
4
4
|
before { app :Sugar }
|
5
5
|
it_should_behave_like 'sinatra'
|
6
6
|
|
7
|
-
describe "set" do
|
8
|
-
|
9
|
-
it "adds hooks to Sinatra::Base#set" do
|
10
|
-
extension = Module.new
|
11
|
-
extension.should_receive(:set_foo).with(app)
|
12
|
-
extension.should_receive(:set_value).with(app, :foo)
|
13
|
-
app.register extension
|
14
|
-
app.set :foo, 42
|
15
|
-
end
|
16
|
-
|
17
|
-
it "allows passing a block" do
|
18
|
-
app.set(:foo) { 42 }
|
19
|
-
app.foo.should == 42
|
20
|
-
end
|
21
|
-
|
22
|
-
it "merges hash values" do
|
23
|
-
app.set :foo, :bar => 42
|
24
|
-
app.set :foo, :baz => 23
|
25
|
-
app.foo[:bar].should == 42
|
26
|
-
app.foo[:baz].should == 23
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
7
|
describe "register" do
|
32
8
|
it "registers an extension only once" do
|
33
9
|
extension = Module.new
|
@@ -35,5 +11,4 @@ describe Sinatra::Sugar do
|
|
35
11
|
10.times { app.register extension }
|
36
12
|
end
|
37
13
|
end
|
38
|
-
|
39
14
|
end
|
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sinatra-sugar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 5
|
9
|
-
- 0
|
10
|
-
version: 0.5.0
|
4
|
+
prerelease:
|
5
|
+
version: 0.5.1
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Konstantin Haase
|
@@ -15,8 +10,7 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date:
|
19
|
-
default_executable:
|
13
|
+
date: 2011-05-02 00:00:00 Z
|
20
14
|
dependencies:
|
21
15
|
- !ruby/object:Gem::Dependency
|
22
16
|
name: monkey-lib
|
@@ -26,11 +20,6 @@ dependencies:
|
|
26
20
|
requirements:
|
27
21
|
- - ~>
|
28
22
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 11
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
- 5
|
33
|
-
- 0
|
34
23
|
version: 0.5.0
|
35
24
|
type: :runtime
|
36
25
|
version_requirements: *id001
|
@@ -42,11 +31,6 @@ dependencies:
|
|
42
31
|
requirements:
|
43
32
|
- - ~>
|
44
33
|
- !ruby/object:Gem::Version
|
45
|
-
hash: 11
|
46
|
-
segments:
|
47
|
-
- 0
|
48
|
-
- 5
|
49
|
-
- 0
|
50
34
|
version: 0.5.0
|
51
35
|
type: :development
|
52
36
|
version_requirements: *id002
|
@@ -58,10 +42,6 @@ dependencies:
|
|
58
42
|
requirements:
|
59
43
|
- - ~>
|
60
44
|
- !ruby/object:Gem::Version
|
61
|
-
hash: 15
|
62
|
-
segments:
|
63
|
-
- 1
|
64
|
-
- 0
|
65
45
|
version: "1.0"
|
66
46
|
type: :runtime
|
67
47
|
version_requirements: *id003
|
@@ -73,11 +53,6 @@ dependencies:
|
|
73
53
|
requirements:
|
74
54
|
- - ">="
|
75
55
|
- !ruby/object:Gem::Version
|
76
|
-
hash: 27
|
77
|
-
segments:
|
78
|
-
- 1
|
79
|
-
- 3
|
80
|
-
- 0
|
81
56
|
version: 1.3.0
|
82
57
|
type: :development
|
83
58
|
version_requirements: *id004
|
@@ -95,7 +70,6 @@ files:
|
|
95
70
|
- spec/spec_helper.rb
|
96
71
|
- README.md
|
97
72
|
- LICENSE
|
98
|
-
has_rdoc: yard
|
99
73
|
homepage: http://github.com/rkh/sinatra-sugar
|
100
74
|
licenses: []
|
101
75
|
|
@@ -109,23 +83,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
109
83
|
requirements:
|
110
84
|
- - ">="
|
111
85
|
- !ruby/object:Gem::Version
|
112
|
-
hash: 3
|
113
|
-
segments:
|
114
|
-
- 0
|
115
86
|
version: "0"
|
116
87
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
88
|
none: false
|
118
89
|
requirements:
|
119
90
|
- - ">="
|
120
91
|
- !ruby/object:Gem::Version
|
121
|
-
hash: 3
|
122
|
-
segments:
|
123
|
-
- 0
|
124
92
|
version: "0"
|
125
93
|
requirements: []
|
126
94
|
|
127
95
|
rubyforge_project:
|
128
|
-
rubygems_version: 1.
|
96
|
+
rubygems_version: 1.7.2
|
129
97
|
signing_key:
|
130
98
|
specification_version: 3
|
131
99
|
summary: Some extensions to the sinatra default behavior (usefull for other Sintatra extensions, part of BigBand).
|