camping 2.1.467 → 2.1.523
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 → README.md} +45 -43
- data/Rakefile +20 -1
- data/book/{01_introduction → 01_introduction.md} +4 -4
- data/book/{02_getting_started → 02_getting_started.md} +196 -196
- data/book/{51_upgrading → 51_upgrading.md} +54 -54
- data/lib/camping-unabridged.rb +7 -7
- data/lib/camping.rb +4 -4
- data/lib/camping/mab.rb +24 -13
- data/lib/camping/reloader.rb +98 -128
- data/lib/camping/server.rb +22 -89
- data/test/app_helpers.rb +12 -1
- data/test/app_markup.rb +54 -0
- data/test/app_reloader.rb +70 -0
- data/test/app_simple.rb +12 -0
- data/test/apps/reloader.rb +7 -0
- data/test/apps/reloader/config.ru +5 -0
- data/test/apps/reloader/reload_me.rb +2 -0
- data/test/apps/reloader_indirect.rb +3 -0
- data/test/test_helper.rb +4 -5
- metadata +67 -55
data/lib/camping/server.rb
CHANGED
|
@@ -44,7 +44,7 @@ module Camping
|
|
|
44
44
|
options = {}
|
|
45
45
|
|
|
46
46
|
opt_parser = OptionParser.new("", 24, ' ') do |opts|
|
|
47
|
-
opts.banner = "Usage: camping
|
|
47
|
+
opts.banner = "Usage: camping my-camping-app.rb"
|
|
48
48
|
opts.define_head "#{File.basename($0)}, the microframework ON-button for ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
|
|
49
49
|
opts.separator ""
|
|
50
50
|
opts.separator "Specific options:"
|
|
@@ -62,7 +62,7 @@ module Camping
|
|
|
62
62
|
opts.on("-C", "--console",
|
|
63
63
|
"Run in console mode with IRB") { options[:server] = "console" }
|
|
64
64
|
|
|
65
|
-
server_list = ["
|
|
65
|
+
server_list = ["thin", "webrick", "console"]
|
|
66
66
|
opts.on("-s", "--server NAME",
|
|
67
67
|
"Server to force (#{server_list.join(', ')})") { |v| options[:server] = v }
|
|
68
68
|
|
|
@@ -90,15 +90,14 @@ module Camping
|
|
|
90
90
|
exit
|
|
91
91
|
end
|
|
92
92
|
|
|
93
|
-
options[:
|
|
93
|
+
options[:script] = args.shift
|
|
94
94
|
options
|
|
95
95
|
end
|
|
96
96
|
end
|
|
97
97
|
|
|
98
98
|
def initialize(*)
|
|
99
99
|
super
|
|
100
|
-
@reloader = Camping::Reloader.new
|
|
101
|
-
@reloader.on_reload do |app|
|
|
100
|
+
@reloader = Camping::Reloader.new(options[:script]) do |app|
|
|
102
101
|
if !app.options.has_key?(:dynamic_templates)
|
|
103
102
|
app.options[:dynamic_templates] = true
|
|
104
103
|
end
|
|
@@ -125,16 +124,16 @@ module Camping
|
|
|
125
124
|
|
|
126
125
|
def middleware
|
|
127
126
|
h = super
|
|
128
|
-
h["development"]
|
|
127
|
+
h["development"] << [XSendfile]
|
|
129
128
|
h
|
|
130
129
|
end
|
|
131
130
|
|
|
132
131
|
def start
|
|
133
132
|
if options[:server] == "console"
|
|
134
133
|
puts "** Starting console"
|
|
135
|
-
reload!
|
|
136
|
-
|
|
137
|
-
eval("self", TOPLEVEL_BINDING).meta_def(:reload!) {
|
|
134
|
+
@reloader.reload!
|
|
135
|
+
r = @reloader
|
|
136
|
+
eval("self", TOPLEVEL_BINDING).meta_def(:reload!) { r.reload!; nil }
|
|
138
137
|
ARGV.clear
|
|
139
138
|
IRB.start
|
|
140
139
|
exit
|
|
@@ -144,95 +143,29 @@ module Camping
|
|
|
144
143
|
super
|
|
145
144
|
end
|
|
146
145
|
end
|
|
147
|
-
|
|
148
|
-
def
|
|
149
|
-
|
|
150
|
-
if File.file?(path)
|
|
151
|
-
path
|
|
152
|
-
elsif File.directory?(path)
|
|
153
|
-
Dir[File.join(path, '*.rb')]
|
|
154
|
-
end
|
|
155
|
-
end.flatten.compact
|
|
156
|
-
|
|
157
|
-
@reloader.update(*scripts)
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
def reload!
|
|
161
|
-
find_scripts
|
|
146
|
+
|
|
147
|
+
def public_dir
|
|
148
|
+
File.expand_path('../public', @reloader.file)
|
|
162
149
|
end
|
|
163
150
|
|
|
164
151
|
def app
|
|
165
|
-
self
|
|
152
|
+
Rack::Cascade.new([Rack::File.new(public_dir), self], [405, 404, 403])
|
|
166
153
|
end
|
|
167
154
|
|
|
168
|
-
def
|
|
169
|
-
reload
|
|
155
|
+
def current_app
|
|
156
|
+
@reloader.reload
|
|
170
157
|
apps = @reloader.apps
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
index_page(apps)
|
|
175
|
-
when 1
|
|
176
|
-
apps.values.first.call(env)
|
|
177
|
-
else
|
|
178
|
-
apps.each do |name, app|
|
|
179
|
-
mount = name.to_s.downcase
|
|
180
|
-
case env["PATH_INFO"]
|
|
181
|
-
when %r{^/#{mount}}
|
|
182
|
-
env["SCRIPT_NAME"] = env["SCRIPT_NAME"] + $&
|
|
183
|
-
env["PATH_INFO"] = $'
|
|
184
|
-
return app.call(env)
|
|
185
|
-
when %r{^/code/#{mount}}
|
|
186
|
-
return [200, {'Content-Type' => 'text/plain', 'X-Sendfile' => @reloader.script(app).file}, []]
|
|
187
|
-
end
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
index_page(apps)
|
|
158
|
+
return apps.values.first if apps.size == 1
|
|
159
|
+
if key = apps.keys.grep(/^#{@reloader.name}$/i)[0]
|
|
160
|
+
apps[key]
|
|
191
161
|
end
|
|
192
162
|
end
|
|
193
|
-
|
|
194
|
-
def
|
|
195
|
-
|
|
163
|
+
|
|
164
|
+
def call(env)
|
|
165
|
+
app = current_app || raise("Could not find an app called `#{@reloader.name}`")
|
|
166
|
+
app.call(env)
|
|
196
167
|
end
|
|
197
168
|
|
|
198
|
-
SOURCE = <<-HTML
|
|
199
|
-
<html>
|
|
200
|
-
<head>
|
|
201
|
-
<title>You are Camping</title>
|
|
202
|
-
<style type="text/css">
|
|
203
|
-
body {
|
|
204
|
-
font-family: verdana, arial, sans-serif;
|
|
205
|
-
padding: 10px 40px;
|
|
206
|
-
margin: 0;
|
|
207
|
-
}
|
|
208
|
-
h1, h2, h3, h4, h5, h6 {
|
|
209
|
-
font-family: utopia, georgia, serif;
|
|
210
|
-
}
|
|
211
|
-
h3 { display: inline; }
|
|
212
|
-
</style>
|
|
213
|
-
</head>
|
|
214
|
-
<body>
|
|
215
|
-
<% if apps.empty? %>
|
|
216
|
-
<p>Good day. I'm sorry, but I could not find any Camping apps.
|
|
217
|
-
You might want to take a look at the console to see if any errors
|
|
218
|
-
have been raised.</p>
|
|
219
|
-
<% else %>
|
|
220
|
-
<p>Good day. These are the Camping apps you've mounted.</p>
|
|
221
|
-
<ul>
|
|
222
|
-
<% apps.each do |name, app| %>
|
|
223
|
-
<li>
|
|
224
|
-
<h3><a href="/<%= name.to_s.downcase %>"><%= app %></a></h3>
|
|
225
|
-
<small> / <a href="/code/<%= name.to_s.downcase %>">View source</a></small>
|
|
226
|
-
</li>
|
|
227
|
-
<% end %>
|
|
228
|
-
</ul>
|
|
229
|
-
<% end %>
|
|
230
|
-
</body>
|
|
231
|
-
</html>
|
|
232
|
-
HTML
|
|
233
|
-
|
|
234
|
-
TEMPLATE = ERB.new(SOURCE)
|
|
235
|
-
|
|
236
169
|
class XSendfile
|
|
237
170
|
def initialize(app)
|
|
238
171
|
@app = app
|
|
@@ -262,4 +195,4 @@ module Camping
|
|
|
262
195
|
end
|
|
263
196
|
end
|
|
264
197
|
end
|
|
265
|
-
end
|
|
198
|
+
end
|
data/test/app_helpers.rb
CHANGED
|
@@ -23,6 +23,12 @@ end
|
|
|
23
23
|
|
|
24
24
|
module Helpers::Controllers
|
|
25
25
|
class Index
|
|
26
|
+
def get
|
|
27
|
+
URL('/').to_s
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
class Model
|
|
26
32
|
def get
|
|
27
33
|
current_user.name
|
|
28
34
|
end
|
|
@@ -37,7 +43,7 @@ end
|
|
|
37
43
|
|
|
38
44
|
class Helpers::Test < TestCase
|
|
39
45
|
def test_models
|
|
40
|
-
get '/'
|
|
46
|
+
get '/model'
|
|
41
47
|
assert_body "Bob"
|
|
42
48
|
end
|
|
43
49
|
|
|
@@ -45,5 +51,10 @@ class Helpers::Test < TestCase
|
|
|
45
51
|
get '/users'
|
|
46
52
|
assert_body "/"
|
|
47
53
|
end
|
|
54
|
+
|
|
55
|
+
def test_url
|
|
56
|
+
get '/', {}, 'PATH_INFO' => ''
|
|
57
|
+
assert_body "http://example.org/"
|
|
58
|
+
end
|
|
48
59
|
end
|
|
49
60
|
|
data/test/app_markup.rb
CHANGED
|
@@ -15,6 +15,32 @@ module Markup::Controllers
|
|
|
15
15
|
render :index, :layout => false
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
|
+
|
|
19
|
+
class AutoPrepend
|
|
20
|
+
def get
|
|
21
|
+
mab do
|
|
22
|
+
img :src => '/hello.png'
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class Compat < R '/compat/(.*?)'
|
|
28
|
+
def get(type)
|
|
29
|
+
mab do
|
|
30
|
+
send(type) do
|
|
31
|
+
body { h1 'Nice' }
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
class CompatHelpers
|
|
38
|
+
def get
|
|
39
|
+
mab do
|
|
40
|
+
helpers.R CompatHelpers
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
18
44
|
end
|
|
19
45
|
|
|
20
46
|
module Markup::Views
|
|
@@ -23,6 +49,7 @@ module Markup::Views
|
|
|
23
49
|
end
|
|
24
50
|
|
|
25
51
|
def layout
|
|
52
|
+
self << '<!DOCTYPE html>'
|
|
26
53
|
html do
|
|
27
54
|
head do
|
|
28
55
|
title "Web Page"
|
|
@@ -36,6 +63,7 @@ end
|
|
|
36
63
|
class Markup::Test < TestCase
|
|
37
64
|
def test_render
|
|
38
65
|
get '/'
|
|
66
|
+
assert_body %r{\A<!DOCTYPE html>}
|
|
39
67
|
assert_body %r{<h1>Welcome!</h1>}
|
|
40
68
|
assert_body %r{<title>Web Page</title>}
|
|
41
69
|
end
|
|
@@ -48,4 +76,30 @@ class Markup::Test < TestCase
|
|
|
48
76
|
assert_body %r{<title>Web Page</title>}
|
|
49
77
|
end
|
|
50
78
|
end
|
|
79
|
+
|
|
80
|
+
def test_auto_prepend
|
|
81
|
+
get '/auto/prepend', {}, 'SCRIPT_NAME' => '/mount'
|
|
82
|
+
assert_body '<img src="/mount/hello.png">'
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def test_compat
|
|
86
|
+
warning = "xhtml_strict is no longer supported (or an active standard); using HTML5 instead\n"
|
|
87
|
+
|
|
88
|
+
assert_output '', warning * 3 do
|
|
89
|
+
get '/compat/xhtml_strict'
|
|
90
|
+
assert_body '<!DOCTYPE html><html><body><h1>Nice</h1></body></html>'
|
|
91
|
+
|
|
92
|
+
get '/compat/xhtml_transitional'
|
|
93
|
+
assert_body '<!DOCTYPE html><html><body><h1>Nice</h1></body></html>'
|
|
94
|
+
|
|
95
|
+
get '/compat/xhtml_frameset'
|
|
96
|
+
assert_body '<!DOCTYPE html><html><body><h1>Nice</h1></body></html>'
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def test_compat_helpers
|
|
101
|
+
get '/compat/helpers'
|
|
102
|
+
assert_body '/compat/helpers'
|
|
103
|
+
end
|
|
51
104
|
end
|
|
105
|
+
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
require 'fileutils'
|
|
3
|
+
require 'camping/reloader'
|
|
4
|
+
|
|
5
|
+
$counter = 0
|
|
6
|
+
|
|
7
|
+
module TestCaseReloader
|
|
8
|
+
def reloader
|
|
9
|
+
@reloader ||= Camping::Reloader.new(file)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def setup
|
|
13
|
+
super
|
|
14
|
+
reloader.reload!
|
|
15
|
+
assert Object.const_defined?(:Reloader), "Reloader didn't load app"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def teardown
|
|
19
|
+
super
|
|
20
|
+
assert Object.const_defined?(:Reloader), "Test removed app"
|
|
21
|
+
reloader.remove_apps
|
|
22
|
+
assert !Object.const_defined?(:Reloader), "Reloader didn't remove app"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
class TestReloader < TestCase
|
|
27
|
+
include TestCaseReloader
|
|
28
|
+
BASE = File.expand_path('../apps/reloader', __FILE__)
|
|
29
|
+
|
|
30
|
+
def file; BASE + '.rb' end
|
|
31
|
+
|
|
32
|
+
def setup
|
|
33
|
+
$counter = 0
|
|
34
|
+
super
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_counter
|
|
38
|
+
assert_equal 1, $counter
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_forced_reload
|
|
42
|
+
reloader.reload!
|
|
43
|
+
assert_equal 2, $counter
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_mtime_reload
|
|
47
|
+
reloader.reload
|
|
48
|
+
assert_equal 1, $counter
|
|
49
|
+
|
|
50
|
+
FileUtils.touch(BASE + '.rb')
|
|
51
|
+
sleep 1
|
|
52
|
+
reloader.reload
|
|
53
|
+
assert_equal 2, $counter
|
|
54
|
+
|
|
55
|
+
FileUtils.touch(BASE + '/reload_me.rb')
|
|
56
|
+
sleep 1
|
|
57
|
+
reloader.reload
|
|
58
|
+
assert_equal 3, $counter
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
class TestConfigRu < TestReloader
|
|
63
|
+
BASE = File.expand_path('../apps/reloader', __FILE__)
|
|
64
|
+
def file; BASE + '/config.ru' end
|
|
65
|
+
|
|
66
|
+
def test_name
|
|
67
|
+
assert_equal Reloader, reloader.apps[:reloader]
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
data/test/app_simple.rb
CHANGED
|
@@ -47,6 +47,12 @@ module Simple::Controllers
|
|
|
47
47
|
"Optional: #{value}"
|
|
48
48
|
end
|
|
49
49
|
end
|
|
50
|
+
|
|
51
|
+
class Weird
|
|
52
|
+
def get
|
|
53
|
+
redirect MultipleComplexX, 'hello%#/world'
|
|
54
|
+
end
|
|
55
|
+
end
|
|
50
56
|
end
|
|
51
57
|
|
|
52
58
|
class Simple::Test < TestCase
|
|
@@ -94,4 +100,10 @@ class Simple::Test < TestCase
|
|
|
94
100
|
get '/optional/override'
|
|
95
101
|
assert_body "Optional: override"
|
|
96
102
|
end
|
|
103
|
+
|
|
104
|
+
def test_weird
|
|
105
|
+
get '/weird'
|
|
106
|
+
follow_redirect!
|
|
107
|
+
assert_body 'Complex: hello%#/world'
|
|
108
|
+
end
|
|
97
109
|
end
|
data/test/test_helper.rb
CHANGED
|
@@ -11,10 +11,10 @@ else
|
|
|
11
11
|
require 'camping-unabridged'
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
require '
|
|
14
|
+
require 'minitest/autorun'
|
|
15
15
|
require 'rack/test'
|
|
16
16
|
|
|
17
|
-
class TestCase <
|
|
17
|
+
class TestCase < MiniTest::Unit::TestCase
|
|
18
18
|
include Rack::Test::Methods
|
|
19
19
|
|
|
20
20
|
def self.inherited(mod)
|
|
@@ -50,7 +50,6 @@ class TestCase < Test::Unit::TestCase
|
|
|
50
50
|
def assert_status(code)
|
|
51
51
|
assert_equal(code, last_response.status)
|
|
52
52
|
end
|
|
53
|
-
|
|
54
|
-
def
|
|
55
|
-
end
|
|
53
|
+
|
|
54
|
+
def test_silly; end
|
|
56
55
|
end
|
metadata
CHANGED
|
@@ -1,66 +1,75 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: camping
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.1.
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 2.1.523
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
|
-
authors:
|
|
7
|
+
authors:
|
|
8
8
|
- why the lucky stiff
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
- !ruby/object:Gem::Dependency
|
|
12
|
+
date: 2012-09-10 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
16
15
|
name: rack
|
|
17
|
-
requirement: &
|
|
16
|
+
requirement: &70274142153900 !ruby/object:Gem::Requirement
|
|
18
17
|
none: false
|
|
19
|
-
requirements:
|
|
20
|
-
- -
|
|
21
|
-
- !ruby/object:Gem::Version
|
|
22
|
-
version:
|
|
18
|
+
requirements:
|
|
19
|
+
- - ! '>='
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '1.0'
|
|
23
22
|
type: :runtime
|
|
24
23
|
prerelease: false
|
|
25
|
-
version_requirements: *
|
|
26
|
-
- !ruby/object:Gem::Dependency
|
|
24
|
+
version_requirements: *70274142153900
|
|
25
|
+
- !ruby/object:Gem::Dependency
|
|
26
|
+
name: mab
|
|
27
|
+
requirement: &70274142153120 !ruby/object:Gem::Requirement
|
|
28
|
+
none: false
|
|
29
|
+
requirements:
|
|
30
|
+
- - ! '>='
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '0'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: *70274142153120
|
|
36
|
+
- !ruby/object:Gem::Dependency
|
|
27
37
|
name: rake
|
|
28
|
-
requirement: &
|
|
38
|
+
requirement: &70274142152460 !ruby/object:Gem::Requirement
|
|
29
39
|
none: false
|
|
30
|
-
requirements:
|
|
31
|
-
- -
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: 0
|
|
40
|
+
requirements:
|
|
41
|
+
- - ! '>='
|
|
42
|
+
- !ruby/object:Gem::Version
|
|
43
|
+
version: '0'
|
|
34
44
|
type: :development
|
|
35
45
|
prerelease: false
|
|
36
|
-
version_requirements: *
|
|
37
|
-
- !ruby/object:Gem::Dependency
|
|
46
|
+
version_requirements: *70274142152460
|
|
47
|
+
- !ruby/object:Gem::Dependency
|
|
38
48
|
name: rack-test
|
|
39
|
-
requirement: &
|
|
49
|
+
requirement: &70274150145520 !ruby/object:Gem::Requirement
|
|
40
50
|
none: false
|
|
41
|
-
requirements:
|
|
42
|
-
- -
|
|
43
|
-
- !ruby/object:Gem::Version
|
|
44
|
-
version:
|
|
51
|
+
requirements:
|
|
52
|
+
- - ! '>='
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
45
55
|
type: :development
|
|
46
56
|
prerelease: false
|
|
47
|
-
version_requirements: *
|
|
57
|
+
version_requirements: *70274150145520
|
|
48
58
|
description:
|
|
49
59
|
email: why@ruby-lang.org
|
|
50
|
-
executables:
|
|
60
|
+
executables:
|
|
51
61
|
- camping
|
|
52
62
|
extensions: []
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
- README
|
|
63
|
+
extra_rdoc_files:
|
|
64
|
+
- README.md
|
|
56
65
|
- CHANGELOG
|
|
57
66
|
- COPYING
|
|
58
|
-
- book/01_introduction
|
|
59
|
-
- book/02_getting_started
|
|
60
|
-
- book/51_upgrading
|
|
61
|
-
files:
|
|
67
|
+
- book/01_introduction.md
|
|
68
|
+
- book/02_getting_started.md
|
|
69
|
+
- book/51_upgrading.md
|
|
70
|
+
files:
|
|
62
71
|
- COPYING
|
|
63
|
-
- README
|
|
72
|
+
- README.md
|
|
64
73
|
- Rakefile
|
|
65
74
|
- bin/camping
|
|
66
75
|
- test/app_cookies.rb
|
|
@@ -69,6 +78,7 @@ files:
|
|
|
69
78
|
- test/app_inline_templates.rb
|
|
70
79
|
- test/app_markup.rb
|
|
71
80
|
- test/app_partials.rb
|
|
81
|
+
- test/app_reloader.rb
|
|
72
82
|
- test/app_route_generating.rb
|
|
73
83
|
- test/app_sessions.rb
|
|
74
84
|
- test/app_simple.rb
|
|
@@ -77,6 +87,10 @@ files:
|
|
|
77
87
|
- test/apps/forward_to_other_controller.rb
|
|
78
88
|
- test/apps/migrations.rb
|
|
79
89
|
- test/apps/misc.rb
|
|
90
|
+
- test/apps/reloader/config.ru
|
|
91
|
+
- test/apps/reloader/reload_me.rb
|
|
92
|
+
- test/apps/reloader.rb
|
|
93
|
+
- test/apps/reloader_indirect.rb
|
|
80
94
|
- test/apps/sessions.rb
|
|
81
95
|
- test/test_helper.rb
|
|
82
96
|
- lib/camping/ar.rb
|
|
@@ -109,16 +123,15 @@ files:
|
|
|
109
123
|
- extras/rdoc/generator/template/flipbook/readme.rhtml
|
|
110
124
|
- extras/rdoc/generator/template/flipbook/reference.rhtml
|
|
111
125
|
- extras/rdoc/generator/template/flipbook/toc.rhtml
|
|
112
|
-
- book/01_introduction
|
|
113
|
-
- book/02_getting_started
|
|
114
|
-
- book/51_upgrading
|
|
126
|
+
- book/01_introduction.md
|
|
127
|
+
- book/02_getting_started.md
|
|
128
|
+
- book/51_upgrading.md
|
|
115
129
|
- examples/blog.rb
|
|
116
130
|
- CHANGELOG
|
|
117
131
|
homepage: http://camping.rubyforge.org/
|
|
118
132
|
licenses: []
|
|
119
|
-
|
|
120
133
|
post_install_message:
|
|
121
|
-
rdoc_options:
|
|
134
|
+
rdoc_options:
|
|
122
135
|
- --line-numbers
|
|
123
136
|
- --quiet
|
|
124
137
|
- --main
|
|
@@ -127,26 +140,25 @@ rdoc_options:
|
|
|
127
140
|
- ^(examples|extras)\/
|
|
128
141
|
- --exclude
|
|
129
142
|
- lib/camping.rb
|
|
130
|
-
require_paths:
|
|
143
|
+
require_paths:
|
|
131
144
|
- lib
|
|
132
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
|
145
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
133
146
|
none: false
|
|
134
|
-
requirements:
|
|
135
|
-
- -
|
|
136
|
-
- !ruby/object:Gem::Version
|
|
147
|
+
requirements:
|
|
148
|
+
- - ! '>='
|
|
149
|
+
- !ruby/object:Gem::Version
|
|
137
150
|
version: 1.8.2
|
|
138
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
151
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
139
152
|
none: false
|
|
140
|
-
requirements:
|
|
141
|
-
- -
|
|
142
|
-
- !ruby/object:Gem::Version
|
|
143
|
-
version:
|
|
153
|
+
requirements:
|
|
154
|
+
- - ! '>='
|
|
155
|
+
- !ruby/object:Gem::Version
|
|
156
|
+
version: '0'
|
|
144
157
|
requirements: []
|
|
145
|
-
|
|
146
158
|
rubyforge_project: camping
|
|
147
|
-
rubygems_version: 1.8.
|
|
159
|
+
rubygems_version: 1.8.10
|
|
148
160
|
signing_key:
|
|
149
161
|
specification_version: 3
|
|
150
162
|
summary: minature rails for stay-at-home moms
|
|
151
163
|
test_files: []
|
|
152
|
-
|
|
164
|
+
has_rdoc: true
|