padrino-core 0.6.3 → 0.6.7
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.
- data/VERSION +1 -1
- data/bin/padrino +1 -1
- data/lib/padrino-core.rb +72 -38
- data/lib/padrino-core/application.rb +114 -58
- data/lib/padrino-core/caller.rb +8 -2
- data/lib/padrino-core/cli.rb +4 -3
- data/lib/padrino-core/cli/rake.rb +0 -1
- data/lib/padrino-core/loader.rb +62 -12
- data/lib/padrino-core/logger.rb +37 -18
- data/lib/padrino-core/mounter.rb +41 -9
- data/lib/padrino-core/reloader.rb +4 -2
- data/lib/padrino-core/server.rb +14 -2
- data/lib/padrino-core/stat.rb +10 -4
- data/lib/padrino-core/support_lite.rb +23 -21
- data/lib/padrino-core/tasks.rb +6 -3
- data/lib/padrino-core/version.rb +8 -2
- data/padrino-core.gemspec +6 -3
- data/test/fixtures/apps/simple.rb +7 -1
- data/test/fixtures/dependencies/a.rb +4 -0
- data/test/fixtures/dependencies/b.rb +4 -0
- data/test/fixtures/dependencies/c.rb +1 -0
- data/test/helper.rb +8 -0
- data/test/test_core.rb +18 -2
- data/test/test_dependencies.rb +27 -0
- metadata +6 -3
- data/lib/padrino-core/routing.rb +0 -0
@@ -1,10 +1,12 @@
|
|
1
1
|
module Padrino
|
2
|
+
##
|
2
3
|
# High performant source reloader
|
3
4
|
#
|
4
5
|
# This class acts as Rack middleware.
|
5
6
|
#
|
6
7
|
# It is performing a check/reload cycle at the start of every request, but
|
7
8
|
# also respects a cool down time, during which nothing will be done.
|
9
|
+
#
|
8
10
|
class Reloader
|
9
11
|
|
10
12
|
def initialize(app, cooldown = 1)
|
@@ -26,6 +28,6 @@ module Padrino
|
|
26
28
|
|
27
29
|
@app.call(env)
|
28
30
|
end
|
29
|
-
end
|
30
|
-
end
|
31
|
+
end # Reloader
|
32
|
+
end # Padrino
|
31
33
|
|
data/lib/padrino-core/server.rb
CHANGED
@@ -1,10 +1,22 @@
|
|
1
1
|
module Padrino
|
2
2
|
|
3
|
+
##
|
4
|
+
# Run the Padrino apps as a self-hosted server using:
|
5
|
+
# thin, mongrel, webrick in that order.
|
6
|
+
#
|
7
|
+
# Examples:
|
8
|
+
#
|
9
|
+
# Padrino.run! # with these defaults => host: "localhost", port: "3000", adapter: the first found
|
10
|
+
# Padrino.run!("localhost", "4000", "mongrel") # use => host: "localhost", port: "3000", adapter: "mongrel"
|
11
|
+
#
|
3
12
|
def self.run!(*args)
|
4
13
|
Padrino.load! unless Padrino.loaded?
|
5
14
|
Server.build(*args)
|
6
15
|
end
|
7
16
|
|
17
|
+
##
|
18
|
+
# This module build a Padrino server
|
19
|
+
#
|
8
20
|
module Server
|
9
21
|
|
10
22
|
class LoadError < RuntimeError; end
|
@@ -49,5 +61,5 @@ module Padrino
|
|
49
61
|
end
|
50
62
|
raise LoadError, "Server handler (#{servers.join(',')}) not found."
|
51
63
|
end
|
52
|
-
end
|
53
|
-
end
|
64
|
+
end # Server
|
65
|
+
end # Padrino
|
data/lib/padrino-core/stat.rb
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
require 'pathname'
|
2
2
|
|
3
3
|
module Padrino
|
4
|
+
##
|
4
5
|
# What makes it especially suited for use in a any environment is that
|
5
6
|
# any file will only be checked once and there will only be made one system
|
6
7
|
# call stat(2).
|
7
8
|
#
|
8
9
|
# Please note that this will not reload files in the background, it does so
|
9
10
|
# only when actively called.
|
11
|
+
#
|
10
12
|
module Stat
|
11
13
|
class << self
|
12
14
|
CACHE = {}
|
@@ -28,7 +30,9 @@ module Padrino
|
|
28
30
|
changed
|
29
31
|
end
|
30
32
|
|
33
|
+
##
|
31
34
|
# A safe Kernel::load, issuing the hooks depending on the results
|
35
|
+
#
|
32
36
|
def safe_load(file, mtime)
|
33
37
|
logger.debug "Reloading #{file}"
|
34
38
|
load(file)
|
@@ -41,7 +45,7 @@ module Padrino
|
|
41
45
|
|
42
46
|
def rotation
|
43
47
|
files = [$0, *$LOADED_FEATURES].uniq
|
44
|
-
paths = ['./',
|
48
|
+
paths = ['./', *$:].uniq
|
45
49
|
|
46
50
|
files.map{ |file|
|
47
51
|
next if file =~ /\.(so|bundle)$/ # cannot reload compiled files
|
@@ -54,9 +58,11 @@ module Padrino
|
|
54
58
|
}.compact
|
55
59
|
end
|
56
60
|
|
61
|
+
##
|
57
62
|
# Takes a relative or absolute +file+ name, a couple possible +paths+ that
|
58
63
|
# the +file+ might reside in. Returns the full path and File::Stat for the
|
59
64
|
# path.
|
65
|
+
#
|
60
66
|
def figure_path(file, paths)
|
61
67
|
found = CACHE[file]
|
62
68
|
found = file if !found and Pathname.new(file).absolute?
|
@@ -79,6 +85,6 @@ module Padrino
|
|
79
85
|
rescue Errno::ENOENT, Errno::ENOTDIR
|
80
86
|
CACHE.delete(file) and false
|
81
87
|
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
88
|
+
end # self
|
89
|
+
end # Stat
|
90
|
+
end # Padrino
|
@@ -1,36 +1,38 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
=end
|
1
|
+
##
|
2
|
+
# This file determines if extlib or activesupport are already loaded, and then ensures
|
3
|
+
# the required objects and methods exist for Padrino to use.
|
4
|
+
#
|
5
|
+
# Required for Padrino to run:
|
6
|
+
#
|
7
|
+
# * Class#cattr_accessor
|
8
|
+
# * Module#alias_method_chain
|
9
|
+
# * String#inflectors (classify, underscore, camelize, etc)
|
10
|
+
# * Array#extract_options!
|
11
|
+
# * Object#blank?
|
12
|
+
# * Object#present?
|
13
|
+
# * Hash#slice, Hash#slice!
|
14
|
+
# * Hash#to_params
|
15
|
+
# * Hash#symbolize_keys, Hash.symbolize_keys!
|
16
|
+
# * Hash#reverse_merge, Hash#reverse_merge!
|
17
|
+
# * SupportLite::OrderedHash
|
18
|
+
#
|
21
19
|
require 'i18n'
|
22
20
|
|
21
|
+
##
|
23
22
|
# Load our locales
|
23
|
+
#
|
24
24
|
I18n.load_path += Dir["#{File.dirname(__FILE__)}/locale/*.yml"]
|
25
25
|
|
26
26
|
module Padrino
|
27
|
+
##
|
27
28
|
# Return the current support used.
|
28
29
|
# Can be one of: :extlib, :active_support
|
30
|
+
#
|
29
31
|
def self.support
|
30
32
|
@_padrino_support
|
31
33
|
end
|
32
34
|
|
33
|
-
end
|
35
|
+
end # Padrino
|
34
36
|
|
35
37
|
if defined?(Extlib) # load if already using extlib
|
36
38
|
Padrino.instance_variable_set(:@_padrino_support, :extlib)
|
data/lib/padrino-core/tasks.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Padrino
|
2
2
|
|
3
|
-
|
3
|
+
##
|
4
|
+
# This module it's used for bootstrap with padrino rake
|
4
5
|
# thirdy party tasks, in your gem/plugin/extension you
|
5
6
|
# need only do this:
|
6
7
|
#
|
@@ -8,10 +9,12 @@ module Padrino
|
|
8
9
|
#
|
9
10
|
module Tasks
|
10
11
|
|
12
|
+
##
|
11
13
|
# Returns a list of files to handle with padrino rake
|
14
|
+
#
|
12
15
|
def self.files
|
13
16
|
@files ||= []
|
14
17
|
end
|
15
18
|
|
16
|
-
end
|
17
|
-
end
|
19
|
+
end # Tasks
|
20
|
+
end # Padrino
|
data/lib/padrino-core/version.rb
CHANGED
@@ -1,7 +1,13 @@
|
|
1
|
+
##
|
1
2
|
# Manages Padrino version from the VERSION file managed by Jeweler
|
2
|
-
|
3
|
+
# We put this in a separate file so you can get padrino version
|
4
|
+
# without include full padrino core.
|
5
|
+
#
|
3
6
|
module Padrino
|
7
|
+
##
|
8
|
+
# Return the current Padrino version
|
9
|
+
#
|
4
10
|
def self.version
|
5
11
|
@version ||= File.read(File.dirname(__FILE__) + '/../../VERSION').chomp
|
6
12
|
end
|
7
|
-
end
|
13
|
+
end # Padrino
|
data/padrino-core.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{padrino-core}
|
8
|
-
s.version = "0.6.
|
8
|
+
s.version = "0.6.7"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Padrino Team", "Nathan Esquenazi", "Davide D'Agostino", "Arthur Chiu"]
|
12
|
-
s.date = %q{2010-01-
|
12
|
+
s.date = %q{2010-01-26}
|
13
13
|
s.default_executable = %q{padrino}
|
14
14
|
s.description = %q{The Padrino core gem required for use of this framework}
|
15
15
|
s.email = %q{nesquena@gmail.com}
|
@@ -40,7 +40,6 @@ Gem::Specification.new do |s|
|
|
40
40
|
"lib/padrino-core/logger.rb",
|
41
41
|
"lib/padrino-core/mounter.rb",
|
42
42
|
"lib/padrino-core/reloader.rb",
|
43
|
-
"lib/padrino-core/routing.rb",
|
44
43
|
"lib/padrino-core/server.rb",
|
45
44
|
"lib/padrino-core/stat.rb",
|
46
45
|
"lib/padrino-core/support_lite.rb",
|
@@ -53,9 +52,13 @@ Gem::Specification.new do |s|
|
|
53
52
|
"test/fixtures/apps/.gitignore",
|
54
53
|
"test/fixtures/apps/complex.rb",
|
55
54
|
"test/fixtures/apps/simple.rb",
|
55
|
+
"test/fixtures/dependencies/a.rb",
|
56
|
+
"test/fixtures/dependencies/b.rb",
|
57
|
+
"test/fixtures/dependencies/c.rb",
|
56
58
|
"test/helper.rb",
|
57
59
|
"test/test_application.rb",
|
58
60
|
"test/test_core.rb",
|
61
|
+
"test/test_dependencies.rb",
|
59
62
|
"test/test_logger.rb",
|
60
63
|
"test/test_mounter.rb",
|
61
64
|
"test/test_reloader_complex.rb",
|
@@ -15,4 +15,10 @@ SimpleDemo.controllers do
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
|
18
|
+
## If you want use this as a standalone app uncomment:
|
19
|
+
#
|
20
|
+
# Padrino.mount_core("SimpleDemo")
|
21
|
+
# Padrino.run! unless Padrino.loaded? # If you enable reloader prevent to re-run the app
|
22
|
+
#
|
23
|
+
|
24
|
+
Padrino.load!
|
@@ -0,0 +1 @@
|
|
1
|
+
C = "C"
|
data/test/helper.rb
CHANGED
@@ -18,6 +18,14 @@ module Kernel
|
|
18
18
|
log_buffer.string
|
19
19
|
end
|
20
20
|
alias :silence_stdout :silence_logger
|
21
|
+
|
22
|
+
def silence_warnings
|
23
|
+
old_verbose, $VERBOSE = $VERBOSE, nil
|
24
|
+
yield
|
25
|
+
ensure
|
26
|
+
$VERBOSE = old_verbose
|
27
|
+
end unless respond_to?(:silence_warnings)
|
28
|
+
|
21
29
|
end
|
22
30
|
|
23
31
|
class Class
|
data/test/test_core.rb
CHANGED
@@ -5,8 +5,11 @@ class TestCore < Test::Unit::TestCase
|
|
5
5
|
context 'for core functionality' do
|
6
6
|
|
7
7
|
should 'check some global methods' do
|
8
|
-
assert_respond_to Padrino, :env
|
9
8
|
assert_respond_to Padrino, :root
|
9
|
+
assert_respond_to Padrino, :env
|
10
|
+
assert_respond_to Padrino, :application
|
11
|
+
assert_respond_to Padrino, :set_encoding
|
12
|
+
assert_respond_to Padrino, :require_dependencies!
|
10
13
|
assert_respond_to Padrino, :load!
|
11
14
|
assert_respond_to Padrino, :reload!
|
12
15
|
assert_respond_to Padrino, :version
|
@@ -16,7 +19,20 @@ class TestCore < Test::Unit::TestCase
|
|
16
19
|
assert_equal :test, Padrino.env
|
17
20
|
assert_match /\/test/, Padrino.root
|
18
21
|
end
|
19
|
-
|
22
|
+
|
23
|
+
should 'set correct utf-8 encoding' do
|
24
|
+
Padrino.set_encoding
|
25
|
+
if RUBY_VERSION >= '1.9'
|
26
|
+
assert_equal nil, $KCODE
|
27
|
+
else
|
28
|
+
assert_equal 'UTF8', $KCODE
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
should 'have load paths' do
|
33
|
+
assert_equal [Padrino.root('lib'), Padrino.root('models'), Padrino.root('shared')], Padrino.load_paths
|
34
|
+
end
|
35
|
+
|
20
36
|
should 'raise application error if I instantiate a new padrino application without mounted apps' do
|
21
37
|
Padrino.mounted_apps.clear
|
22
38
|
assert_raise(Padrino::ApplicationLoadError) { Padrino.application.new }
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
class TestDependencies < Test::Unit::TestCase
|
4
|
+
context 'when we require a dependency that have another dependecy' do
|
5
|
+
|
6
|
+
should 'raise an error without padrino' do
|
7
|
+
assert_raise NameError do
|
8
|
+
require "fixtures/dependencies/a.rb"
|
9
|
+
require "fixtures/dependencies/b.rb"
|
10
|
+
require "fixtures/dependencies/c.rb"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
should 'resolve dependency problems' do
|
15
|
+
silence_warnings do
|
16
|
+
Padrino.require_dependencies(
|
17
|
+
Padrino.root("fixtures/dependencies/a.rb"),
|
18
|
+
Padrino.root("fixtures/dependencies/b.rb"),
|
19
|
+
Padrino.root("fixtures/dependencies/c.rb")
|
20
|
+
)
|
21
|
+
end
|
22
|
+
assert_equal ["B", "A"], A_result
|
23
|
+
assert_equal ["C", "B"], B_result
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: padrino-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Padrino Team
|
@@ -12,7 +12,7 @@ autorequire:
|
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
14
|
|
15
|
-
date: 2010-01-
|
15
|
+
date: 2010-01-26 00:00:00 +01:00
|
16
16
|
default_executable: padrino
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
@@ -146,7 +146,6 @@ files:
|
|
146
146
|
- lib/padrino-core/logger.rb
|
147
147
|
- lib/padrino-core/mounter.rb
|
148
148
|
- lib/padrino-core/reloader.rb
|
149
|
-
- lib/padrino-core/routing.rb
|
150
149
|
- lib/padrino-core/server.rb
|
151
150
|
- lib/padrino-core/stat.rb
|
152
151
|
- lib/padrino-core/support_lite.rb
|
@@ -159,9 +158,13 @@ files:
|
|
159
158
|
- test/fixtures/apps/.gitignore
|
160
159
|
- test/fixtures/apps/complex.rb
|
161
160
|
- test/fixtures/apps/simple.rb
|
161
|
+
- test/fixtures/dependencies/a.rb
|
162
|
+
- test/fixtures/dependencies/b.rb
|
163
|
+
- test/fixtures/dependencies/c.rb
|
162
164
|
- test/helper.rb
|
163
165
|
- test/test_application.rb
|
164
166
|
- test/test_core.rb
|
167
|
+
- test/test_dependencies.rb
|
165
168
|
- test/test_logger.rb
|
166
169
|
- test/test_mounter.rb
|
167
170
|
- test/test_reloader_complex.rb
|
data/lib/padrino-core/routing.rb
DELETED
File without changes
|