scaffolding_extensions 1.3.1 → 1.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README +3 -3
- data/doc/sinatra.txt +18 -5
- data/lib/scaffolding_extensions/controller/sinatra.rb +17 -43
- metadata +2 -2
data/README
CHANGED
@@ -22,13 +22,13 @@ Scaffolding Extensions currently supports:
|
|
22
22
|
|
23
23
|
* Web Frameworks
|
24
24
|
* Rails 2.2.2
|
25
|
-
* Ramaze
|
25
|
+
* Ramaze 2009.01
|
26
26
|
* Camping 1.5
|
27
|
-
* Sinatra 0.
|
27
|
+
* Sinatra 0.9.0.4
|
28
28
|
* Merb 1.0.4
|
29
29
|
* Object/Relational Mappers
|
30
30
|
* ActiveRecord 2.2.2
|
31
|
-
* Sequel 2.
|
31
|
+
* Sequel 2.9.0
|
32
32
|
* Javascript Libaries (used for Ajax/Autocompleting)
|
33
33
|
* Prototype 1.6.0.1
|
34
34
|
* JQuery 1.2.3
|
data/doc/sinatra.txt
CHANGED
@@ -12,9 +12,22 @@ To use the plugin if installing the gem:
|
|
12
12
|
|
13
13
|
require 'scaffolding_extensions'
|
14
14
|
|
15
|
-
To use the plugin,
|
16
|
-
|
15
|
+
To use the plugin, call one of the scaffold methods inside a Sinatra::Base
|
16
|
+
subclass:
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
class Scaf < Sinatra::Base
|
19
|
+
scaffold Model1
|
20
|
+
scaffold_habtm Model1, :things
|
21
|
+
scaffold_all_models :only=>[Model1, Model2, Model3]
|
22
|
+
end
|
23
|
+
|
24
|
+
As this is going to add paths directly to where Scaf is mounted, you generally
|
25
|
+
are going to want to mount Scaf at a subpath and build and run you own Rack app:
|
26
|
+
|
27
|
+
app = Rack::Builder.app do
|
28
|
+
map("/"){run MainApp}
|
29
|
+
map("/admin"){run Scaf}
|
30
|
+
end
|
31
|
+
Rack::Handler.get('mongrel').run(app, :Host=>'0.0.0.0', :Port=>7976) do |server|
|
32
|
+
trap(:INT){server.stop}
|
33
|
+
end
|
@@ -50,11 +50,11 @@ module ScaffoldingExtensions
|
|
50
50
|
@scaffold_class ||= @scaffold_options[:class]
|
51
51
|
if render_options.include?(:inline)
|
52
52
|
use_js = @scaffold_javascript
|
53
|
-
|
53
|
+
response['Content-Type'] = 'text/javascript' if use_js
|
54
54
|
render(:erb, scaffold_fix_template(render_options[:inline]), :layout=>false)
|
55
55
|
else
|
56
|
-
template =
|
57
|
-
layout =
|
56
|
+
template = lookup_template(:erb, suffix_action.to_sym, render_options) rescue scaffold_fix_template(File.read(scaffold_path(action)))
|
57
|
+
layout, _ = lookup_layout(:erb, render_options) || [scaffold_fix_template(File.read(scaffold_path('layout'))).gsub('@content', 'yield'), nil]
|
58
58
|
render(:erb, template, :layout=>layout)
|
59
59
|
end
|
60
60
|
end
|
@@ -76,17 +76,7 @@ module ScaffoldingExtensions
|
|
76
76
|
end
|
77
77
|
|
78
78
|
def scaffold_request_param(v)
|
79
|
-
|
80
|
-
unless param = sparams[v.to_sym]
|
81
|
-
param = {}
|
82
|
-
sparams.each do |k,value|
|
83
|
-
if match = /#{v}\[([^\]]+)\]/.match(k.to_s)
|
84
|
-
param[match[1]] = value
|
85
|
-
end
|
86
|
-
end
|
87
|
-
param = nil if param.empty?
|
88
|
-
end
|
89
|
-
param
|
79
|
+
params[v]
|
90
80
|
end
|
91
81
|
|
92
82
|
# You need to enable Sinatra's session support for this to work,
|
@@ -108,49 +98,33 @@ module ScaffoldingExtensions
|
|
108
98
|
"#{@scaffold_path}/#{action}#{id}"
|
109
99
|
end
|
110
100
|
end
|
111
|
-
end
|
112
|
-
|
113
|
-
class Sinatra::EventContext
|
114
|
-
SCAFFOLD_ROOTS = []
|
115
|
-
extend ScaffoldingExtensions::MetaController
|
116
101
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
def self.scaffold_action_setup(root)
|
121
|
-
if SCAFFOLD_ROOTS.empty?
|
102
|
+
module MetaSinatraController
|
103
|
+
def scaffold_setup_helper
|
122
104
|
include ScaffoldingExtensions::Controller
|
123
105
|
include ScaffoldingExtensions::SinatraController
|
124
106
|
include ScaffoldingExtensions::Helper
|
125
107
|
include ScaffoldingExtensions::PrototypeHelper
|
126
108
|
include ScaffoldingExtensions::SinatraHelper
|
127
|
-
end
|
128
|
-
unless SCAFFOLD_ROOTS.include?(root)
|
129
|
-
SCAFFOLD_ROOTS << root
|
130
109
|
[:get, :post].each do |req_meth|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
110
|
+
sreq_meth = req_meth.to_s.upcase
|
111
|
+
send(req_meth, %r{\A(?:/(\w+)(?:/(\w+))?)?\z}) do
|
112
|
+
captures = params[:captures] || []
|
113
|
+
@scaffold_path = request.env['SCRIPT_NAME']
|
114
|
+
@scaffold_method = meth = captures[0] || 'index'
|
115
|
+
@scaffold_request_method = sreq_meth
|
116
|
+
params[:id] ||= captures[1]
|
135
117
|
raise(ArgumentError, 'Method Not Allowed') if req_meth == :get && scaffolded_nonidempotent_method?(meth)
|
136
118
|
raise(Sinatra::NotFound) unless scaffolded_method?(meth)
|
137
119
|
send(meth)
|
138
120
|
end
|
139
121
|
end
|
122
|
+
self
|
140
123
|
end
|
141
|
-
self
|
142
124
|
end
|
143
125
|
end
|
144
126
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
def scaffold_all_models(root, options = {})
|
150
|
-
Sinatra::EventContext.scaffold_action_setup(root).send(:scaffold_all_models, options)
|
151
|
-
end
|
152
|
-
|
153
|
-
def scaffold_habtm(root, model, association)
|
154
|
-
Sinatra::EventContext.scaffold_action_setup(root).send(:scaffold_habtm, model, association)
|
127
|
+
class Sinatra::Base
|
128
|
+
extend ScaffoldingExtensions::MetaController
|
129
|
+
extend ScaffoldingExtensions::MetaSinatraController
|
155
130
|
end
|
156
|
-
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scaffolding_extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Evans
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-01-29 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|