padrino-core 0.1.1 → 0.1.2
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/README.rdoc +12 -1
- data/VERSION +1 -1
- data/lib/padrino-core.rb +8 -15
- data/lib/padrino-core/application.rb +23 -7
- data/lib/padrino-core/loader.rb +2 -1
- data/lib/padrino-core/mounter.rb +28 -8
- data/lib/padrino-core/support_lite.rb +1 -0
- data/padrino-core.gemspec +2 -2
- metadata +2 -2
data/README.rdoc
CHANGED
@@ -1,6 +1,17 @@
|
|
1
1
|
= padrino-core
|
2
2
|
|
3
|
-
|
3
|
+
== Installation
|
4
|
+
|
5
|
+
To install the 'full-stack' padrino framework, simply grab the latest version from gemcutter:
|
6
|
+
|
7
|
+
$ sudo gem install padrino --source http://gemcutter.org
|
8
|
+
|
9
|
+
This will install the necessary padrino gems to get you started.
|
10
|
+
Now you are ready to use this gem to enhance your sinatra projects or to create new Padrino applications.
|
11
|
+
|
12
|
+
== Usage
|
13
|
+
|
14
|
+
Include padrino-core overview here
|
4
15
|
|
5
16
|
== Copyright
|
6
17
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
data/lib/padrino-core.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
require 'sinatra/base'
|
2
|
-
Dir[File.dirname(__FILE__) + '/padrino-core
|
2
|
+
Dir[File.dirname(__FILE__) + '/padrino-core/*.rb'].each {|file| require file }
|
3
3
|
|
4
4
|
# Defines our PADRINO_ENV
|
5
5
|
PADRINO_ENV = ENV["PADRINO_ENV"] ||= ENV["RACK_ENV"] ||= "development" unless defined?(PADRINO_ENV)
|
6
6
|
|
7
7
|
module Padrino
|
8
|
+
class ApplicationLoadError < RuntimeError; end
|
8
9
|
|
9
10
|
# Helper method for file references.
|
10
11
|
#
|
@@ -14,20 +15,12 @@ module Padrino
|
|
14
15
|
def self.root(*args)
|
15
16
|
File.join(PADRINO_ROOT, *args)
|
16
17
|
end
|
17
|
-
|
18
|
-
# Returns the
|
18
|
+
|
19
|
+
# Returns the resulting rack builder mapping each 'mounted' application
|
19
20
|
def self.application
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
map app.uri_root do
|
25
|
-
app_klass.set :uri_root, app.uri_root
|
26
|
-
app_klass.set :app_file, app.app_file
|
27
|
-
run app_klass
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
21
|
+
raise ApplicationLoadError.new("At least one application must be mounted onto Padrino!") if self.mounted_apps.none?
|
22
|
+
builder = Rack::Builder.new
|
23
|
+
self.mounted_apps.each { |app| app.map_onto(builder) }
|
24
|
+
builder
|
31
25
|
end
|
32
|
-
|
33
26
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
module Padrino
|
2
|
+
class ApplicationSetupError < RuntimeError; end
|
2
3
|
# Subclasses of this become independent Padrino applications (stemming from Sinatra::Application)
|
3
4
|
# These subclassed applications can be easily mounted into other Padrino applications as well.
|
4
5
|
class Application < Sinatra::Application
|
@@ -26,7 +27,7 @@ module Padrino
|
|
26
27
|
# Makes the routes defined in the block and in the Modules given
|
27
28
|
# in `extensions` available to the application
|
28
29
|
def controllers(*extensions, &block)
|
29
|
-
@routes =
|
30
|
+
@routes = Padrino::Application.dupe_routes if reload? # This performs a basic controller reload
|
30
31
|
instance_eval(&block) if block_given?
|
31
32
|
include(*extensions) if extensions.any?
|
32
33
|
end
|
@@ -41,9 +42,10 @@ module Padrino
|
|
41
42
|
protected
|
42
43
|
|
43
44
|
# Setup the application by registering initializers, load paths and logger
|
44
|
-
# Invoked automatically when an application
|
45
|
+
# Invoked automatically when an application is first instantiated
|
45
46
|
def setup_application!
|
46
47
|
return if @configured
|
48
|
+
self.calculate_paths
|
47
49
|
self.register_initializers
|
48
50
|
self.register_framework_extensions
|
49
51
|
self.require_load_paths
|
@@ -61,20 +63,27 @@ module Padrino
|
|
61
63
|
set :reload, development?
|
62
64
|
# Padrino specific
|
63
65
|
set :app_name, self.to_s.underscore.to_sym
|
64
|
-
set :app_file, Padrino.mounted_root(self.app_name.to_s, "/app.rb")
|
65
66
|
set :environment, PADRINO_ENV.to_sym
|
66
|
-
set :images_path, self.public + "/images"
|
67
67
|
set :default_builder, 'StandardFormBuilder'
|
68
68
|
enable :flash
|
69
69
|
# Plugin specific
|
70
70
|
enable :padrino_helpers
|
71
71
|
end
|
72
72
|
|
73
|
+
# Calculates any required paths after app_file and root have been properly configured
|
74
|
+
# Executes as part of the setup_application! method
|
75
|
+
def calculate_paths
|
76
|
+
raise ApplicationSetupError.new("Please specify 'app_file' configuration option!") unless self.app_file
|
77
|
+
set :views, find_view_path if find_view_path
|
78
|
+
set :images_path, File.join(self.public, "/images") unless self.respond_to?(:images_path)
|
79
|
+
end
|
80
|
+
|
73
81
|
# Requires the middleware and initializer modules to configure components
|
74
82
|
def register_initializers
|
75
83
|
use Rack::Session::Cookie
|
76
84
|
use Rack::Flash if flash?
|
77
85
|
use Padrino::Reloader if reload?
|
86
|
+
register DatabaseSetup if defined?(DatabaseSetup)
|
78
87
|
Dir[Padrino.root + '/config/initializers/*.rb'].each do |file|
|
79
88
|
Padrino.load_dependencies(file)
|
80
89
|
file_class = File.basename(file, '.rb').classify
|
@@ -91,7 +100,7 @@ module Padrino
|
|
91
100
|
|
92
101
|
# Require all files within the application's load paths
|
93
102
|
def require_load_paths
|
94
|
-
load_paths.each { |path|
|
103
|
+
load_paths.each { |path| Padrino.load_dependencies(File.join(self.root, path)) }
|
95
104
|
end
|
96
105
|
|
97
106
|
# Creates the log directory and redirects output to file if needed
|
@@ -103,9 +112,16 @@ module Padrino
|
|
103
112
|
$stderr.reopen(log)
|
104
113
|
end
|
105
114
|
|
106
|
-
# Returns the load_paths for the application relative to the application root
|
115
|
+
# Returns the load_paths for the application (relative to the application root)
|
107
116
|
def load_paths
|
108
|
-
@load_paths ||= ["
|
117
|
+
@load_paths ||= ["urls.rb", "config/urls.rb", "models/*.rb", "app/models/*.rb",
|
118
|
+
"controllers/*.rb", "app/controllers/*.rb","helpers/*.rb", "app/helpers/*.rb"]
|
119
|
+
end
|
120
|
+
|
121
|
+
# Returns the path to the views directory from root by returning the first that is found
|
122
|
+
def find_view_path
|
123
|
+
@view_paths = ["views", "app/views"].collect { |path| File.join(self.root, path) }
|
124
|
+
@view_paths.find { |path| Dir[File.join(path, '/**/*')].any? }
|
109
125
|
end
|
110
126
|
end
|
111
127
|
end
|
data/lib/padrino-core/loader.rb
CHANGED
@@ -3,7 +3,8 @@ 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}/
|
6
|
+
load_dependencies("#{root}/config/apps.rb", "#{root}/config/database.rb")
|
7
|
+
load_dependencies("#{root}/lib/**/*.rb", "#{root}/models/*.rb") # load root app dependencies
|
7
8
|
reload! # We need to fill our Stat::CACHE but we do that only for development
|
8
9
|
end
|
9
10
|
|
data/lib/padrino-core/mounter.rb
CHANGED
@@ -5,18 +5,32 @@ 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, :
|
8
|
+
attr_accessor :name, :uri_root, :app_file, :app_klass
|
9
9
|
def initialize(name, options={})
|
10
|
-
@name
|
11
|
-
@
|
12
|
-
@app_file
|
10
|
+
@name = name
|
11
|
+
@app_klass = options[:app_class] || name.classify
|
12
|
+
@app_file = options[:app_file] || Padrino.mounted_root(name, 'app.rb')
|
13
13
|
end
|
14
14
|
|
15
|
-
#
|
15
|
+
# Registers the mounted application onto Padrino
|
16
|
+
# @example Mounter.new("blog_app").to("/blog")
|
16
17
|
def to(mount_url)
|
17
18
|
@uri_root = mount_url
|
18
19
|
Padrino.mounted_apps << self
|
19
20
|
end
|
21
|
+
|
22
|
+
# Maps Padrino application onto a Rack::Builder
|
23
|
+
# For use in constructing a Rack application
|
24
|
+
# @example @app.map_onto(@builder)
|
25
|
+
def map_onto(builder)
|
26
|
+
require(self.app_file)
|
27
|
+
app_data, app_klass = self, self.app_klass.constantize
|
28
|
+
builder.map self.uri_root do
|
29
|
+
app_klass.set :uri_root, app_data.uri_root
|
30
|
+
app_klass.set :app_file, app_data.app_file
|
31
|
+
run app_klass
|
32
|
+
end
|
33
|
+
end
|
20
34
|
end
|
21
35
|
|
22
36
|
class << self
|
@@ -30,11 +44,17 @@ module Padrino
|
|
30
44
|
@mounted_apps ||= []
|
31
45
|
end
|
32
46
|
|
33
|
-
# Mounts a new sub-application onto Padrino
|
47
|
+
# Mounts a new sub-application onto Padrino project
|
34
48
|
# @example Padrino.mount("blog_app").to("/blog")
|
35
|
-
# @example Padrino.mount("blog_app", :app_file => "/path/to/root/app.rb").to("/blog")
|
36
49
|
def mount(name, options={})
|
37
50
|
Mounter.new(name, options)
|
38
51
|
end
|
52
|
+
|
53
|
+
# Mounts the core application onto Padrino project
|
54
|
+
# @example Padrino.mount_core(:app_file => "/path/to/file", :app_class => "Blog")
|
55
|
+
def mount_core(options={})
|
56
|
+
options.reverse_merge!(:app_file => Padrino.root('app.rb'))
|
57
|
+
Mounter.new("core", options).to("/")
|
58
|
+
end
|
39
59
|
end
|
40
|
-
end
|
60
|
+
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.2"
|
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-18}
|
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}
|
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.2
|
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-18 00:00:00 -08:00
|
16
16
|
default_executable: padrino
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|