padrino-core 0.11.3 → 0.11.4
Sign up to get free protection for your applications and to get access to all the features.
- 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: ", "
|