padrino-core 0.1.2 → 0.1.3
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/lib/padrino-core.rb +8 -2
- data/lib/padrino-core/application.rb +21 -17
- data/lib/padrino-core/loader.rb +2 -1
- data/lib/padrino-core/mounter.rb +11 -3
- data/lib/padrino-core/tasks.rb +37 -13
- data/lib/padrino-core/tasks/adapter.rb +93 -0
- data/lib/padrino-core/tasks/helpers.rb +20 -0
- data/lib/padrino-core/tasks/test.rb +19 -0
- data/padrino-core.gemspec +10 -5
- data/test/fixtures/simple_app/.components +6 -0
- data/test/fixtures/simple_app/.gitignore +7 -0
- data/test/fixtures/simple_app/Gemfile +9 -0
- data/test/fixtures/simple_app/app.rb +36 -5
- data/test/helper.rb +1 -24
- data/test/test_padrino_application.rb +45 -0
- data/test/test_padrino_core.rb +30 -10
- data/test/test_padrino_mounter.rb +51 -0
- metadata +10 -5
- data/test/fixtures/extended_app/app.rb +0 -10
- data/test/test_padrino_mounting.rb +0 -8
- data/test/test_padrino_tasks.rb +0 -8
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/lib/padrino-core.rb
CHANGED
@@ -9,12 +9,18 @@ module Padrino
|
|
9
9
|
|
10
10
|
# Helper method for file references.
|
11
11
|
#
|
12
|
-
#
|
13
|
-
#
|
12
|
+
# Example:
|
13
|
+
# # Referencing a file in config called settings.yml
|
14
14
|
# Padrino.root("config", "settings.yml")
|
15
|
+
# # returns PADRINO_ROOT + "/config/setting.yml"
|
15
16
|
def self.root(*args)
|
16
17
|
File.join(PADRINO_ROOT, *args)
|
17
18
|
end
|
19
|
+
|
20
|
+
# Helper method that return PADRINO_ENV
|
21
|
+
def self.env
|
22
|
+
PADRINO_ENV
|
23
|
+
end
|
18
24
|
|
19
25
|
# Returns the resulting rack builder mapping each 'mounted' application
|
20
26
|
def self.application
|
@@ -6,7 +6,7 @@ module Padrino
|
|
6
6
|
|
7
7
|
def logger
|
8
8
|
@log_stream ||= self.class.log_to_file? ? Padrino.root("log/#{PADRINO_ENV.downcase}.log") : $stdout
|
9
|
-
@logger
|
9
|
+
@logger ||= Logger.new(@log_stream)
|
10
10
|
end
|
11
11
|
|
12
12
|
class << self
|
@@ -27,14 +27,7 @@ module Padrino
|
|
27
27
|
# Makes the routes defined in the block and in the Modules given
|
28
28
|
# in `extensions` available to the application
|
29
29
|
def controllers(*extensions, &block)
|
30
|
-
|
31
|
-
instance_eval(&block) if block_given?
|
32
|
-
include(*extensions) if extensions.any?
|
33
|
-
end
|
34
|
-
|
35
|
-
# Makes the urls defined in the block and in the Modules given
|
36
|
-
# in `extensions` available to the application
|
37
|
-
def urls(*extensions, &block)
|
30
|
+
self.reset_routes! if reload?
|
38
31
|
instance_eval(&block) if block_given?
|
39
32
|
include(*extensions) if extensions.any?
|
40
33
|
end
|
@@ -45,9 +38,9 @@ module Padrino
|
|
45
38
|
# Invoked automatically when an application is first instantiated
|
46
39
|
def setup_application!
|
47
40
|
return if @configured
|
41
|
+
self.register_framework_extensions
|
48
42
|
self.calculate_paths
|
49
43
|
self.register_initializers
|
50
|
-
self.register_framework_extensions
|
51
44
|
self.require_load_paths
|
52
45
|
self.setup_logger
|
53
46
|
@configured = true
|
@@ -67,13 +60,15 @@ module Padrino
|
|
67
60
|
set :default_builder, 'StandardFormBuilder'
|
68
61
|
enable :flash
|
69
62
|
# Plugin specific
|
63
|
+
enable :padrino_routing
|
64
|
+
enable :padrino_mailer
|
70
65
|
enable :padrino_helpers
|
71
66
|
end
|
72
67
|
|
73
68
|
# Calculates any required paths after app_file and root have been properly configured
|
74
69
|
# Executes as part of the setup_application! method
|
75
70
|
def calculate_paths
|
76
|
-
raise ApplicationSetupError.new("Please
|
71
|
+
raise ApplicationSetupError.new("Please define 'app_file' option for #{self.name} app!") unless self.app_file
|
77
72
|
set :views, find_view_path if find_view_path
|
78
73
|
set :images_path, File.join(self.public, "/images") unless self.respond_to?(:images_path)
|
79
74
|
end
|
@@ -93,9 +88,11 @@ module Padrino
|
|
93
88
|
|
94
89
|
# Registers all desired padrino extension helpers/routing
|
95
90
|
def register_framework_extensions
|
96
|
-
|
97
|
-
register Padrino::
|
91
|
+
return if @registered
|
92
|
+
register Padrino::Routing if padrino_routing?
|
93
|
+
register Padrino::Mailer if padrino_mailer?
|
98
94
|
register Padrino::Helpers if padrino_helpers?
|
95
|
+
@registered = true
|
99
96
|
end
|
100
97
|
|
101
98
|
# Require all files within the application's load paths
|
@@ -105,9 +102,9 @@ module Padrino
|
|
105
102
|
|
106
103
|
# Creates the log directory and redirects output to file if needed
|
107
104
|
def setup_logger
|
108
|
-
return unless
|
109
|
-
FileUtils.mkdir_p
|
110
|
-
log = File.new("log/#{PADRINO_ENV.downcase}.log", "a+")
|
105
|
+
return unless log_to_file?
|
106
|
+
FileUtils.mkdir_p("#{Padrino.root}/log") unless File.exists?("#{Padrino.root}/log")
|
107
|
+
log = File.new("#{Padrino.root}/log/#{PADRINO_ENV.downcase}.log", "a+")
|
111
108
|
$stdout.reopen(log)
|
112
109
|
$stderr.reopen(log)
|
113
110
|
end
|
@@ -115,7 +112,8 @@ module Padrino
|
|
115
112
|
# Returns the load_paths for the application (relative to the application root)
|
116
113
|
def load_paths
|
117
114
|
@load_paths ||= ["urls.rb", "config/urls.rb", "models/*.rb", "app/models/*.rb",
|
118
|
-
"
|
115
|
+
"mailers/*.rb", "app/mailers/*.rb", "controllers/*.rb", "app/controllers/*.rb",
|
116
|
+
"helpers/*.rb", "app/helpers/*.rb"]
|
119
117
|
end
|
120
118
|
|
121
119
|
# Returns the path to the views directory from root by returning the first that is found
|
@@ -123,6 +121,12 @@ module Padrino
|
|
123
121
|
@view_paths = ["views", "app/views"].collect { |path| File.join(self.root, path) }
|
124
122
|
@view_paths.find { |path| Dir[File.join(path, '/**/*')].any? }
|
125
123
|
end
|
124
|
+
|
125
|
+
# Resets application routes for use in reloading the application
|
126
|
+
# This performs a basic routes reload (compatible with sinatra edge)
|
127
|
+
def reset_routes!
|
128
|
+
@routes = Padrino::Application.dupe_routes; load(self.app_file)
|
129
|
+
end
|
126
130
|
end
|
127
131
|
end
|
128
132
|
end
|
data/lib/padrino-core/loader.rb
CHANGED
@@ -3,7 +3,7 @@ module Padrino
|
|
3
3
|
# Requires necessary dependencies as well as application files from root lib and models
|
4
4
|
def load!
|
5
5
|
load_required_gems # load bundler gems
|
6
|
-
load_dependencies("#{root}/config/apps.rb", "#{root}/config/database.rb")
|
6
|
+
load_dependencies("#{root}/config/apps.rb", "#{root}/config/database.rb") # load configuration
|
7
7
|
load_dependencies("#{root}/lib/**/*.rb", "#{root}/models/*.rb") # load root app dependencies
|
8
8
|
reload! # We need to fill our Stat::CACHE but we do that only for development
|
9
9
|
end
|
@@ -32,6 +32,7 @@ module Padrino
|
|
32
32
|
require 'bundler'
|
33
33
|
gemfile_path = root("Gemfile")
|
34
34
|
puts "=> Loading GemFile #{gemfile_path} for #{PADRINO_ENV}"
|
35
|
+
# TODO possibly support padrino apps where no Gemfile is specified (skip requires, assume explicit dependencies)
|
35
36
|
Bundler::Environment.load(gemfile_path).require_env(PADRINO_ENV)
|
36
37
|
rescue Bundler::DefaultManifestNotFound => e
|
37
38
|
puts "=> You didn't create Bundler Gemfile manifest or you are not in a Sinatra application."
|
data/lib/padrino-core/mounter.rb
CHANGED
@@ -5,11 +5,12 @@ module Padrino
|
|
5
5
|
# @example Mounter.new("blog_app", :app_file => "/path/to/root/app.rb").to("/blog")
|
6
6
|
# @example Mounter.new("blog_app", :app_class => "Blog").to("/blog")
|
7
7
|
class Mounter
|
8
|
-
attr_accessor :name, :uri_root, :app_file, :app_klass
|
8
|
+
attr_accessor :name, :uri_root, :app_file, :app_klass, :app_root
|
9
9
|
def initialize(name, options={})
|
10
10
|
@name = name
|
11
11
|
@app_klass = options[:app_class] || name.classify
|
12
12
|
@app_file = options[:app_file] || Padrino.mounted_root(name, 'app.rb')
|
13
|
+
@app_root = options[:app_root] if options[:app_root]
|
13
14
|
end
|
14
15
|
|
15
16
|
# Registers the mounted application onto Padrino
|
@@ -28,6 +29,7 @@ module Padrino
|
|
28
29
|
builder.map self.uri_root do
|
29
30
|
app_klass.set :uri_root, app_data.uri_root
|
30
31
|
app_klass.set :app_file, app_data.app_file
|
32
|
+
app_klass.set :root, app_data.app_root if app_data.app_root
|
31
33
|
run app_klass
|
32
34
|
end
|
33
35
|
end
|
@@ -36,7 +38,13 @@ module Padrino
|
|
36
38
|
class << self
|
37
39
|
# Returns the root to the mounted apps base directory
|
38
40
|
def mounted_root(*args)
|
39
|
-
|
41
|
+
@mounted_root ||= "apps" # Other apps
|
42
|
+
File.join(Padrino.root, @mounted_root, *args)
|
43
|
+
end
|
44
|
+
|
45
|
+
# Set the root directory where padrino search mounted apps
|
46
|
+
def mounted_root=(value)
|
47
|
+
@mounted_root = value
|
40
48
|
end
|
41
49
|
|
42
50
|
# Returns the mounted padrino applications (MountedApp objects)
|
@@ -53,7 +61,7 @@ module Padrino
|
|
53
61
|
# Mounts the core application onto Padrino project
|
54
62
|
# @example Padrino.mount_core(:app_file => "/path/to/file", :app_class => "Blog")
|
55
63
|
def mount_core(options={})
|
56
|
-
options.reverse_merge!(:app_file => Padrino.root('app.rb'))
|
64
|
+
options.reverse_merge!(:app_file => Padrino.root('app/app.rb'), :app_root => Padrino.root)
|
57
65
|
Mounter.new("core", options).to("/")
|
58
66
|
end
|
59
67
|
end
|
data/lib/padrino-core/tasks.rb
CHANGED
@@ -1,35 +1,59 @@
|
|
1
1
|
require 'thor'
|
2
|
+
require File.dirname(__FILE__) + "/tasks/helpers"
|
2
3
|
|
3
4
|
module Padrino
|
4
5
|
module Tasks
|
5
6
|
class Base < Thor
|
6
7
|
include Thor::Actions
|
7
|
-
|
8
|
-
|
8
|
+
include Padrino::Tasks::Helpers
|
9
|
+
|
10
|
+
class_option :chdir, :type => :string, :aliases => "-c"
|
11
|
+
|
12
|
+
desc "start ", "Starts the Padrino application"
|
13
|
+
|
14
|
+
method_option :environment, :type => :string, :aliases => "-e", :required => true, :default => :development
|
15
|
+
method_option :adapter, :type => :string, :aliases => "-a", :required => true, :default => :thin
|
16
|
+
method_option :host, :type => :string, :aliases => "-h", :required => true, :default => "localhost"
|
17
|
+
method_option :port, :type => :numeric, :aliases => "-p", :required => true, :default => 3000
|
18
|
+
method_option :boot, :type => :string, :aliases => "-b", :required => true, :default => "config/boot.rb"
|
19
|
+
method_option :daemonize, :type => :boolean, :aliases => "-d"
|
20
|
+
|
21
|
+
desc "start", "Start the Padrino application"
|
9
22
|
def start
|
10
|
-
|
23
|
+
require File.dirname(__FILE__) + "/tasks/adapter"
|
24
|
+
chdir(options.chdir)
|
25
|
+
Padrino::Tasks::Adapter.start(options)
|
11
26
|
end
|
12
|
-
|
27
|
+
|
13
28
|
desc "stop", "Stops the Padrino application"
|
14
29
|
def stop
|
15
|
-
|
30
|
+
require File.dirname(__FILE__) + "/tasks/adapter"
|
31
|
+
chdir(options.chdir)
|
32
|
+
Padrino::Tasks::Adapter.stop
|
16
33
|
end
|
17
|
-
|
34
|
+
|
18
35
|
desc "test", "Executes all the Padrino test files"
|
19
36
|
def test
|
20
|
-
|
37
|
+
require File.dirname(__FILE__) + "/tasks/test"
|
38
|
+
chdir(options.chdir)
|
39
|
+
Padrino::Tasks::Test.start
|
21
40
|
end
|
22
|
-
|
41
|
+
|
23
42
|
desc "console ENVIRONMENT", "Boots up the Padrino application irb console"
|
43
|
+
method_option :boot, :type => :string, :aliases => "-b", :required => true, :default => "config/boot.rb"
|
24
44
|
def console(environment="development")
|
25
|
-
require File.dirname(__FILE__) + "/version
|
26
|
-
|
45
|
+
require File.dirname(__FILE__) + "/version"
|
46
|
+
boot = options.chdir ? File.join(options.chdir, options.boot) : options.boot
|
47
|
+
unless File.exist?(boot)
|
48
|
+
puts "=> We didn't find boot file: #{boot} !!!"
|
49
|
+
exit
|
50
|
+
end
|
27
51
|
ENV["PADRINO_ENV"] ||= environment
|
28
52
|
puts "=> Loading #{environment} console (Padrino v.#{Padrino.version})"
|
29
53
|
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
|
30
|
-
libs =
|
31
|
-
libs <<
|
32
|
-
libs <<
|
54
|
+
libs = " -r irb/completion"
|
55
|
+
libs << " -r #{boot}"
|
56
|
+
libs << " -r #{File.dirname(__FILE__)}/tasks/console"
|
33
57
|
exec "#{irb} #{libs} --simple-prompt"
|
34
58
|
end
|
35
59
|
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
module Padrino
|
2
|
+
module Tasks
|
3
|
+
module Adapter
|
4
|
+
|
5
|
+
class << self
|
6
|
+
|
7
|
+
ADAPTERS = %w[thin mongrel webrick]
|
8
|
+
|
9
|
+
# Start for the given options a rackup handler
|
10
|
+
def start(options)
|
11
|
+
|
12
|
+
ENV["PADRINO_ENV"] = options.environment.to_s
|
13
|
+
|
14
|
+
boot = options.chdir ? File.join(options.chdir, options.boot) : options.boot
|
15
|
+
unless File.exist?(boot)
|
16
|
+
puts "=> Could not find boot file: #{boot.inspect} !!!"
|
17
|
+
exit
|
18
|
+
end
|
19
|
+
require boot
|
20
|
+
|
21
|
+
puts "=> Padrino/#{Padrino.version} has taken the stage #{options.environment} on port #{options.port}"
|
22
|
+
|
23
|
+
if options.daemonize?
|
24
|
+
unless fork
|
25
|
+
puts "=> Daemonized mode is not supported on your platform."
|
26
|
+
exit
|
27
|
+
end
|
28
|
+
|
29
|
+
stop # Need to stop a process if it exists
|
30
|
+
|
31
|
+
fork do
|
32
|
+
Process.setsid
|
33
|
+
exit if fork
|
34
|
+
File.umask 0000
|
35
|
+
puts "=> Padrino server has been daemonized with pid #{Process.pid}"
|
36
|
+
STDIN.reopen "/dev/null"
|
37
|
+
STDOUT.reopen "/dev/null", "a"
|
38
|
+
STDERR.reopen STDOUT
|
39
|
+
|
40
|
+
FileUtils.mkdir_p("tmp/pids") unless File.exist?("tmp/pids")
|
41
|
+
pid = "tmp/pids/server.pid"
|
42
|
+
|
43
|
+
if pid
|
44
|
+
File.open(pid, 'w'){ |f| f.write("#{Process.pid}") }
|
45
|
+
at_exit { File.delete(pid) if File.exist?(pid) }
|
46
|
+
end
|
47
|
+
|
48
|
+
run_app(options)
|
49
|
+
|
50
|
+
end
|
51
|
+
else
|
52
|
+
run_app(options)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# Method that run the Padrino.application
|
57
|
+
def run_app(options)
|
58
|
+
|
59
|
+
handler_name = options.adapter.to_s.capitalize
|
60
|
+
|
61
|
+
begin
|
62
|
+
handler = Rack::Handler.get(handler_name.downcase)
|
63
|
+
rescue
|
64
|
+
puts "#{handler_name} not supported yet, available adapters are: #{ADAPTERS.inspect}"
|
65
|
+
exit
|
66
|
+
end
|
67
|
+
|
68
|
+
handler.run Padrino.application, :Host => options.host, :Port => options.port do |server|
|
69
|
+
trap(:INT) do
|
70
|
+
# Use thins' hard #stop! if available, otherwise just #stop
|
71
|
+
server.respond_to?(:stop!) ? server.stop! : server.stop
|
72
|
+
puts "<= Padrino has ended his set (crowd applauds)"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
rescue Errno::EADDRINUSE
|
76
|
+
puts "=> Someone is already performing on port #{options.port}!"
|
77
|
+
end
|
78
|
+
|
79
|
+
# Method that stop (if exist) a running Padrino.application
|
80
|
+
def stop
|
81
|
+
if File.exist?("tmp/pids/server.pid")
|
82
|
+
pid = File.read("tmp/pids/server.pid").to_i
|
83
|
+
print "=> Sending SIGTERM to process with pid #{pid} wait "
|
84
|
+
Process.kill(15, pid) rescue nil
|
85
|
+
1.step(5) { |i| sleep i; print "."; $stdout.flush }
|
86
|
+
puts " done."
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Padrino
|
2
|
+
module Tasks
|
3
|
+
module Helpers
|
4
|
+
|
5
|
+
def chdir(dir)
|
6
|
+
return unless dir
|
7
|
+
begin
|
8
|
+
Dir.chdir(dir.to_s)
|
9
|
+
rescue Errno::ENOENT
|
10
|
+
puts "=> Specified Padrino root '#{dir}' " +
|
11
|
+
"does not appear to exist!"
|
12
|
+
rescue Errno::EACCES
|
13
|
+
puts "=> Specified Padrino root '#{dir}' " +
|
14
|
+
"cannot be accessed by the current user!"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Padrino
|
2
|
+
module Tasks
|
3
|
+
module Test
|
4
|
+
|
5
|
+
class << self
|
6
|
+
|
7
|
+
# This metod start testing for the given app.
|
8
|
+
# It look for any test/test_*.rb file in your app root.
|
9
|
+
def start
|
10
|
+
puts "=> Starting Test"
|
11
|
+
tests = Dir['test/**/test_*.rb'] - ['test/test_helper.rb']
|
12
|
+
cmd = "ruby -rubygems -I.:lib -e'%w( #{tests.join(' ')} ).each { |file| require file }'"
|
13
|
+
system cmd
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
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.1.
|
8
|
+
s.version = "0.1.3"
|
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{2009-11-
|
12
|
+
s.date = %q{2009-11-20}
|
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}
|
@@ -36,16 +36,21 @@ Gem::Specification.new do |s|
|
|
36
36
|
"lib/padrino-core/stat.rb",
|
37
37
|
"lib/padrino-core/support_lite.rb",
|
38
38
|
"lib/padrino-core/tasks.rb",
|
39
|
+
"lib/padrino-core/tasks/adapter.rb",
|
39
40
|
"lib/padrino-core/tasks/console.rb",
|
41
|
+
"lib/padrino-core/tasks/helpers.rb",
|
42
|
+
"lib/padrino-core/tasks/test.rb",
|
40
43
|
"lib/padrino-core/version.rb",
|
41
44
|
"padrino-core.gemspec",
|
42
45
|
"test/active_support_helpers.rb",
|
43
|
-
"test/fixtures/
|
46
|
+
"test/fixtures/simple_app/.components",
|
47
|
+
"test/fixtures/simple_app/.gitignore",
|
48
|
+
"test/fixtures/simple_app/Gemfile",
|
44
49
|
"test/fixtures/simple_app/app.rb",
|
45
50
|
"test/helper.rb",
|
51
|
+
"test/test_padrino_application.rb",
|
46
52
|
"test/test_padrino_core.rb",
|
47
|
-
"test/
|
48
|
-
"test/test_padrino_tasks.rb"
|
53
|
+
"test/test_padrino_mounter.rb"
|
49
54
|
]
|
50
55
|
s.homepage = %q{http://github.com/padrino/padrino-core}
|
51
56
|
s.rdoc_options = ["--charset=UTF-8"]
|
@@ -1,10 +1,41 @@
|
|
1
|
+
PADRINO_ROOT = File.dirname(__FILE__) unless defined? PADRINO_ROOT
|
1
2
|
require 'sinatra/base'
|
2
3
|
require 'haml'
|
4
|
+
require 'padrino-core'
|
3
5
|
|
4
|
-
|
6
|
+
class Core1Demo < Padrino::Application
|
7
|
+
set :app_file, File.dirname(__FILE__) + "/app.rb"
|
8
|
+
disable :padrino_routing
|
9
|
+
disable :padrino_mailer
|
10
|
+
disable :padrino_helpers
|
11
|
+
|
12
|
+
get "" do
|
13
|
+
"Im Core1Demo"
|
14
|
+
end
|
15
|
+
end
|
5
16
|
|
6
|
-
class
|
7
|
-
|
8
|
-
|
17
|
+
class Core2Demo < Padrino::Application
|
18
|
+
set :app_file, File.dirname(__FILE__) + "/app.rb"
|
19
|
+
disable :padrino_routing
|
20
|
+
disable :padrino_mailer
|
21
|
+
disable :padrino_helpers
|
22
|
+
|
23
|
+
get "" do
|
24
|
+
"Im Core2Demo"
|
9
25
|
end
|
10
|
-
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class Core3Demo < Padrino::Application
|
29
|
+
enable :padrino_routing
|
30
|
+
|
31
|
+
# TODO enabling this causes an error (because routing not loaded yet)
|
32
|
+
# get :test, :map => '/test' do
|
33
|
+
# "This raises a large error"
|
34
|
+
# end
|
35
|
+
end
|
36
|
+
|
37
|
+
orig_stdout = $stdout
|
38
|
+
$stdout = log_buffer = StringIO.new
|
39
|
+
Padrino.load!
|
40
|
+
$stdout = orig_stdout
|
41
|
+
log_buffer.rewind && log_buffer.read
|
data/test/helper.rb
CHANGED
@@ -7,14 +7,10 @@ require 'webrat'
|
|
7
7
|
|
8
8
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
9
9
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
10
|
+
|
10
11
|
require 'active_support_helpers'
|
11
|
-
require 'padrino-helpers'
|
12
|
-
require 'padrino-core'
|
13
12
|
|
14
13
|
class Test::Unit::TestCase
|
15
|
-
include Padrino::Helpers::OutputHelpers
|
16
|
-
include Padrino::Helpers::TagHelpers
|
17
|
-
include Padrino::Helpers::AssetTagHelpers
|
18
14
|
include Rack::Test::Methods
|
19
15
|
include Webrat::Methods
|
20
16
|
include Webrat::Matchers
|
@@ -29,25 +25,6 @@ class Test::Unit::TestCase
|
|
29
25
|
return time
|
30
26
|
end
|
31
27
|
|
32
|
-
# assert_has_tag(:h1, :content => "yellow") { "<h1>yellow</h1>" }
|
33
|
-
# In this case, block is the html to evaluate
|
34
|
-
def assert_has_tag(name, attributes = {}, &block)
|
35
|
-
html = block && block.call
|
36
|
-
matcher = HaveSelector.new(name, attributes)
|
37
|
-
raise "Please specify a block!" if html.blank?
|
38
|
-
assert matcher.matches?(html), matcher.failure_message
|
39
|
-
end
|
40
|
-
|
41
|
-
# assert_has_no_tag, tag(:h1, :content => "yellow") { "<h1>green</h1>" }
|
42
|
-
# In this case, block is the html to evaluate
|
43
|
-
def assert_has_no_tag(name, attributes = {}, &block)
|
44
|
-
html = block && block.call
|
45
|
-
attributes.merge!(:count => 0)
|
46
|
-
matcher = HaveSelector.new(name, attributes)
|
47
|
-
raise "Please specify a block!" if html.blank?
|
48
|
-
assert matcher.matches?(html), matcher.failure_message
|
49
|
-
end
|
50
|
-
|
51
28
|
# Silences the output by redirecting to stringIO
|
52
29
|
# silence_logger { ...commands... } => "...output..."
|
53
30
|
def silence_logger(&block)
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
PADRINO_ENV = RACK_ENV = 'test' unless defined?(PADRINO_ENV)
|
4
|
+
require File.dirname(__FILE__) + '/fixtures/simple_app/app'
|
5
|
+
require 'padrino-core'
|
6
|
+
|
7
|
+
class TestPadrinoApplication < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def app
|
10
|
+
Padrino.application.tap { }
|
11
|
+
end
|
12
|
+
|
13
|
+
def setup
|
14
|
+
Padrino.mounted_apps.clear
|
15
|
+
Padrino.mount("core_1_demo", :app_file => "#{Padrino.root("app.rb")}").to("/core_1_demo")
|
16
|
+
Padrino.mount("core_2_demo", :app_file => "#{Padrino.root("app.rb")}").to("/core_2_demo")
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'for application functionality' do
|
20
|
+
|
21
|
+
should 'check methods' do
|
22
|
+
assert_respond_to Padrino::Application, :new
|
23
|
+
assert_respond_to Padrino::Application, :controllers
|
24
|
+
assert_respond_to Padrino::Application, :setup_application!
|
25
|
+
assert_respond_to Padrino::Application, :default_configuration!
|
26
|
+
assert_respond_to Padrino::Application, :calculate_paths
|
27
|
+
assert_respond_to Padrino::Application, :register_initializers
|
28
|
+
assert_respond_to Padrino::Application, :register_framework_extensions
|
29
|
+
assert_respond_to Padrino::Application, :require_load_paths
|
30
|
+
assert_respond_to Padrino::Application, :setup_logger
|
31
|
+
assert_respond_to Padrino::Application, :load_paths
|
32
|
+
assert_respond_to Padrino::Application, :find_view_path
|
33
|
+
end
|
34
|
+
|
35
|
+
should 'have controllers' do
|
36
|
+
Core1Demo.controllers do
|
37
|
+
get("/controller") { "Im a controller" }
|
38
|
+
end
|
39
|
+
visit "/core_1_demo/controller"
|
40
|
+
assert_contain "Im a controller"
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
data/test/test_padrino_core.rb
CHANGED
@@ -1,17 +1,37 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/helper'
|
2
|
-
|
2
|
+
|
3
|
+
PADRINO_ENV = RACK_ENV = 'test' unless defined?(PADRINO_ENV)
|
4
|
+
require File.dirname(__FILE__) + '/fixtures/simple_app/app'
|
5
|
+
require 'padrino-core'
|
3
6
|
|
4
7
|
class TestPadrinoCore < Test::Unit::TestCase
|
8
|
+
|
5
9
|
context 'for core functionality' do
|
10
|
+
|
11
|
+
should 'check global methods' do
|
12
|
+
assert_respond_to Padrino, :env
|
13
|
+
assert_respond_to Padrino, :root
|
14
|
+
assert_respond_to Padrino, :load!
|
15
|
+
assert_respond_to Padrino, :reload!
|
16
|
+
assert_respond_to Padrino, :load_dependencies
|
17
|
+
assert_respond_to Padrino, :load_required_gems
|
18
|
+
assert_respond_to Padrino, :mounted_root
|
19
|
+
assert_respond_to Padrino, :mounted_apps
|
20
|
+
assert_respond_to Padrino, :mount
|
21
|
+
assert_respond_to Padrino, :mount_core
|
22
|
+
assert_respond_to Padrino, :version
|
23
|
+
end
|
24
|
+
|
25
|
+
should 'validate global helpers' do
|
26
|
+
assert_equal "test", Padrino.env
|
27
|
+
assert_match %r{/test/fixtures/simple_app}, Padrino.root
|
28
|
+
end
|
6
29
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
context 'for application functionality' do
|
15
|
-
|
30
|
+
should 'raise application error if I instantiate a new padrino application without mounted apps' do
|
31
|
+
Padrino.mounted_apps.clear
|
32
|
+
assert_raise Padrino::ApplicationLoadError do
|
33
|
+
Padrino.application.tap { }
|
34
|
+
end
|
35
|
+
end
|
16
36
|
end
|
17
37
|
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/helper'
|
2
|
+
|
3
|
+
PADRINO_ENV = RACK_ENV = 'test' unless defined?(PADRINO_ENV)
|
4
|
+
require File.dirname(__FILE__) + '/fixtures/simple_app/app'
|
5
|
+
require 'padrino-core'
|
6
|
+
|
7
|
+
class TestPadrinoMounter < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def app
|
10
|
+
Padrino.application.tap { }
|
11
|
+
end
|
12
|
+
|
13
|
+
def setup
|
14
|
+
Padrino.mounted_apps.clear
|
15
|
+
Padrino.mount("core_1_demo", :app_file => "#{Padrino.root("app.rb")}").to("/core_1_demo")
|
16
|
+
Padrino.mount("core_2_demo", :app_file => "#{Padrino.root("app.rb")}").to("/core_2_demo")
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'for mounter functionality' do
|
20
|
+
|
21
|
+
should 'check methods' do
|
22
|
+
mounter = Padrino::Mounter.new("test", :app_file => "/path/to/test.rb")
|
23
|
+
mounter.to("/test")
|
24
|
+
assert_kind_of Padrino::Mounter, mounter
|
25
|
+
assert_respond_to Padrino::Mounter, :new
|
26
|
+
assert_respond_to mounter, :to
|
27
|
+
assert_respond_to mounter, :map_onto
|
28
|
+
assert_equal "test", mounter.name
|
29
|
+
assert_equal "/path/to/test.rb", mounter.app_file
|
30
|
+
assert_equal "/test", mounter.uri_root
|
31
|
+
assert_nil mounter.app_root
|
32
|
+
end
|
33
|
+
|
34
|
+
should 'mount some apps' do
|
35
|
+
assert_equal ["core_1_demo", "core_2_demo"], Padrino.mounted_apps.collect(&:name)
|
36
|
+
end
|
37
|
+
|
38
|
+
should 'mount only a core' do
|
39
|
+
Padrino.mounted_apps.clear
|
40
|
+
Padrino.mount_core(:app_file => "#{Padrino.root("app.rb")}")
|
41
|
+
assert_equal ["core"], Padrino.mounted_apps.collect(&:name)
|
42
|
+
end
|
43
|
+
|
44
|
+
should 'correctly instantiate a new padrino application' do
|
45
|
+
visit '/core_1_demo'
|
46
|
+
assert_contain "Im Core1Demo"
|
47
|
+
visit '/core_2_demo'
|
48
|
+
assert_contain "Im Core2Demo"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
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.1.
|
4
|
+
version: 0.1.3
|
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: 2009-11-
|
15
|
+
date: 2009-11-20 00:00:00 -08:00
|
16
16
|
default_executable: padrino
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
@@ -110,16 +110,21 @@ files:
|
|
110
110
|
- lib/padrino-core/stat.rb
|
111
111
|
- lib/padrino-core/support_lite.rb
|
112
112
|
- lib/padrino-core/tasks.rb
|
113
|
+
- lib/padrino-core/tasks/adapter.rb
|
113
114
|
- lib/padrino-core/tasks/console.rb
|
115
|
+
- lib/padrino-core/tasks/helpers.rb
|
116
|
+
- lib/padrino-core/tasks/test.rb
|
114
117
|
- lib/padrino-core/version.rb
|
115
118
|
- padrino-core.gemspec
|
116
119
|
- test/active_support_helpers.rb
|
117
|
-
- test/fixtures/
|
120
|
+
- test/fixtures/simple_app/.components
|
121
|
+
- test/fixtures/simple_app/.gitignore
|
122
|
+
- test/fixtures/simple_app/Gemfile
|
118
123
|
- test/fixtures/simple_app/app.rb
|
119
124
|
- test/helper.rb
|
125
|
+
- test/test_padrino_application.rb
|
120
126
|
- test/test_padrino_core.rb
|
121
|
-
- test/
|
122
|
-
- test/test_padrino_tasks.rb
|
127
|
+
- test/test_padrino_mounter.rb
|
123
128
|
has_rdoc: true
|
124
129
|
homepage: http://github.com/padrino/padrino-core
|
125
130
|
licenses: []
|