padrino-core 0.11.3 → 0.11.4
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.
- checksums.yaml +7 -0
- data/README.rdoc +5 -5
- data/lib/padrino-core.rb +3 -9
- data/lib/padrino-core/application.rb +39 -35
- data/lib/padrino-core/application/flash.rb +7 -7
- data/lib/padrino-core/application/rendering.rb +136 -139
- data/lib/padrino-core/application/rendering/extensions/erubis.rb +15 -6
- data/lib/padrino-core/application/routing.rb +371 -369
- data/lib/padrino-core/application/showexceptions.rb +13 -12
- data/lib/padrino-core/caller.rb +40 -40
- data/lib/padrino-core/cli/adapter.rb +4 -4
- data/lib/padrino-core/cli/base.rb +40 -39
- data/lib/padrino-core/cli/rake.rb +2 -2
- data/lib/padrino-core/cli/rake_tasks.rb +2 -4
- data/lib/padrino-core/command.rb +2 -2
- data/lib/padrino-core/loader.rb +14 -15
- data/lib/padrino-core/locale/cs.yml +0 -1
- data/lib/padrino-core/locale/da.yml +0 -1
- data/lib/padrino-core/locale/de.yml +0 -1
- data/lib/padrino-core/locale/en.yml +0 -1
- data/lib/padrino-core/locale/es.yml +1 -2
- data/lib/padrino-core/locale/fr.yml +2 -3
- data/lib/padrino-core/locale/hu.yml +1 -2
- data/lib/padrino-core/locale/it.yml +0 -1
- data/lib/padrino-core/locale/ja.yml +1 -2
- data/lib/padrino-core/locale/lv.yml +0 -1
- data/lib/padrino-core/locale/nl.yml +0 -1
- data/lib/padrino-core/locale/no.yml +0 -2
- data/lib/padrino-core/locale/pl.yml +0 -1
- data/lib/padrino-core/locale/pt_br.yml +0 -1
- data/lib/padrino-core/locale/ro.yml +0 -1
- data/lib/padrino-core/locale/ru.yml +0 -1
- data/lib/padrino-core/locale/sv.yml +0 -1
- data/lib/padrino-core/locale/tr.yml +0 -1
- data/lib/padrino-core/locale/uk.yml +0 -1
- data/lib/padrino-core/locale/zh_cn.yml +0 -1
- data/lib/padrino-core/locale/zh_tw.yml +0 -1
- data/lib/padrino-core/logger.rb +26 -27
- data/lib/padrino-core/module.rb +3 -3
- data/lib/padrino-core/mounter.rb +59 -59
- data/lib/padrino-core/reloader.rb +23 -23
- data/lib/padrino-core/router.rb +10 -13
- data/lib/padrino-core/server.rb +17 -19
- data/lib/padrino-core/tasks.rb +3 -3
- data/lib/padrino-core/version.rb +1 -1
- data/padrino-core.gemspec +1 -1
- data/test/test_application.rb +7 -7
- data/test/test_rendering.rb +15 -2
- data/test/test_routing.rb +34 -10
- metadata +13 -27
@@ -5,16 +5,17 @@ module Padrino
|
|
5
5
|
# @private
|
6
6
|
class ShowExceptions < Sinatra::ShowExceptions
|
7
7
|
private
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
8
|
+
|
9
|
+
def frame_class(frame)
|
10
|
+
if frame.filename =~ /lib\/sinatra.*\.rb|lib\/padrino.*\.rb/
|
11
|
+
"framework"
|
12
|
+
elsif (defined?(Gem) && frame.filename.include?(Gem.dir)) ||
|
13
|
+
frame.filename =~ /\/bin\/(\w+)$/ ||
|
14
|
+
frame.filename =~ /Ruby\/Gems/
|
15
|
+
"system"
|
16
|
+
else
|
17
|
+
"app"
|
18
18
|
end
|
19
|
-
|
20
|
-
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/padrino-core/caller.rb
CHANGED
@@ -2,23 +2,23 @@ module Padrino
|
|
2
2
|
|
3
3
|
# List of callers in a Padrino application that should be ignored as part of a stack trace.
|
4
4
|
PADRINO_IGNORE_CALLERS = [
|
5
|
-
%r{lib/padrino-.*$},
|
6
|
-
%r{/padrino-.*/(lib|bin)},
|
7
|
-
%r{/bin/padrino$},
|
8
|
-
%r{/sinatra(/(base|main|showexceptions))?\.rb$},
|
9
|
-
%r{lib/tilt.*\.rb$},
|
10
|
-
%r{lib/rack.*\.rb$},
|
11
|
-
%r{lib/mongrel.*\.rb$},
|
12
|
-
%r{lib/shotgun.*\.rb$},
|
13
|
-
%r{bin/shotgun$},
|
14
|
-
%r{\(.*\)},
|
15
|
-
%r{shoulda/context\.rb$},
|
16
|
-
%r{mocha/integration},
|
17
|
-
%r{test/unit},
|
18
|
-
%r{rake_test_loader\.rb},
|
19
|
-
%r{custom_require\.rb$},
|
20
|
-
%r{active_support},
|
21
|
-
%r{/thor}
|
5
|
+
%r{lib/padrino-.*$},
|
6
|
+
%r{/padrino-.*/(lib|bin)},
|
7
|
+
%r{/bin/padrino$},
|
8
|
+
%r{/sinatra(/(base|main|showexceptions))?\.rb$},
|
9
|
+
%r{lib/tilt.*\.rb$},
|
10
|
+
%r{lib/rack.*\.rb$},
|
11
|
+
%r{lib/mongrel.*\.rb$},
|
12
|
+
%r{lib/shotgun.*\.rb$},
|
13
|
+
%r{bin/shotgun$},
|
14
|
+
%r{\(.*\)},
|
15
|
+
%r{shoulda/context\.rb$},
|
16
|
+
%r{mocha/integration},
|
17
|
+
%r{test/unit},
|
18
|
+
%r{rake_test_loader\.rb},
|
19
|
+
%r{custom_require\.rb$},
|
20
|
+
%r{active_support},
|
21
|
+
%r{/thor}
|
22
22
|
] unless defined?(PADRINO_IGNORE_CALLERS)
|
23
23
|
|
24
24
|
##
|
@@ -27,27 +27,27 @@ module Padrino
|
|
27
27
|
PADRINO_IGNORE_CALLERS.concat(RUBY_IGNORE_CALLERS) if defined?(RUBY_IGNORE_CALLERS)
|
28
28
|
|
29
29
|
private
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
30
|
+
##
|
31
|
+
# The filename for the file that is the direct caller (first caller).
|
32
|
+
#
|
33
|
+
# @return [String]
|
34
|
+
# The file the caller method exists in.
|
35
|
+
#
|
36
|
+
def self.first_caller
|
37
|
+
caller_files.first
|
38
|
+
end
|
39
39
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
end
|
40
|
+
#
|
41
|
+
# Like +Kernel#caller+ but excluding certain magic entries and without
|
42
|
+
# line / method information; the resulting array contains filenames only.
|
43
|
+
#
|
44
|
+
# @return [Array<String>]
|
45
|
+
# The files of the calling methods.
|
46
|
+
#
|
47
|
+
def self.caller_files
|
48
|
+
caller(1).
|
49
|
+
map { |line| line.split(/:(?=\d|in )/)[0,2] }.
|
50
|
+
reject { |file,line| PADRINO_IGNORE_CALLERS.any? { |pattern| file =~ pattern } }.
|
51
|
+
map { |file,line| file }
|
52
|
+
end
|
53
|
+
end
|
@@ -71,7 +71,6 @@ module Padrino
|
|
71
71
|
desc "generate", "Executes the Padrino generator with given options (alternatively use 'gen' or 'g')."
|
72
72
|
map ["gen", "g"] => :generate
|
73
73
|
def generate(*args)
|
74
|
-
# Build Padrino g as an alias of padrino-gen
|
75
74
|
begin
|
76
75
|
# We try to load the vendored padrino-gen if exist
|
77
76
|
padrino_gen_path = File.expand_path('../../../../../padrino-gen/lib', __FILE__)
|
@@ -111,48 +110,50 @@ module Padrino
|
|
111
110
|
end
|
112
111
|
|
113
112
|
private
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
113
|
+
|
114
|
+
def prepare(task)
|
115
|
+
if options.help?
|
116
|
+
help(task.to_s)
|
117
|
+
raise SystemExit
|
118
|
+
end
|
119
|
+
ENV["PADRINO_ENV"] ||= ENV["RACK_ENV"] ||= options.environment.to_s
|
120
|
+
chdir(options.chdir)
|
121
|
+
unless File.exist?('config/boot.rb')
|
122
|
+
puts "=> Could not find boot file in: #{options.chdir}/config/boot.rb !!!"
|
123
|
+
raise SystemExit
|
125
124
|
end
|
125
|
+
end
|
126
126
|
|
127
127
|
protected
|
128
|
-
def self.banner(task=nil, *args)
|
129
|
-
"padrino #{task.name}"
|
130
|
-
end
|
131
128
|
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
129
|
+
def self.banner(task=nil, *args)
|
130
|
+
"padrino #{task.name}"
|
131
|
+
end
|
132
|
+
|
133
|
+
def chdir(dir)
|
134
|
+
return unless dir
|
135
|
+
begin
|
136
|
+
Dir.chdir(dir.to_s)
|
137
|
+
rescue Errno::ENOENT
|
138
|
+
puts "=> Specified Padrino root '#{dir}' does not appear to exist!"
|
139
|
+
rescue Errno::EACCES
|
140
|
+
puts "=> Specified Padrino root '#{dir}' cannot be accessed by the current user!"
|
141
141
|
end
|
142
|
+
end
|
142
143
|
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
end
|
152
|
-
|
153
|
-
result
|
144
|
+
def capture(stream)
|
145
|
+
begin
|
146
|
+
stream = stream.to_s
|
147
|
+
eval "$#{stream} = StringIO.new"
|
148
|
+
yield
|
149
|
+
result = eval("$#{stream}").string
|
150
|
+
ensure
|
151
|
+
eval("$#{stream} = #{stream.upcase}")
|
154
152
|
end
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
153
|
+
|
154
|
+
result
|
155
|
+
end
|
156
|
+
alias :silence :capture
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
@@ -7,9 +7,9 @@ require 'padrino-gen'
|
|
7
7
|
|
8
8
|
module PadrinoTasks
|
9
9
|
def self.init(init=false)
|
10
|
-
$LOAD_PATH.unshift(File.expand_path("lib"))
|
10
|
+
$LOAD_PATH.unshift(File.expand_path("lib"))
|
11
11
|
Padrino::Tasks.files.flatten.uniq.each { |rakefile| Rake.application.add_import(rakefile) rescue puts "<= Failed load #{ext}" }
|
12
|
-
load(File.expand_path('../rake_tasks.rb', __FILE__))
|
12
|
+
load(File.expand_path('../rake_tasks.rb', __FILE__))
|
13
13
|
Rake.application.load_imports
|
14
14
|
end
|
15
15
|
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# Load rake tasks from common rake task definition locations
|
2
1
|
Dir["{lib/tasks/**,tasks/**,test,spec}/*.rake"].each do |file|
|
3
2
|
begin
|
4
3
|
load(file)
|
@@ -7,8 +6,8 @@ Dir["{lib/tasks/**,tasks/**,test,spec}/*.rake"].each do |file|
|
|
7
6
|
end
|
8
7
|
end
|
9
8
|
|
10
|
-
# Loads the Padrino applications mounted within the project
|
11
|
-
#
|
9
|
+
# Loads the Padrino applications mounted within the project.
|
10
|
+
# Setting up the required environment for Padrino.
|
12
11
|
task :environment do
|
13
12
|
require File.expand_path('config/boot.rb', Rake.application.original_dir)
|
14
13
|
|
@@ -22,7 +21,6 @@ task :secret do
|
|
22
21
|
shell.say SecureRandom.hex(32)
|
23
22
|
end
|
24
23
|
|
25
|
-
# lists all routes of a given app
|
26
24
|
def list_app_routes(app, args)
|
27
25
|
app_routes = app.named_routes
|
28
26
|
app_routes.reject! { |r| r.identifier.to_s !~ /#{args.query}/ } if args.query.present?
|
data/lib/padrino-core/command.rb
CHANGED
@@ -3,7 +3,7 @@ require 'rbconfig'
|
|
3
3
|
module Padrino
|
4
4
|
##
|
5
5
|
# This method return the correct location of padrino bin or
|
6
|
-
# exec it using Kernel#system with the given args
|
6
|
+
# exec it using Kernel#system with the given args.
|
7
7
|
#
|
8
8
|
# @param [Array] args
|
9
9
|
# command or commands to execute
|
@@ -35,4 +35,4 @@ module Padrino
|
|
35
35
|
ruby
|
36
36
|
end
|
37
37
|
end
|
38
|
-
end
|
38
|
+
end
|
data/lib/padrino-core/loader.rb
CHANGED
@@ -64,7 +64,7 @@ module Padrino
|
|
64
64
|
|
65
65
|
@_called_from = first_caller
|
66
66
|
Padrino.set_encoding
|
67
|
-
Padrino.set_load_paths(*load_paths)
|
67
|
+
Padrino.set_load_paths(*load_paths)
|
68
68
|
Padrino::Logger.setup! # Initialize our logger
|
69
69
|
Padrino.require_dependencies("#{root}/config/database.rb", :nodeps => true) # Be sure to don't remove constants from dbs.
|
70
70
|
Padrino::Reloader.lock! # Now we can remove constant from here to down
|
@@ -105,7 +105,7 @@ module Padrino
|
|
105
105
|
end
|
106
106
|
|
107
107
|
##
|
108
|
-
# This adds the
|
108
|
+
# This adds the ability to instantiate {Padrino.load!} after
|
109
109
|
# {Padrino::Application} definition.
|
110
110
|
#
|
111
111
|
def called_from
|
@@ -135,7 +135,7 @@ module Padrino
|
|
135
135
|
#
|
136
136
|
# Dir["/models/*.rb"].each { |r| require r }
|
137
137
|
#
|
138
|
-
#
|
138
|
+
# We get an error, because we try to require first +a.rb+ that need
|
139
139
|
# _something_ of +b.rb+.
|
140
140
|
#
|
141
141
|
# With this method we don't have this problem.
|
@@ -153,21 +153,19 @@ module Padrino
|
|
153
153
|
files = paths.flatten.map { |path| Dir[path] }.flatten.uniq.sort
|
154
154
|
|
155
155
|
while files.present?
|
156
|
-
# List of errors and failed files
|
157
156
|
errors, failed = [], []
|
158
157
|
|
159
|
-
# We need a size to make sure things are loading
|
160
158
|
size_at_start = files.size
|
161
159
|
|
162
160
|
# Now we try to require our dependencies, we dup files
|
163
161
|
# so we don't perform delete on the original array during
|
164
|
-
# iteration, this prevent problems with
|
162
|
+
# iteration, this prevent problems with Rubinus
|
165
163
|
files.dup.each do |file|
|
166
164
|
begin
|
167
165
|
Padrino::Reloader.safe_load(file, options.dup)
|
168
166
|
files.delete(file)
|
169
167
|
rescue NameError, LoadError => e
|
170
|
-
Padrino.logger.devel "Problem while loading #{file}: #{e
|
168
|
+
Padrino.logger.devel "Problem while loading #{file}: #{e}"
|
171
169
|
errors << e
|
172
170
|
failed << file
|
173
171
|
rescue Exception => e
|
@@ -182,7 +180,7 @@ module Padrino
|
|
182
180
|
end
|
183
181
|
|
184
182
|
##
|
185
|
-
# Returns default list of path globs to load as dependencies
|
183
|
+
# Returns default list of path globs to load as dependencies.
|
186
184
|
# Appends custom dependency patterns to the be loaded for Padrino.
|
187
185
|
#
|
188
186
|
# @return [Array<String>]
|
@@ -206,20 +204,21 @@ module Padrino
|
|
206
204
|
$:.uniq!; load_paths.uniq!
|
207
205
|
end
|
208
206
|
|
209
|
-
private
|
207
|
+
private
|
208
|
+
|
210
209
|
def module_paths
|
211
210
|
Padrino.modules.map(&:dependency_paths).flatten!
|
212
211
|
end
|
213
212
|
|
214
213
|
def dependency_paths_was
|
215
214
|
[
|
216
|
-
"#{root}/config/database.rb",
|
217
|
-
"#{root}/lib/**/*.rb",
|
215
|
+
"#{root}/config/database.rb",
|
216
|
+
"#{root}/lib/**/*.rb",
|
218
217
|
"#{root}/shared/lib/**/*.rb",
|
219
|
-
"#{root}/models/**/*.rb",
|
220
|
-
"#{root}/shared/models/**/*.rb",
|
218
|
+
"#{root}/models/**/*.rb",
|
219
|
+
"#{root}/shared/models/**/*.rb",
|
221
220
|
"#{root}/config/apps.rb"
|
222
221
|
]
|
223
222
|
end
|
224
|
-
end
|
225
|
-
end
|
223
|
+
end
|
224
|
+
end
|
@@ -13,7 +13,7 @@ es:
|
|
13
13
|
abbr_day_names: [Dom, Lun, Mar, Mie, Jue, Vie, Sab]
|
14
14
|
month_names: [~, Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre]
|
15
15
|
abbr_month_names: [~, Ene, Feb, Mar, Abr, May, Jun, Jul, Ago, Sep, Oct, Nov, Dic]
|
16
|
-
order:
|
16
|
+
order:
|
17
17
|
- day
|
18
18
|
- month
|
19
19
|
- year
|
@@ -26,7 +26,6 @@ es:
|
|
26
26
|
am: "am"
|
27
27
|
pm: "pm"
|
28
28
|
|
29
|
-
# Used in array.to_sentence.
|
30
29
|
support:
|
31
30
|
array:
|
32
31
|
words_connector: ", "
|
@@ -10,10 +10,10 @@ fr:
|
|
10
10
|
only_day: "%e"
|
11
11
|
|
12
12
|
day_names: [Dimanche, Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi]
|
13
|
-
abbr_day_names: [Lun, Mar, Mer, Jeu, Ven, Sam
|
13
|
+
abbr_day_names: [Dim, Lun, Mar, Mer, Jeu, Ven, Sam]
|
14
14
|
month_names: [~, Janvier, Février, Mars, Avril, Mai, Juin, Juillet, Août, Septembre, Octobre, Novembre, Décembre]
|
15
15
|
abbr_month_names: [~, Jan, Fev, Mar, Avr, Mai, Jun, Jul, Aou, Sep, Oct, Nov, Dec]
|
16
|
-
order:
|
16
|
+
order:
|
17
17
|
- day
|
18
18
|
- month
|
19
19
|
- year
|
@@ -26,7 +26,6 @@ fr:
|
|
26
26
|
am: "am"
|
27
27
|
pm: "pm"
|
28
28
|
|
29
|
-
# Used in array.to_sentence.
|
30
29
|
support:
|
31
30
|
array:
|
32
31
|
words_connector: ", "
|
@@ -13,7 +13,7 @@ hu:
|
|
13
13
|
abbr_day_names: [vas, hét, kedd, sze, csüt, pén, szo]
|
14
14
|
month_names: [~, január, február, március, április, május, június, július, augusztus, szeptember, oktober, november, december]
|
15
15
|
abbr_month_names: [~, jan, febr, márc, ápr, máj, jún, júl, aug, szept, okt, nov, dec]
|
16
|
-
order:
|
16
|
+
order:
|
17
17
|
- year
|
18
18
|
- month
|
19
19
|
- day
|
@@ -26,7 +26,6 @@ hu:
|
|
26
26
|
am: "de"
|
27
27
|
pm: "du"
|
28
28
|
|
29
|
-
# Used in array.to_sentence.
|
30
29
|
support:
|
31
30
|
array:
|
32
31
|
words_connector: ", "
|