padrino-core 0.10.0 → 0.10.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/padrino-core/application/routing.rb +17 -21
- data/lib/padrino-core/application/showexceptions.rb +12 -11
- data/lib/padrino-core/application.rb +1 -1
- data/lib/padrino-core/command.rb +2 -2
- data/lib/padrino-core/locale/{cz.yml → cs.yml} +2 -1
- data/lib/padrino-core/locale/da.yml +2 -1
- data/lib/padrino-core/locale/de.yml +2 -1
- data/lib/padrino-core/locale/en.yml +2 -1
- data/lib/padrino-core/locale/es.yml +2 -1
- data/lib/padrino-core/locale/fr.yml +2 -1
- data/lib/padrino-core/locale/hu.yml +2 -1
- data/lib/padrino-core/locale/ja.yml +1 -0
- data/lib/padrino-core/locale/nl.yml +2 -1
- data/lib/padrino-core/locale/no.yml +1 -0
- data/lib/padrino-core/locale/pl.yml +1 -0
- data/lib/padrino-core/locale/pt_br.yml +1 -1
- data/lib/padrino-core/locale/ru.yml +5 -3
- data/lib/padrino-core/locale/tr.yml +1 -0
- data/lib/padrino-core/locale/uk.yml +1 -0
- data/lib/padrino-core/locale/zh_cn.yml +1 -0
- data/lib/padrino-core/locale/zh_tw.yml +1 -0
- data/lib/padrino-core/logger.rb +16 -3
- data/lib/padrino-core/support_lite.rb +12 -0
- data/lib/padrino-core/version.rb +1 -1
- data/padrino-core.gemspec +1 -1
- data/test/test_filters.rb +11 -0
- data/test/test_locale.rb +21 -0
- data/test/test_restful_routing.rb +33 -0
- data/test/test_routing.rb +33 -2
- metadata +8 -4
@@ -2,12 +2,7 @@ require 'http_router' unless defined?(HttpRouter)
|
|
2
2
|
require 'padrino-core/support_lite' unless defined?(SupportLite)
|
3
3
|
|
4
4
|
class Sinatra::Request #:nodoc:
|
5
|
-
attr_accessor :route_obj
|
6
|
-
|
7
|
-
def runner=(runner)
|
8
|
-
@runner = runner
|
9
|
-
env['padrino.instance'] = runner
|
10
|
-
end
|
5
|
+
attr_accessor :route_obj
|
11
6
|
|
12
7
|
def controller
|
13
8
|
route_obj && route_obj.controller
|
@@ -19,7 +14,7 @@ class HttpRouter #:nodoc:
|
|
19
14
|
def rewrite_path_info(env, request); end
|
20
15
|
|
21
16
|
def process_destination_path(path, env)
|
22
|
-
|
17
|
+
Thread.current['padrino.instance'].instance_eval do
|
23
18
|
request.route_obj = path.route
|
24
19
|
@_response_buffer = nil
|
25
20
|
@params ||= {}
|
@@ -95,10 +90,9 @@ module Padrino
|
|
95
90
|
end
|
96
91
|
|
97
92
|
def apply?(request)
|
98
|
-
return true if @args.empty? && @options.empty?
|
99
93
|
detect = @args.any? do |arg|
|
100
94
|
case arg
|
101
|
-
when Symbol then request.route_obj.named == arg or request.route_obj.named == [@scoped_controller, arg].flatten.join("_").to_sym
|
95
|
+
when Symbol then request.route_obj && (request.route_obj.named == arg or request.route_obj.named == [@scoped_controller, arg].flatten.join("_").to_sym)
|
102
96
|
else arg === request.path_info
|
103
97
|
end
|
104
98
|
end || @options.any? { |name, val|
|
@@ -111,10 +105,12 @@ module Padrino
|
|
111
105
|
end
|
112
106
|
|
113
107
|
def to_proc
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
108
|
+
if @args.empty? && @options.empty?
|
109
|
+
block
|
110
|
+
else
|
111
|
+
filter = self
|
112
|
+
proc { instance_eval(&filter.block) if filter.apply?(request) }
|
113
|
+
end
|
118
114
|
end
|
119
115
|
end
|
120
116
|
|
@@ -618,7 +614,7 @@ module Padrino
|
|
618
614
|
def process_path_for_parent_params(path, parent_params)
|
619
615
|
parent_prefix = parent_params.flatten.compact.uniq.map do |param|
|
620
616
|
map = (param.respond_to?(:map) && param.map ? param.map : param.to_s)
|
621
|
-
part = "#{map}/:#{param}_id/"
|
617
|
+
part = "#{map}/:#{param.to_s.singularize}_id/"
|
622
618
|
part = "(#{part})" if param.respond_to?(:optional) && param.optional?
|
623
619
|
part
|
624
620
|
end
|
@@ -665,7 +661,7 @@ module Padrino
|
|
665
661
|
condition do
|
666
662
|
mime_types = types.map { |t| mime_type(t) }
|
667
663
|
request.path_info =~ /\.([^\.\/]+)$/
|
668
|
-
url_format =
|
664
|
+
url_format = params[:format].to_sym if params[:format]
|
669
665
|
accepts = request.accept.map { |a| a.split(";")[0].strip }
|
670
666
|
|
671
667
|
# per rfc2616-sec14:
|
@@ -673,9 +669,7 @@ module Padrino
|
|
673
669
|
catch_all = (accepts.delete "*/*" || accepts.empty?)
|
674
670
|
matching_types = accepts.empty? ? mime_types.slice(0,1) : (accepts & mime_types)
|
675
671
|
|
676
|
-
if
|
677
|
-
accept_format = params[:format]
|
678
|
-
elsif !url_format && matching_types.first
|
672
|
+
if !url_format && matching_types.first
|
679
673
|
type = ::Rack::Mime::MIME_TYPES.find { |k, v| v == matching_types.first }[0].sub(/\./,'').to_sym
|
680
674
|
accept_format = CONTENT_TYPE_ALIASES[type] || type
|
681
675
|
elsif catch_all
|
@@ -784,16 +778,18 @@ module Padrino
|
|
784
778
|
static! if settings.static? && (request.get? || request.head?)
|
785
779
|
route!
|
786
780
|
rescue Sinatra::NotFound => boom
|
781
|
+
filter! :before
|
787
782
|
handle_not_found!(boom)
|
788
783
|
rescue ::Exception => boom
|
784
|
+
filter! :before
|
789
785
|
handle_exception!(boom)
|
790
786
|
ensure
|
791
787
|
@_pending_after_filters.each { |filter| instance_eval(&filter)} if @_pending_after_filters
|
792
788
|
end
|
793
789
|
|
794
790
|
def route!(base=self.class, pass_block=nil)
|
795
|
-
|
796
|
-
if base.compiled_router and match = base.
|
791
|
+
Thread.current['padrino.instance'] = self
|
792
|
+
if base.compiled_router and match = base.compiled_router.call(@request.env)
|
797
793
|
if match.respond_to?(:each)
|
798
794
|
route_eval do
|
799
795
|
match[1].each {|k,v| response[k] = v}
|
@@ -818,4 +814,4 @@ module Padrino
|
|
818
814
|
end
|
819
815
|
end # InstanceMethods
|
820
816
|
end # Routing
|
821
|
-
end # Padrino
|
817
|
+
end # Padrino
|
@@ -3,16 +3,17 @@ module Padrino
|
|
3
3
|
# This module extend Sinatra::ShowExceptions adding Padrino as "Framework"
|
4
4
|
#
|
5
5
|
class ShowExceptions < Sinatra::ShowExceptions
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
6
|
+
private
|
7
|
+
def frame_class(frame)
|
8
|
+
if frame.filename =~ /lib\/sinatra.*\.rb|lib\/padrino.*\.rb/
|
9
|
+
"framework"
|
10
|
+
elsif (defined?(Gem) && frame.filename.include?(Gem.dir)) ||
|
11
|
+
frame.filename =~ /\/bin\/(\w+)$/ ||
|
12
|
+
frame.filename =~ /Ruby\/Gems/
|
13
|
+
"system"
|
14
|
+
else
|
15
|
+
"app"
|
16
|
+
end
|
15
17
|
end
|
16
|
-
end
|
17
18
|
end # ShowExceptions
|
18
|
-
end # Padrino
|
19
|
+
end # Padrino
|
@@ -186,7 +186,7 @@ module Padrino
|
|
186
186
|
#
|
187
187
|
def default_routes!
|
188
188
|
configure :development do
|
189
|
-
get '
|
189
|
+
get '*__sinatra__/:image.png' do
|
190
190
|
content_type :png
|
191
191
|
filename = File.dirname(__FILE__) + "/images/#{params[:image]}.png"
|
192
192
|
send_file filename
|
data/lib/padrino-core/command.rb
CHANGED
@@ -16,8 +16,8 @@ module Padrino
|
|
16
16
|
#
|
17
17
|
def self.ruby_command
|
18
18
|
@ruby_command ||= begin
|
19
|
-
ruby = File.join(
|
20
|
-
ruby <<
|
19
|
+
ruby = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'])
|
20
|
+
ruby << RbConfig::CONFIG['EXEEXT']
|
21
21
|
|
22
22
|
# escape string in case path to ruby executable contain spaces.
|
23
23
|
ruby.sub!(/.*\s.*/m, '"\&"')
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
cs:
|
2
2
|
date:
|
3
3
|
formats:
|
4
4
|
# Use the strftime parameters for formats.
|
@@ -7,6 +7,7 @@ cz:
|
|
7
7
|
default: "%d. %m. %Y"
|
8
8
|
short: "%d %b"
|
9
9
|
long: "%d. %B %Y"
|
10
|
+
only_day: "%e"
|
10
11
|
|
11
12
|
day_names: [Neděle, Pondělí, Úterý, Středa, Čtvrtek, Pátek, Sobota]
|
12
13
|
abbr_day_names: [Ne, Po, Út, St, Čt, Pá, So]
|
@@ -7,6 +7,7 @@ da:
|
|
7
7
|
default: "%d.%m.%Y"
|
8
8
|
short: "%e. %b %Y"
|
9
9
|
long: "%e. %B %Y"
|
10
|
+
only_day: "%e"
|
10
11
|
|
11
12
|
day_names: [søndag, mandag, tirsdag, onsdag, torsdag, fredag, lørdag]
|
12
13
|
abbr_day_names: [sø, ma, ti, 'on', to, fr, lø]
|
@@ -27,4 +28,4 @@ da:
|
|
27
28
|
array:
|
28
29
|
words_connector: ", "
|
29
30
|
two_words_connector: " og "
|
30
|
-
last_word_connector: " og "
|
31
|
+
last_word_connector: " og "
|
@@ -7,6 +7,7 @@ de:
|
|
7
7
|
default: "&d.&m.%Y"
|
8
8
|
short: "%b %d"
|
9
9
|
long: "%B %d, %Y"
|
10
|
+
only_day: "%e"
|
10
11
|
|
11
12
|
day_names: [Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag]
|
12
13
|
abbr_day_names: [So, Mo, Di, Mi, Do, Fr, Sa]
|
@@ -27,4 +28,4 @@ de:
|
|
27
28
|
array:
|
28
29
|
words_connector: ", "
|
29
30
|
two_words_connector: " und "
|
30
|
-
last_word_connector: ", und "
|
31
|
+
last_word_connector: ", und "
|
@@ -7,6 +7,7 @@ en:
|
|
7
7
|
default: "%Y-%m-%d"
|
8
8
|
short: "%b %d"
|
9
9
|
long: "%B %d, %Y"
|
10
|
+
only_day: "%e"
|
10
11
|
|
11
12
|
day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
|
12
13
|
abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
|
@@ -27,4 +28,4 @@ en:
|
|
27
28
|
array:
|
28
29
|
words_connector: ", "
|
29
30
|
two_words_connector: " and "
|
30
|
-
last_word_connector: ", and "
|
31
|
+
last_word_connector: ", and "
|
@@ -7,6 +7,7 @@ es:
|
|
7
7
|
default: "%d-%m-%Y"
|
8
8
|
short: "%b %d"
|
9
9
|
long: "%B %d, %Y"
|
10
|
+
only_day: "%e"
|
10
11
|
|
11
12
|
day_names: [Domingo, Lunes, Martes, Miércoles, Jueves, Viernes, Sábado]
|
12
13
|
abbr_day_names: [Dom, Lun, Mar, Mie, Jue, Vie, Sab]
|
@@ -27,4 +28,4 @@ es:
|
|
27
28
|
array:
|
28
29
|
words_connector: ", "
|
29
30
|
two_words_connector: " y "
|
30
|
-
last_word_connector: ", y "
|
31
|
+
last_word_connector: ", y "
|
@@ -7,6 +7,7 @@ fr:
|
|
7
7
|
default: "%d-%m-%Y"
|
8
8
|
short: "%b %d"
|
9
9
|
long: "%B %d, %Y"
|
10
|
+
only_day: "%e"
|
10
11
|
|
11
12
|
day_names: [Dimanche, Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi]
|
12
13
|
abbr_day_names: [Lun, Mar, Mer, Jeu, Ven, Sam, Dim]
|
@@ -27,4 +28,4 @@ fr:
|
|
27
28
|
array:
|
28
29
|
words_connector: ", "
|
29
30
|
two_words_connector: " et "
|
30
|
-
last_word_connector: ", et "
|
31
|
+
last_word_connector: ", et "
|
@@ -7,6 +7,7 @@ hu:
|
|
7
7
|
default: "%Y-%m-%d"
|
8
8
|
short: "%b. %d."
|
9
9
|
long: "%Y. %B %d."
|
10
|
+
only_day: "%e"
|
10
11
|
|
11
12
|
day_names: [vasárnap, hétfő, kedd, szerda, csütörtök, péntek, szombat]
|
12
13
|
abbr_day_names: [vas, hét, kedd, sze, csüt, pén, szo]
|
@@ -27,4 +28,4 @@ hu:
|
|
27
28
|
array:
|
28
29
|
words_connector: ", "
|
29
30
|
two_words_connector: " és "
|
30
|
-
last_word_connector: " és "
|
31
|
+
last_word_connector: " és "
|
@@ -7,6 +7,7 @@ nl:
|
|
7
7
|
default: "%d-%m-%Y"
|
8
8
|
short: "%d %b"
|
9
9
|
long: "%d %B %Y"
|
10
|
+
only_day: "%e"
|
10
11
|
|
11
12
|
day_names: [zondag, maandag, dinsdag, woensdag, donderdag, vrijdag, zaterdag]
|
12
13
|
abbr_day_names: [zo, ma, di, wo, do, vr, za]
|
@@ -27,4 +28,4 @@ nl:
|
|
27
28
|
array:
|
28
29
|
words_connector: ", "
|
29
30
|
two_words_connector: " en "
|
30
|
-
last_word_connector: " en "
|
31
|
+
last_word_connector: " en "
|
@@ -7,11 +7,12 @@ ru:
|
|
7
7
|
default: "%d.%m.%Y"
|
8
8
|
short: "%d %b"
|
9
9
|
long: "%e %B, %Y"
|
10
|
+
only_day: "%e"
|
10
11
|
|
11
12
|
day_names: [Воскресенье, Понедельник, Вторник, Среда, Четверг, Пятница, Суббота]
|
12
13
|
abbr_day_names: [Вс, Пн, Вт, Ср, Чт, Пт, Сб]
|
13
14
|
month_names: [~, Январь, Февраль, Март, Апрель, Май, Июнь, Июль, Август, Сентябрь, Октябрь, Ноябрь, Декабрь]
|
14
|
-
abbr_month_names: [~, Янв, Феб, Мар, Апр, Май, Июн, Июл, Авг, Сен, Окт,
|
15
|
+
abbr_month_names: [~, Янв, Феб, Мар, Апр, Май, Июн, Июл, Авг, Сен, Окт, Ноя, Дек]
|
15
16
|
order: [ :year, :month, :day ]
|
16
17
|
|
17
18
|
time:
|
@@ -20,11 +21,12 @@ ru:
|
|
20
21
|
short: "%d %b %H:%M"
|
21
22
|
long: "%e %B, %Y %H:%M"
|
22
23
|
am: "д.п."
|
23
|
-
pm: "
|
24
|
+
pm: "п.п."
|
24
25
|
|
25
26
|
# Used in array.to_sentence.
|
26
27
|
support:
|
27
28
|
array:
|
28
29
|
words_connector: ", "
|
29
30
|
two_words_connector: " и "
|
30
|
-
last_word_connector: "
|
31
|
+
last_word_connector: " и "
|
32
|
+
|
data/lib/padrino-core/logger.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
# Defines our
|
1
|
+
# Defines our PADRINO_LOGGER constants
|
2
2
|
PADRINO_LOG_LEVEL = ENV['PADRINO_LOG_LEVEL'] unless defined?(PADRINO_LOG_LEVEL)
|
3
|
+
PADRINO_LOGGER = ENV['PADRINO_LOGGER'] unless defined?(PADRINO_LOGGER)
|
3
4
|
|
4
5
|
module Padrino
|
5
6
|
|
@@ -66,7 +67,7 @@ module Padrino
|
|
66
67
|
# :log_level:: Once of [:fatal, :error, :warn, :info, :debug]
|
67
68
|
# :stream:: Once of [:to_file, :null, :stdout, :stderr] our your custom stream
|
68
69
|
# :log_level::
|
69
|
-
# The log level from, e.g. :fatal or :info. Defaults to :
|
70
|
+
# The log level from, e.g. :fatal or :info. Defaults to :warn in the
|
70
71
|
# production environment and :debug otherwise.
|
71
72
|
# :auto_flush::
|
72
73
|
# Whether the log should automatically flush after new messages are
|
@@ -89,11 +90,17 @@ module Padrino
|
|
89
90
|
# :development => { :log_level => :debug, :stream => :stdout }
|
90
91
|
# :test => { :log_level => :fatal, :stream => :null }
|
91
92
|
#
|
93
|
+
# In some cases, configuring the loggers before loading the framework is necessary.
|
94
|
+
# You can do so by setting PADRINO_LOGGER:
|
95
|
+
#
|
96
|
+
# PADRINO_LOGGER = { :staging => { :log_level => :debug, :stream => :to_file }}
|
97
|
+
#
|
92
98
|
Config = {
|
93
99
|
:production => { :log_level => :warn, :stream => :to_file },
|
94
100
|
:development => { :log_level => :debug, :stream => :stdout },
|
95
101
|
:test => { :log_level => :debug, :stream => :null }
|
96
102
|
}
|
103
|
+
Config.merge!(PADRINO_LOGGER) if PADRINO_LOGGER
|
97
104
|
|
98
105
|
# Embed in a String to clear all previous ANSI sequences.
|
99
106
|
CLEAR = "\e[0m"
|
@@ -132,6 +139,12 @@ module Padrino
|
|
132
139
|
def self.setup!
|
133
140
|
config_level = (PADRINO_LOG_LEVEL || Padrino.env || :test).to_sym # need this for PADRINO_LOG_LEVEL
|
134
141
|
config = Config[config_level]
|
142
|
+
|
143
|
+
unless config
|
144
|
+
warn("No logging configuration for :#{config_level} found, falling back to :production")
|
145
|
+
config = Config[:production]
|
146
|
+
end
|
147
|
+
|
135
148
|
stream = case config[:stream]
|
136
149
|
when :to_file
|
137
150
|
FileUtils.mkdir_p(Padrino.root("log")) unless File.exists?(Padrino.root("log"))
|
@@ -341,4 +354,4 @@ module Kernel #:nodoc:
|
|
341
354
|
def logger
|
342
355
|
Padrino.logger
|
343
356
|
end
|
344
|
-
end # Kernel
|
357
|
+
end # Kernel
|
@@ -32,6 +32,18 @@ class String
|
|
32
32
|
ActiveSupport::Inflector.pluralize(self)
|
33
33
|
end
|
34
34
|
|
35
|
+
# Returns the singular form of the word in the string.
|
36
|
+
#
|
37
|
+
# "posts".singularize # => "post"
|
38
|
+
# "octopi".singularize # => "octopus"
|
39
|
+
# "sheep".singularize # => "sheep"
|
40
|
+
# "words".singularize # => "word"
|
41
|
+
# "the blue mailmen".singularize # => "the blue mailman"
|
42
|
+
# "CamelOctopi".singularize # => "CamelOctopus"
|
43
|
+
def singularize
|
44
|
+
ActiveSupport::Inflector.singularize(self)
|
45
|
+
end
|
46
|
+
|
35
47
|
# +constantize+ tries to find a declared constant with the name specified
|
36
48
|
# in the string. It raises a NameError when the name is not in CamelCase
|
37
49
|
# or is not initialized.
|
data/lib/padrino-core/version.rb
CHANGED
data/padrino-core.gemspec
CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
|
|
32
32
|
|
33
33
|
s.add_dependency("tilt", "~> 1.3.0")
|
34
34
|
s.add_dependency("sinatra", "~> 1.2.6")
|
35
|
-
s.add_dependency("http_router", "~> 0.
|
35
|
+
s.add_dependency("http_router", "~> 0.9.4")
|
36
36
|
s.add_dependency("thor", "~> 0.14.3")
|
37
37
|
s.add_dependency("activesupport", "~> 3.0.0")
|
38
38
|
end
|
data/test/test_filters.rb
CHANGED
@@ -263,4 +263,15 @@ class TestFilters < Test::Unit::TestCase
|
|
263
263
|
get '/bar/main'
|
264
264
|
assert_equal 'also before', body
|
265
265
|
end
|
266
|
+
|
267
|
+
should "call before filters even if there was no match" do
|
268
|
+
test = nil
|
269
|
+
mock_app do
|
270
|
+
before(:index, '/foo') { test = 'before' }
|
271
|
+
get :index do
|
272
|
+
end
|
273
|
+
end
|
274
|
+
get '/foo'
|
275
|
+
assert_equal 'before', test
|
276
|
+
end
|
266
277
|
end
|
data/test/test_locale.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/helper')
|
2
|
+
|
3
|
+
class TestLocales < Test::Unit::TestCase
|
4
|
+
Dir[File.expand_path("../../lib/padrino-core/locale/*.yml", __FILE__)].each do |file|
|
5
|
+
base_original = YAML.load_file(file)
|
6
|
+
name = File.basename(file, '.yml')
|
7
|
+
should "should have correct locale for #{name}" do
|
8
|
+
base = base_original[name]['date']['formats']
|
9
|
+
assert base['default'].present?
|
10
|
+
assert base['short'].present?
|
11
|
+
assert base['long'].present?
|
12
|
+
assert base['only_day'].present?
|
13
|
+
base = base_original[name]['date']
|
14
|
+
assert base['day_names'].present?
|
15
|
+
assert base['abbr_day_names'].present?
|
16
|
+
assert base['month_names'].present?
|
17
|
+
assert base['abbr_month_names'].present?
|
18
|
+
assert base['order'].present?
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/helper')
|
2
|
+
|
3
|
+
class TestRouting < Test::Unit::TestCase
|
4
|
+
should 'perform restul routing' do
|
5
|
+
mock_app do
|
6
|
+
controller :parent => :parents do
|
7
|
+
get :index do
|
8
|
+
"#{url_for(:index, params[:parent_id])} get"
|
9
|
+
end
|
10
|
+
|
11
|
+
put :index, :with => :asset_id do
|
12
|
+
"#{url_for(:index, params[:parent_id], :asset_id => params[:asset_id])} put"
|
13
|
+
end
|
14
|
+
|
15
|
+
post :index, :with => :asset_id do
|
16
|
+
"#{url_for(:index, :parent_id => params[:parent_id], :asset_id => params[:asset_id])} post"
|
17
|
+
end
|
18
|
+
|
19
|
+
delete :index, :with => :asset_id do
|
20
|
+
"#{url_for(:index, params[:parent_id], :asset_id => params[:asset_id])} delete"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
get "/parents/1"
|
25
|
+
assert_equal "/parents/1 get", body
|
26
|
+
put "/parents/1/hi"
|
27
|
+
assert_equal "/parents/1/hi put", body
|
28
|
+
post "/parents/1/hi"
|
29
|
+
assert_equal "/parents/1/hi post", body
|
30
|
+
delete "/parents/1/hi"
|
31
|
+
assert_equal "/parents/1/hi delete", body
|
32
|
+
end
|
33
|
+
end
|
data/test/test_routing.rb
CHANGED
@@ -348,17 +348,48 @@ class TestRouting < Test::Unit::TestCase
|
|
348
348
|
should "preserve the format if you set it manually" do
|
349
349
|
mock_app do
|
350
350
|
before do
|
351
|
-
params[:format] =
|
351
|
+
params[:format] = "json"
|
352
352
|
end
|
353
353
|
|
354
354
|
get "test", :provides => [:html, :json] do
|
355
|
-
|
355
|
+
content_type.inspect
|
356
356
|
end
|
357
357
|
end
|
358
358
|
get "/test"
|
359
359
|
assert_equal ":json", body
|
360
360
|
get "/test.html"
|
361
361
|
assert_equal ":json", body
|
362
|
+
get "/test.php"
|
363
|
+
assert_equal ":json", body
|
364
|
+
end
|
365
|
+
|
366
|
+
should "correctly accept '.' in the route" do
|
367
|
+
mock_app do
|
368
|
+
get "test.php", :provides => [:html, :json] do
|
369
|
+
content_type.inspect
|
370
|
+
end
|
371
|
+
end
|
372
|
+
get "/test.php"
|
373
|
+
assert_equal ":html", body
|
374
|
+
get "/test.php.json"
|
375
|
+
assert_equal ":json", body
|
376
|
+
end
|
377
|
+
|
378
|
+
should "correctly accept priority of format" do
|
379
|
+
mock_app do
|
380
|
+
get "test.php", :provides => [:html, :json, :xml] do
|
381
|
+
content_type.inspect
|
382
|
+
end
|
383
|
+
end
|
384
|
+
|
385
|
+
get "/test.php"
|
386
|
+
assert_equal ":html", body
|
387
|
+
get "/test.php", {}, { 'HTTP_ACCEPT' => 'application/xml' }
|
388
|
+
assert_equal ":xml", body
|
389
|
+
get "/test.php?format=json", { 'HTTP_ACCEPT' => 'application/xml' }
|
390
|
+
assert_equal ":json", body
|
391
|
+
get "/test.php.json?format=html", { 'HTTP_ACCEPT' => 'application/xml' }
|
392
|
+
assert_equal ":json", body
|
362
393
|
end
|
363
394
|
|
364
395
|
should "generate routes for format with controller" do
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: padrino-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.10.
|
5
|
+
version: 0.10.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Padrino Team
|
@@ -13,7 +13,7 @@ autorequire:
|
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
15
|
|
16
|
-
date: 2011-
|
16
|
+
date: 2011-08-01 00:00:00 -07:00
|
17
17
|
default_executable:
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
@@ -46,7 +46,7 @@ dependencies:
|
|
46
46
|
requirements:
|
47
47
|
- - ~>
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 0.
|
49
|
+
version: 0.9.4
|
50
50
|
type: :runtime
|
51
51
|
version_requirements: *id003
|
52
52
|
- !ruby/object:Gem::Dependency
|
@@ -101,7 +101,7 @@ files:
|
|
101
101
|
- lib/padrino-core/images/404.png
|
102
102
|
- lib/padrino-core/images/500.png
|
103
103
|
- lib/padrino-core/loader.rb
|
104
|
-
- lib/padrino-core/locale/
|
104
|
+
- lib/padrino-core/locale/cs.yml
|
105
105
|
- lib/padrino-core/locale/da.yml
|
106
106
|
- lib/padrino-core/locale/de.yml
|
107
107
|
- lib/padrino-core/locale/en.yml
|
@@ -144,11 +144,13 @@ files:
|
|
144
144
|
- test/test_core.rb
|
145
145
|
- test/test_dependencies.rb
|
146
146
|
- test/test_filters.rb
|
147
|
+
- test/test_locale.rb
|
147
148
|
- test/test_logger.rb
|
148
149
|
- test/test_mounter.rb
|
149
150
|
- test/test_reloader_complex.rb
|
150
151
|
- test/test_reloader_simple.rb
|
151
152
|
- test/test_rendering.rb
|
153
|
+
- test/test_restful_routing.rb
|
152
154
|
- test/test_router.rb
|
153
155
|
- test/test_routing.rb
|
154
156
|
has_rdoc: true
|
@@ -200,10 +202,12 @@ test_files:
|
|
200
202
|
- test/test_core.rb
|
201
203
|
- test/test_dependencies.rb
|
202
204
|
- test/test_filters.rb
|
205
|
+
- test/test_locale.rb
|
203
206
|
- test/test_logger.rb
|
204
207
|
- test/test_mounter.rb
|
205
208
|
- test/test_reloader_complex.rb
|
206
209
|
- test/test_reloader_simple.rb
|
207
210
|
- test/test_rendering.rb
|
211
|
+
- test/test_restful_routing.rb
|
208
212
|
- test/test_router.rb
|
209
213
|
- test/test_routing.rb
|