padrino-core 0.9.26 → 0.9.27

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.
@@ -51,6 +51,27 @@ module Padrino
51
51
  end
52
52
  end
53
53
 
54
+ ##
55
+ # Configure Global Project Settings for mounted apps. These can be overloaded
56
+ # in each individual app's own personal configuration. This can be used like:
57
+ #
58
+ # Padrino.configure_apps do
59
+ # enable :sessions
60
+ # disable :raise_errors
61
+ # end
62
+ #
63
+ def configure_apps(&block)
64
+ @_global_configuration = block if block_given?
65
+ end
66
+
67
+ ###
68
+ # Returns project-wide configuration settings
69
+ # defined in 'configure_apps' block
70
+ #
71
+ def apps_configuration
72
+ @_global_configuration
73
+ end
74
+
54
75
  ##
55
76
  # Default encoding to UTF8.
56
77
  #
@@ -29,7 +29,11 @@ module Padrino
29
29
  #
30
30
  def new(*args, &bk)
31
31
  setup_application!
32
+ logging, logging_was = false, logging
33
+ show_exceptions, show_exceptions_was = false, show_exceptions
32
34
  super(*args, &bk)
35
+ ensure
36
+ logging, show_exceptions = logging_was, show_exceptions_was
33
37
  end
34
38
 
35
39
  ##
@@ -127,25 +131,23 @@ module Padrino
127
131
  # Overwriting Sinatra defaults
128
132
  set :app_file, File.expand_path(caller_files.first || $0) # Assume app file is first caller
129
133
  set :environment, Padrino.env
130
- set :raise_errors, true if development?
131
- set :reload, true if development?
132
- set :logging, false
133
- set :padrino_logging, true
134
+ set :reload, Proc.new { development? }
135
+ set :logging, Proc.new { development? }
134
136
  set :method_override, true
135
137
  set :sessions, false
136
- set :session_path, '/'
137
138
  set :public, Proc.new { Padrino.root('public', uri_root) }
138
139
  set :views, Proc.new { File.join(root, "views") }
139
140
  set :images_path, Proc.new { File.join(public, "images") }
140
141
  # Padrino specific
141
142
  set :uri_root, "/"
142
- set :reload, Proc.new { development? }
143
143
  set :app_name, self.to_s.underscore.to_sym
144
144
  set :default_builder, 'StandardFormBuilder'
145
145
  set :flash, defined?(Rack::Flash)
146
146
  set :authentication, false
147
147
  # Padrino locale
148
148
  set :locale_path, Proc.new { Dir[File.join(self.root, "/locale/**/*.{rb,yml}")] }
149
+ # Load the Global Configurations
150
+ class_eval(&Padrino.apps_configuration) if Padrino.apps_configuration
149
151
  end
150
152
 
151
153
  ##
@@ -190,7 +192,8 @@ module Padrino
190
192
  # Requires the Padrino middleware
191
193
  #
192
194
  def register_initializers
193
- use Padrino::Logger::Rack, uri_root if Padrino.logger && (Padrino.logger.level == 0 && padrino_logging?)
195
+ use Padrino::ShowExceptions if show_exceptions?
196
+ use Padrino::Logger::Rack, uri_root if Padrino.logger && logging?
194
197
  use Padrino::Reloader::Rack if reload?
195
198
  use Rack::Flash if flash?
196
199
  end
@@ -209,26 +212,6 @@ module Padrino
209
212
  def require_load_paths
210
213
  load_paths.each { |path| Padrino.require_dependencies(File.join(self.root, path)) }
211
214
  end
212
-
213
- private
214
-
215
- def setup_sessions(builder)
216
- return unless sessions?
217
- options = {}
218
- options[:secret] = session_secret if session_secret?
219
- options[:path] = session_path if session_path?
220
- options.merge!(sessions.to_hash) if sessions.respond_to?(:to_hash)
221
- builder.use Rack::Session::Cookie, options
222
- end
223
215
  end # self
224
-
225
- private
226
- def clean_backtrace(trace)
227
- return trace unless settings.clean_trace?
228
- trace.reject { |line|
229
- line =~ /lib\/sinatra.*\.rb|lib\/padrino.*\.rb/ ||
230
- (defined?(Gem) && line.include?(Gem.dir))
231
- }.map! { |line| line.gsub(/^\.\//, '') }
232
- end
233
216
  end # Application
234
- end # Padrino
217
+ end # Padrino
@@ -110,7 +110,10 @@ module Padrino
110
110
  # If engine is a hash then render data converted to json
111
111
  return engine.to_json if engine.is_a?(Hash)
112
112
 
113
- # Data can actually be a hash of options in certain cases
113
+ # If engine is nil, ignore engine parameter
114
+ engine, data = data, options if engine.nil? && data
115
+
116
+ # Data can actually be a hash of options in certain render cases
114
117
  options.merge!(data) && data = nil if data.is_a?(Hash)
115
118
 
116
119
  # If an engine is a string then this is a likely a path to be resolved
@@ -1,7 +1,7 @@
1
1
  require 'http_router' unless defined?(HttpRouter)
2
2
  require 'padrino-core/support_lite' unless defined?(SupportLite)
3
3
 
4
- class Sinatra::Request
4
+ class Sinatra::Request #:nodoc:
5
5
  attr_accessor :route_obj
6
6
 
7
7
  def controller
@@ -233,8 +233,19 @@ module Padrino
233
233
  end
234
234
  alias :urls :router
235
235
 
236
+ def recognition_router
237
+ @recognition_router ||= HttpRouter.new
238
+ end
239
+
236
240
  def reset_router!
237
- @router = HttpRouter.new
241
+ router.reset!
242
+ recognition_router.reset!
243
+ end
244
+
245
+ def recognize_path(path)
246
+ if response = @recognition_router.recognize(Rack::MockRequest.env_for(path))
247
+ [response.path.route.named, response.params]
248
+ end
238
249
  end
239
250
 
240
251
  ##
@@ -277,11 +288,6 @@ module Padrino
277
288
  route('HEAD', path, *args, &block)
278
289
  end
279
290
 
280
- def put(path, *args, &bk); route 'PUT', path, *args, &bk end
281
- def post(path, *args, &bk); route 'POST', path, *args, &bk end
282
- def delete(path, *args, &bk); route 'DELETE', path, *args, &bk end
283
- def head(path, *args, &bk); route 'HEAD', path, *args, &bk end
284
-
285
291
  private
286
292
  # Parse params from the url method
287
293
  def value_to_param(value)
@@ -382,6 +388,8 @@ module Padrino
382
388
  end
383
389
  end
384
390
 
391
+ recognition_router.add(path).name(name).to(name)
392
+
385
393
  # Add Sinatra conditions
386
394
  options.each { |option, args|
387
395
  if route.respond_to?(option)
@@ -432,6 +440,7 @@ module Padrino
432
440
  # Now we can eval route, but because we have "throw halt" we need to be
433
441
  # (en)sure to reset old layout and run controller after filters.
434
442
  begin
443
+ @route = route
435
444
  @_response_buffer = catch(:halt) { route_eval(&block) }
436
445
  processed = true
437
446
  ensure
@@ -513,7 +522,7 @@ module Padrino
513
522
  path = "#{@_map}/#{path}".squeeze('/') unless absolute_map or @_map.blank?
514
523
 
515
524
  # Small reformats
516
- path.gsub!(%r{/\?$}, '(/)') # Remove index path
525
+ path.gsub!(%r{/\?$}, '(/)') # Remove index path
517
526
  path.gsub!(%r{/?index/?}, '/') # Remove index path
518
527
  path.gsub!(%r{//$}, '/') # Remove index path
519
528
  path[0,0] = "/" unless path =~ %r{^\(?/} # Paths must start with a /
@@ -650,6 +659,19 @@ module Padrino
650
659
  end
651
660
  alias :url_for :url
652
661
 
662
+ def recognize_path(path)
663
+ self.class.recognize_path(path)
664
+ end
665
+
666
+ def current_path(*path_params)
667
+ if path_params.last.is_a?(Hash)
668
+ path_params[-1] = params.merge(path_params[-1])
669
+ else
670
+ path_params << params
671
+ end
672
+ @route.url(*path_params)
673
+ end
674
+
653
675
  ##
654
676
  # This is mostly just a helper so request.path_info isn't changed when
655
677
  # serving files from the public directory
@@ -2,13 +2,8 @@ module Padrino
2
2
  ##
3
3
  # This module extend Sinatra::ShowExceptions adding Padrino as "Framework"
4
4
  #
5
- module ShowExceptions
6
-
7
- def self.included(base)
8
- base.alias_method_chain :frame_class, :padrino
9
- end
10
-
11
- def frame_class_with_padrino(frame)
5
+ class ShowExceptions < Sinatra::ShowExceptions
6
+ def frame_class(frame)
12
7
  if frame.filename =~ /lib\/sinatra.*\.rb|lib\/padrino.*\.rb/
13
8
  "framework"
14
9
  elsif (defined?(Gem) && frame.filename.include?(Gem.dir)) ||
@@ -20,6 +15,4 @@ module Padrino
20
15
  end
21
16
  end
22
17
  end # ShowExceptions
23
- end # Padrino
24
-
25
- Sinatra::ShowExceptions.send(:include, Padrino::ShowExceptions)
18
+ end # Padrino
@@ -1,5 +1,6 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../tasks')
2
2
  require 'rake'
3
+ require 'securerandom' unless defined?(SecureRandom)
3
4
  Rake.application.instance_variable_set(:@rakefile, __FILE__)
4
5
 
5
6
  module PadrinoTasks
@@ -30,7 +31,7 @@ end
30
31
 
31
32
  desc "Generate a secret key"
32
33
  task :secret do
33
- shell.say '%x' % rand(2**255)
34
+ shell.say SecureRandom.hex(32)
34
35
  end
35
36
 
36
37
  # lists all routes of a given app
@@ -68,7 +68,7 @@ module Padrino
68
68
  #
69
69
  # ==== Examples
70
70
  #
71
- # Padrino::Logger::Config[:development] = { :log_level => :debug, :to_file }
71
+ # Padrino::Logger::Config[:development] = { :log_level => :debug, :stream => :to_file }
72
72
  # # or you can edit our defaults
73
73
  # Padrino::Logger::Config[:development][:log_level] = :error
74
74
  # # or you can use your stream
@@ -284,6 +284,7 @@ module Padrino
284
284
  end
285
285
 
286
286
  def call(env)
287
+ env['rack.logger'] = Padrino.logger
287
288
  began_at = Time.now
288
289
  status, header, body = @app.call(env)
289
290
  log(env, status, header, began_at)
@@ -214,7 +214,7 @@ module Padrino
214
214
  files = paths.map { |path| Dir["#{path}/**/*.rb"] }.flatten.uniq
215
215
 
216
216
  files.map { |file|
217
- next if Padrino::Reloader.exclude.any? { |base| file =~ /^#{base}/ }
217
+ next if Padrino::Reloader.exclude.any? { |base| file =~ /^#{Regexp.escape(base)}/ }
218
218
 
219
219
  found, stat = figure_path(file, paths)
220
220
  next unless found && stat && mtime = stat.mtime
@@ -3,11 +3,12 @@
3
3
  #
4
4
  # Why use ActiveSupport and not our own library or extlib?
5
5
  #
6
- # 1) Rewriting custom method extensions needed (i.e string inflectors) is not a good use of time.
6
+ # 1) Rewriting custom method extensions required (i.e string inflectors) is not a good use of time.
7
7
  # 2) Loading custom method extensions or separate gems would conflict with AS when AR or MM has been loaded.
8
8
  # 3) Datamapper 1.0 supports ActiveSupport 3.0 and no longer requires extlib.
9
9
  #
10
10
 
11
+ # ActiveSupport Required Extensions
11
12
  require 'active_support/core_ext/string/conversions' unless String.method_defined?(:to_date)
12
13
  require 'active_support/core_ext/kernel' unless Kernel.method_defined?(:silence_warnings)
13
14
  require 'active_support/core_ext/module' unless Module.method_defined?(:alias_method_chain)
@@ -23,6 +24,7 @@ require 'active_support/inflector' unless String.method_define
23
24
  require 'active_support/core_ext/float/rounding' unless Float.method_defined?(:round)
24
25
  require 'active_support/option_merger' unless defined?(ActiveSupport::OptionMerger)
25
26
 
27
+ # Loads symbol to proc extensions
26
28
  begin
27
29
  require 'active_support/core_ext/symbol'
28
30
  rescue LoadError
@@ -58,7 +60,7 @@ if defined?(ActiveSupport::CoreExtensions::Hash) && !Hash.method_defined?(:slice
58
60
  end
59
61
 
60
62
  ##
61
- # Used to know if this file was required
63
+ # Used to know if this file has already been required
62
64
  #
63
65
  module SupportLite; end unless defined?(SupportLite)
64
66
 
@@ -106,7 +108,12 @@ class FileSet
106
108
  end
107
109
  end unless defined?(FileSet)
108
110
 
111
+ # YAML Engine Parsing Fix
112
+ # https://github.com/padrino/padrino-framework/issues/424
113
+ require 'yaml' unless defined?(YAML)
114
+ YAML::ENGINE.yamler = "syck" if defined?(YAML::ENGINE)
115
+
109
116
  ##
110
- # Loads our locales configuration files
117
+ # Loads our locale configuration files
111
118
  #
112
119
  I18n.load_path += Dir["#{File.dirname(__FILE__)}/locale/*.yml"] if defined?(I18n)
@@ -5,7 +5,7 @@
5
5
  # without include full padrino core.
6
6
  #
7
7
  module Padrino
8
- VERSION = '0.9.26' unless defined?(Padrino::VERSION)
8
+ VERSION = '0.9.27' unless defined?(Padrino::VERSION)
9
9
  ##
10
10
  # Return the current Padrino version
11
11
  #
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
  s.rdoc_options = ["--charset=UTF-8"]
22
22
 
23
23
  s.add_dependency("tilt", "~> 1.3.0")
24
- s.add_dependency("sinatra", "~> 1.2.3")
24
+ s.add_dependency("sinatra", "~> 1.2.6")
25
25
  s.add_dependency("http_router", "~> 0.7.5")
26
26
  s.add_dependency("thor", ">=0.14.3")
27
27
  s.add_dependency("activesupport", ">= 3.0.0")
@@ -1,6 +1,7 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/helper')
2
2
 
3
3
  class PadrinoTestApp < Padrino::Application; end
4
+ class PadrinoTestApp2 < Padrino::Application; end
4
5
 
5
6
  class TestApplication < Test::Unit::TestCase
6
7
  def setup
@@ -20,8 +21,11 @@ class TestApplication < Test::Unit::TestCase
20
21
  assert_equal Padrino.root("views"), PadrinoTestApp.views
21
22
  assert PadrinoTestApp.raise_errors
22
23
  assert !PadrinoTestApp.logging
23
- assert PadrinoTestApp.padrino_logging
24
24
  assert !PadrinoTestApp.sessions
25
+ assert !PadrinoTestApp.dump_errors
26
+ assert !PadrinoTestApp.show_exceptions
27
+ assert PadrinoTestApp.raise_errors
28
+ assert !Padrino.configure_apps
25
29
  end
26
30
 
27
31
  should 'check padrino specific options' do
@@ -34,6 +38,29 @@ class TestApplication < Test::Unit::TestCase
34
38
  assert !PadrinoTestApp.flash
35
39
  end
36
40
 
41
+ should 'set global project settings' do
42
+ Padrino.configure_apps { enable :sessions; set :foo, "bar" }
43
+ PadrinoTestApp.send(:default_configuration!)
44
+ PadrinoTestApp2.send(:default_configuration!)
45
+ assert PadrinoTestApp.sessions, "should have sessions enabled"
46
+ assert_equal "bar", PadrinoTestApp.settings.foo, "should have foo assigned"
47
+ assert_equal PadrinoTestApp.session_secret, PadrinoTestApp2.session_secret
48
+ end
49
+
50
+ should "have shared sessions accessible in project" do
51
+ Padrino.configure_apps { enable :sessions; set :session_secret, 'secret' }
52
+ Padrino.mount("PadrinoTestApp").to("/write")
53
+ Padrino.mount("PadrinoTestApp2").to("/read")
54
+ PadrinoTestApp.tap { |app| app.send(:default_configuration!)
55
+ app.get("/") { session[:foo] = "shared" } }
56
+ PadrinoTestApp2.tap { |app| app.send(:default_configuration!)
57
+ app.get("/") { session[:foo] } }
58
+ browser = Rack::Test::Session.new(Rack::MockSession.new(Padrino.application))
59
+ browser.get '/write'
60
+ browser.get '/read'
61
+ assert_equal 'shared', browser.last_response.body
62
+ end
63
+
37
64
  # compare to: test_routing: allow global provides
38
65
  should "set content_type to :html if none can be determined" do
39
66
  mock_app do
@@ -50,6 +77,7 @@ class TestApplication < Test::Unit::TestCase
50
77
 
51
78
  get '/bar', {}, { 'HTTP_ACCEPT' => 'application/xml' }
52
79
  assert_equal "Foo in html", body
53
- end
54
- end
55
- end
80
+ end # content_type to :html
81
+ end # application functionality
82
+
83
+ end
@@ -16,8 +16,10 @@ class TestCore < Test::Unit::TestCase
16
16
  assert_respond_to Padrino, :reload!
17
17
  assert_respond_to Padrino, :version
18
18
  assert_respond_to Padrino, :bundle
19
+ assert_respond_to Padrino, :configure_apps
19
20
  end
20
21
 
22
+
21
23
  should 'validate global helpers' do
22
24
  assert_equal :test, Padrino.env
23
25
  assert_match /\/test/, Padrino.root
@@ -60,4 +62,4 @@ class TestCore < Test::Unit::TestCase
60
62
  assert_equal "yes", res["Middleware-Called"]
61
63
  end
62
64
  end
63
- end
65
+ end
@@ -55,7 +55,10 @@ class TestPadrinoLogger < Test::Unit::TestCase
55
55
  end
56
56
 
57
57
  should 'log an application' do
58
- mock_app { get("/"){ "Foo" } }
58
+ mock_app do
59
+ enable :logging
60
+ get("/"){ "Foo" }
61
+ end
59
62
  get "/"
60
63
  assert_equal "Foo", body
61
64
  assert_match /GET/, Padrino.logger.log.string
@@ -63,7 +66,10 @@ class TestPadrinoLogger < Test::Unit::TestCase
63
66
 
64
67
  context "static asset logging" do
65
68
  should 'not log static assets by default' do
66
- mock_app { get("/images/something.png"){ env["sinatra.static_file"] = '/public/images/something.png'; "Foo" } }
69
+ mock_app do
70
+ enable :logging
71
+ get("/images/something.png"){ env["sinatra.static_file"] = '/public/images/something.png'; "Foo" }
72
+ end
67
73
  get "/images/something.png"
68
74
  assert_equal "Foo", body
69
75
  assert_match "", Padrino.logger.log.string
@@ -71,7 +77,10 @@ class TestPadrinoLogger < Test::Unit::TestCase
71
77
 
72
78
  should 'allow turning on static assets logging' do
73
79
  Padrino.logger.instance_eval{ @log_static = true }
74
- mock_app { get("/images/something.png"){ env["sinatra.static_file"] = '/public/images/something.png'; "Foo" } }
80
+ mock_app do
81
+ enable :logging
82
+ get("/images/something.png"){ env["sinatra.static_file"] = '/public/images/something.png'; "Foo" }
83
+ end
75
84
  get "/images/something.png"
76
85
  assert_equal "Foo", body
77
86
  assert_match /GET/, Padrino.logger.log.string
@@ -79,4 +88,4 @@ class TestPadrinoLogger < Test::Unit::TestCase
79
88
  end
80
89
  end
81
90
  end
82
- end
91
+ end
@@ -78,7 +78,7 @@ class TestSimpleReloader < Test::Unit::TestCase
78
78
  assert_equal 2, @app.filters[:before].size # one is ours the other is default_filter for content type
79
79
  assert_equal 1, @app.errors.size
80
80
  assert_equal 1, @app.filters[:after].size
81
- assert_equal 2, @app.middleware.size # [Padrino::Logger::Rack, Padrino::Reloader::Rack]
81
+ assert_equal 1, @app.middleware.size # [Padrino::Reloader::Rack]
82
82
  assert_equal 4, @app.routes.size # GET+HEAD of "/" + GET+HEAD of "/rand" = 4
83
83
  assert_equal 2, @app.extensions.size # [Padrino::Routing, Padrino::Rendering]
84
84
  assert_equal 0, @app.templates.size
@@ -88,7 +88,7 @@ class TestSimpleReloader < Test::Unit::TestCase
88
88
  assert_equal 2, @app.filters[:before].size # one is ours the other is default_filter for content type
89
89
  assert_equal 1, @app.errors.size
90
90
  assert_equal 1, @app.filters[:after].size
91
- assert_equal 2, @app.middleware.size # only logger Padrino::Logger::Rack
91
+ assert_equal 1, @app.middleware.size
92
92
  assert_equal 4, @app.routes.size # GET+HEAD of "/" = 2
93
93
  assert_equal 2, @app.extensions.size # [Padrino::Routing, Padrino::Rendering]
94
94
  assert_equal 0, @app.templates.size
@@ -1355,7 +1355,7 @@ class TestRouting < Test::Unit::TestCase
1355
1355
  mock_app { set :environment, :development }
1356
1356
  get "/"
1357
1357
  assert_equal 404, status
1358
- assert_match /Sinatra doesn\'t know this ditty./, body
1358
+ assert_match /Sinatra doesn&rsquo;t know this ditty./, body
1359
1359
  end
1360
1360
 
1361
1361
  should 'render a custom NotFound page' do
@@ -1375,4 +1375,44 @@ class TestRouting < Test::Unit::TestCase
1375
1375
  assert_equal 404, status
1376
1376
  assert_match /not found/, body
1377
1377
  end
1378
+
1379
+ should 'recognize paths' do
1380
+ mock_app do
1381
+ controller :foo do
1382
+ get(:bar, :map => "/my/:id/custom-route") { }
1383
+ end
1384
+ get(:simple, :map => "/simple/:id") { }
1385
+ get(:with_format, :with => :id, :provides => :js) { }
1386
+ end
1387
+ assert_equal [:foo_bar, { :id => "fantastic" }], @app.recognize_path(@app.url(:foo, :bar, :id => :fantastic))
1388
+ assert_equal [:foo_bar, { :id => "18" }], @app.recognize_path(@app.url(:foo, :bar, :id => 18))
1389
+ assert_equal [:simple, { :id => "bar" }], @app.recognize_path(@app.url(:simple, :id => "bar"))
1390
+ assert_equal [:simple, { :id => "true" }], @app.recognize_path(@app.url(:simple, :id => true))
1391
+ assert_equal [:simple, { :id => "9" }], @app.recognize_path(@app.url(:simple, :id => 9))
1392
+ assert_equal [:with_format, { :id => "bar", :format => "js" }], @app.recognize_path(@app.url(:with_format, :id => "bar", :format => :js))
1393
+ assert_equal [:with_format, { :id => "true", :format => "js" }], @app.recognize_path(@app.url(:with_format, :id => true, :format => "js"))
1394
+ assert_equal [:with_format, { :id => "9", :format => "js" }], @app.recognize_path(@app.url(:with_format, :id => 9, :format => :js))
1395
+ end
1396
+
1397
+ should 'have current_path' do
1398
+ mock_app do
1399
+ controller :foo do
1400
+ get :bar, :map => "/paginate/:page" do
1401
+ current_path
1402
+ end
1403
+ end
1404
+ end
1405
+ get @app.url(:foo, :bar, :page => 10)
1406
+ assert_equal "/paginate/10", body
1407
+ end
1408
+
1409
+ should 'change params in current_path' do
1410
+ mock_app do
1411
+ get :index, :map => "/paginate/:page" do
1412
+ current_path(:page => 66)
1413
+ end
1414
+ end
1415
+ get @app.url(:index, :page => 10)
1416
+ assert_equal "/paginate/66", body
1417
+ end
1378
1418
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: padrino-core
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
- - 26
10
- version: 0.9.26
9
+ - 27
10
+ version: 0.9.27
11
11
  platform: ruby
12
12
  authors:
13
13
  - Padrino Team
@@ -18,7 +18,7 @@ autorequire:
18
18
  bindir: bin
19
19
  cert_chain: []
20
20
 
21
- date: 2011-04-28 00:00:00 Z
21
+ date: 2011-05-06 00:00:00 Z
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency
24
24
  name: tilt
@@ -44,12 +44,12 @@ dependencies:
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- hash: 25
47
+ hash: 19
48
48
  segments:
49
49
  - 1
50
50
  - 2
51
- - 3
52
- version: 1.2.3
51
+ - 6
52
+ version: 1.2.6
53
53
  type: :runtime
54
54
  version_requirements: *id002
55
55
  - !ruby/object:Gem::Dependency