mack 0.7.0.1 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +34 -0
- data/README +6 -13
- data/bin/env_handler.rb +10 -0
- data/bin/gem_load_path.rb +25 -0
- data/bin/mack +1 -0
- data/bin/mackery +22 -0
- data/bin/mackery-console +16 -0
- data/bin/mackery-server +41 -0
- data/lib/mack.rb +7 -1
- data/lib/mack/controller/controller.rb +5 -4
- data/lib/mack/controller/request.rb +19 -1
- data/lib/mack/errors/errors.rb +8 -8
- data/lib/mack/generators/controller_generator/controller_generator.rb +1 -1
- data/lib/mack/generators/mack_application_generator/templates/app/views/layouts/application.html.erb.template +1 -2
- data/lib/mack/generators/mack_application_generator/templates/config/app_config/default.yml.template +2 -0
- data/lib/mack/generators/mack_application_generator/templates/config/database.yml.template +6 -6
- data/lib/mack/generators/passenger_generator/passenger_generator.rb +2 -0
- data/lib/mack/generators/passenger_generator/templates/config.ru.template +5 -0
- data/lib/mack/generators/passenger_generator/templates/tmp/README.template +2 -0
- data/lib/mack/initialization/application.rb +39 -36
- data/lib/mack/initialization/boot_loader.rb +174 -0
- data/lib/mack/initialization/configuration.rb +83 -95
- data/lib/mack/initialization/console.rb +11 -0
- data/lib/mack/initialization/environment.rb +16 -0
- data/lib/mack/initialization/helpers.rb +26 -24
- data/lib/mack/initialization/logging.rb +81 -81
- data/lib/mack/initialization/plugins.rb +14 -11
- data/lib/mack/initialization/server/simple_server.rb +3 -3
- data/lib/mack/rendering/type/base.rb +1 -1
- data/lib/mack/rendering/type/layout.rb +1 -1
- data/lib/mack/rendering/type/partial.rb +1 -1
- data/lib/mack/rendering/type/public.rb +1 -1
- data/lib/mack/rendering/type/template.rb +1 -1
- data/lib/mack/runner.rb +2 -2
- data/lib/mack/runner_helpers/session.rb +3 -3
- data/lib/mack/sessions/cookie_session_store.rb +44 -0
- data/lib/mack/{controller → sessions}/session.rb +0 -0
- data/lib/mack/sessions/session_store_base.rb +62 -0
- data/lib/mack/sessions/test_session_store.rb +38 -0
- data/lib/mack/tasks/mack_server_tasks.rake +8 -21
- data/lib/mack/tasks/mack_tasks.rake +33 -6
- data/lib/mack/tasks/rake_rules.rake +8 -0
- data/lib/mack/tasks/test_tasks.rake +39 -15
- data/lib/mack/testing/helpers.rb +6 -39
- data/lib/mack/utils/content_length_handler.rb +45 -0
- data/lib/mack/utils/forgery_detector.rb +152 -0
- data/lib/mack/utils/gem_manager.rb +22 -1
- data/lib/mack/utils/paths.rb +154 -0
- data/lib/mack/utils/server.rb +8 -6
- data/lib/mack/version.rb +1 -1
- data/lib/mack/view_helpers/asset_helpers.rb +50 -0
- data/lib/mack/view_helpers/form_helpers.rb +52 -6
- data/lib/mack/view_helpers/link_helpers.rb +6 -3
- data/lib/mack_app.rb +12 -14
- data/lib/mack_core.rb +35 -14
- data/lib/mack_tasks.rb +35 -20
- metadata +23 -27
- data/lib/mack/tasks/cachetastic_tasks.rake +0 -58
@@ -45,17 +45,34 @@ module Mack
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
+
# Requires the gem and any libs that you've specified.
|
49
|
+
def do_task_requires
|
50
|
+
@required_gem_list.each do |g|
|
51
|
+
begin
|
52
|
+
if g.version?
|
53
|
+
gem(g.name, g.version)
|
54
|
+
else
|
55
|
+
gem(g.name)
|
56
|
+
end
|
57
|
+
g.tasks.each { |l| require l.to_s } if g.tasks?
|
58
|
+
rescue Exception => e
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
48
63
|
private
|
49
64
|
class GemObject # :nodoc:
|
50
65
|
attr_accessor :name
|
51
66
|
attr_accessor :version
|
52
67
|
attr_accessor :libs
|
68
|
+
attr_accessor :tasks
|
53
69
|
attr_accessor :source
|
54
70
|
|
55
71
|
def initialize(name, options = {})
|
56
72
|
self.name = name
|
57
73
|
self.version = options[:version]
|
58
74
|
self.libs = [options[:libs]].flatten.compact
|
75
|
+
self.tasks = [options[:tasks], "#{name}_tasks"].flatten.compact
|
59
76
|
self.source = options[:source]
|
60
77
|
end
|
61
78
|
|
@@ -66,7 +83,7 @@ module Mack
|
|
66
83
|
end
|
67
84
|
|
68
85
|
def libs?
|
69
|
-
|
86
|
+
self.libs.any?
|
70
87
|
end
|
71
88
|
|
72
89
|
def version?
|
@@ -77,6 +94,10 @@ module Mack
|
|
77
94
|
!self.source.blank?
|
78
95
|
end
|
79
96
|
|
97
|
+
def tasks?
|
98
|
+
self.tasks.any?
|
99
|
+
end
|
100
|
+
|
80
101
|
end
|
81
102
|
|
82
103
|
end # GemManager
|
@@ -0,0 +1,154 @@
|
|
1
|
+
module Mack
|
2
|
+
module Paths
|
3
|
+
|
4
|
+
# <MACK_PROJECT_ROOT>
|
5
|
+
def self.root(*files)
|
6
|
+
File.join(Mack.root, files)
|
7
|
+
end
|
8
|
+
|
9
|
+
# <MACK_PROJECT_ROOT>/public
|
10
|
+
def self.public(*files)
|
11
|
+
Mack::Paths.root("public", files)
|
12
|
+
end
|
13
|
+
|
14
|
+
# <MACK_PROJECT_ROOT>/public/images
|
15
|
+
def self.images(*files)
|
16
|
+
Mack::Paths.public("images", files)
|
17
|
+
end
|
18
|
+
|
19
|
+
# <MACK_PROJECT_ROOT>/public/javascripts
|
20
|
+
def self.javascripts(*files)
|
21
|
+
Mack::Paths.public("javascripts", files)
|
22
|
+
end
|
23
|
+
|
24
|
+
# <MACK_PROJECT_ROOT>/public/stylesheets
|
25
|
+
def self.stylesheets(*files)
|
26
|
+
Mack::Paths.public("stylesheets", files)
|
27
|
+
end
|
28
|
+
|
29
|
+
# <MACK_PROJECT_ROOT>/app
|
30
|
+
def self.app(*files)
|
31
|
+
Mack::Paths.root("app", files)
|
32
|
+
end
|
33
|
+
|
34
|
+
# <MACK_PROJECT_ROOT>/log
|
35
|
+
def self.log(*files)
|
36
|
+
Mack::Paths.root("log", files)
|
37
|
+
end
|
38
|
+
|
39
|
+
# <MACK_PROJECT_ROOT>/test
|
40
|
+
def self.test(*files)
|
41
|
+
Mack::Paths.root("test", files)
|
42
|
+
end
|
43
|
+
|
44
|
+
# <MACK_PROJECT_ROOT>/tmp
|
45
|
+
def self.tmp(*files)
|
46
|
+
Mack::Paths.root("tmp", files)
|
47
|
+
end
|
48
|
+
|
49
|
+
# <MACK_PROJECT_ROOT>/test/models
|
50
|
+
def self.model_tests(*files)
|
51
|
+
Mack::Paths.test("models", files)
|
52
|
+
end
|
53
|
+
|
54
|
+
# <MACK_PROJECT_ROOT>/test/controllers
|
55
|
+
def self.controller_tests(*files)
|
56
|
+
Mack::Paths.test("controllers", files)
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.test_helpers(*files)
|
60
|
+
Mack::Paths.test("helpers", files)
|
61
|
+
end
|
62
|
+
|
63
|
+
# <MACK_PROJECT_ROOT>/test/helpers/controllers
|
64
|
+
def self.controller_helper_tests(*files)
|
65
|
+
Mack::Paths.test_helpers("controllers", files)
|
66
|
+
end
|
67
|
+
|
68
|
+
# <MACK_PROJECT_ROOT>/test/helpers/views
|
69
|
+
def self.view_helper_tests(*files)
|
70
|
+
Mack::Paths.test_helpers("views", files)
|
71
|
+
end
|
72
|
+
|
73
|
+
# <MACK_PROJECT_ROOT>/app/views
|
74
|
+
def self.views(*files)
|
75
|
+
Mack::Paths.app("views", files)
|
76
|
+
end
|
77
|
+
|
78
|
+
# <MACK_PROJECT_ROOT>/app/views/layouts
|
79
|
+
def self.layouts(*files)
|
80
|
+
Mack::Paths.views("layouts", files)
|
81
|
+
end
|
82
|
+
|
83
|
+
# <MACK_PROJECT_ROOT>/app/controllers
|
84
|
+
def self.controllers(*files)
|
85
|
+
Mack::Paths.app("controllers", files)
|
86
|
+
end
|
87
|
+
|
88
|
+
# <MACK_PROJECT_ROOT>/app/models
|
89
|
+
def self.models(*files)
|
90
|
+
Mack::Paths.app("models", files)
|
91
|
+
end
|
92
|
+
|
93
|
+
# <MACK_PROJECT_ROOT>/app/helpers
|
94
|
+
def self.helpers(*files)
|
95
|
+
Mack::Paths.app("helpers", files)
|
96
|
+
end
|
97
|
+
|
98
|
+
# <MACK_PROJECT_ROOT>/app/helpers/controllers
|
99
|
+
def self.controller_helpers(*files)
|
100
|
+
Mack::Paths.helpers("controllers", files)
|
101
|
+
end
|
102
|
+
|
103
|
+
# <MACK_PROJECT_ROOT>/app/helpers/views
|
104
|
+
def self.view_helpers(*files)
|
105
|
+
Mack::Paths.helpers("views", files)
|
106
|
+
end
|
107
|
+
|
108
|
+
# <MACK_PROJECT_ROOT>/lib
|
109
|
+
def self.lib(*files)
|
110
|
+
Mack::Paths.root("lib", files)
|
111
|
+
end
|
112
|
+
|
113
|
+
# <MACK_PROJECT_ROOT>/lib/tasks
|
114
|
+
def self.tasks(*files)
|
115
|
+
Mack::Paths.lib("tasks", files)
|
116
|
+
end
|
117
|
+
|
118
|
+
# <MACK_PROJECT_ROOT>/db
|
119
|
+
def self.db(*files)
|
120
|
+
Mack::Paths.root("db", files)
|
121
|
+
end
|
122
|
+
|
123
|
+
# <MACK_PROJECT_ROOT>/db/migrations
|
124
|
+
def self.migrations(*files)
|
125
|
+
Mack::Paths.db("migrations", files)
|
126
|
+
end
|
127
|
+
|
128
|
+
# <MACK_PROJECT_ROOT>/config
|
129
|
+
def self.config(*files)
|
130
|
+
Mack::Paths.root("config", files)
|
131
|
+
end
|
132
|
+
|
133
|
+
# <MACK_PROJECT_ROOT>/config/app_config
|
134
|
+
def self.app_config(*files)
|
135
|
+
Mack::Paths.config("app_config", files)
|
136
|
+
end
|
137
|
+
|
138
|
+
# <MACK_PROJECT_ROOT>/config/initializers
|
139
|
+
def self.initializers(*files)
|
140
|
+
Mack::Paths.config("initializers", files)
|
141
|
+
end
|
142
|
+
|
143
|
+
# <MACK_PROJECT_ROOT>/vendor
|
144
|
+
def self.vendor(*files)
|
145
|
+
Mack::Paths.root("vendor", files)
|
146
|
+
end
|
147
|
+
|
148
|
+
# <MACK_PROJECT_ROOT>/vendor/plugins
|
149
|
+
def self.plugins(*files)
|
150
|
+
Mack::Paths.vendor("plugins", files)
|
151
|
+
end
|
152
|
+
|
153
|
+
end # Paths
|
154
|
+
end # Mack
|
data/lib/mack/utils/server.rb
CHANGED
@@ -1,33 +1,35 @@
|
|
1
1
|
module Mack
|
2
2
|
module Utils
|
3
|
-
|
3
|
+
|
4
4
|
# Houses a registry of Rack runners that should be called before the Mack::Runner.
|
5
5
|
class RunnersRegistry < Mack::Utils::RegistryList
|
6
6
|
end
|
7
|
-
|
7
|
+
|
8
8
|
module Server
|
9
|
-
|
9
|
+
|
10
10
|
# This method wraps all the necessary components of the Rack system around
|
11
11
|
# Mack::Runner. This can be used build your own server around the Mack framework.
|
12
12
|
def self.build_app
|
13
13
|
# Mack framework:
|
14
14
|
app = Mack::Runner.new
|
15
|
-
|
15
|
+
|
16
16
|
Mack::Utils::RunnersRegistry.registered_items.each do |runner|
|
17
17
|
app = runner.new(app)
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
# Any urls listed will go straight to the public directly and will not be served up via the app:
|
21
21
|
app = Rack::Static.new(app, :urls => ["/css", "/images", "/files", "/images", "/stylesheets", "/javascripts", "/media", "/favicon.ico"], :root => "public")
|
22
|
+
app = Mack::Utils::ContentLengthHandler.new(app)
|
22
23
|
app = Rack::Lint.new(app) if app_config.mack.use_lint
|
23
24
|
app = Rack::ShowStatus.new(app)
|
24
25
|
app = Rack::ShowExceptions.new(app) if app_config.mack.show_exceptions
|
25
26
|
app = Rack::Recursive.new(app)
|
27
|
+
|
26
28
|
# This will reload any edited classes if the cache_classes config setting is set to true.
|
27
29
|
app = Rack::Reloader.new(app, 1) unless app_config.mack.cache_classes
|
28
30
|
app
|
29
31
|
end
|
30
|
-
|
32
|
+
|
31
33
|
end # Server
|
32
34
|
end # Utils
|
33
35
|
end # Mack
|
data/lib/mack/version.rb
CHANGED
@@ -0,0 +1,50 @@
|
|
1
|
+
module Mack
|
2
|
+
class AssetHelpers # :nodoc:
|
3
|
+
include Singleton
|
4
|
+
|
5
|
+
#
|
6
|
+
# Set the asset hosts for this app. It supports the following format:
|
7
|
+
# - plain string: the string literal will be considered as the asset hosts (e.g. 'http://assets.foo.com')
|
8
|
+
# - formatted string: to support asset host distribution (e.g. 'http://asset%d.foo.com')
|
9
|
+
# - a proc object: to support custom asset hosts generation (e.g. Proc.new { |source| 'assets.foo.com' }
|
10
|
+
#
|
11
|
+
# The max number of distribution can be set from app_config's asset_hosts_max_distribution.
|
12
|
+
# The default value is 4
|
13
|
+
#
|
14
|
+
def asset_hosts=(host)
|
15
|
+
@hosts = host
|
16
|
+
end
|
17
|
+
|
18
|
+
#
|
19
|
+
# Return the max number of asset hosts distribution
|
20
|
+
#
|
21
|
+
def max_distribution
|
22
|
+
return app_config.asset_hosts_max_distribution.to_i || 4
|
23
|
+
end
|
24
|
+
|
25
|
+
#
|
26
|
+
# Return the asset hosts for this application.
|
27
|
+
#
|
28
|
+
def asset_hosts(source = '')
|
29
|
+
ret_val = ''
|
30
|
+
|
31
|
+
# if no explicit asset_host setting, then use the one defined in app_config (if exists)
|
32
|
+
host = @hosts || app_config.asset_hosts
|
33
|
+
host = '' if host.nil?
|
34
|
+
|
35
|
+
if host.kind_of?(Proc)
|
36
|
+
ret_val = host.call(source)
|
37
|
+
else
|
38
|
+
ret_val = sprintf(host, rand(max_distribution))
|
39
|
+
end
|
40
|
+
return ret_val
|
41
|
+
end
|
42
|
+
|
43
|
+
#
|
44
|
+
# Clear previously set configuration for asset hosts
|
45
|
+
#
|
46
|
+
def reset!
|
47
|
+
@hosts = nil
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -3,6 +3,19 @@ module Mack
|
|
3
3
|
# A useful collection of helpers for forms.
|
4
4
|
module FormHelpers
|
5
5
|
|
6
|
+
#
|
7
|
+
# Get the secret token to be added in an HTML form.
|
8
|
+
# This is to ensure that your form is valid.
|
9
|
+
#
|
10
|
+
# Only call this method if you generate the form manually.
|
11
|
+
# If you use the form() method to generate your form, then
|
12
|
+
# the authenticity token is already included in your form.
|
13
|
+
#
|
14
|
+
def form_authenticity_field
|
15
|
+
str = %{<input type="hidden" name="__authenticity_token" value="#{Mack::Utils::AuthenticityTokenDispenser.instance.dispense_token(request.session.id)}" />}
|
16
|
+
end
|
17
|
+
|
18
|
+
|
6
19
|
# Examples:
|
7
20
|
# <% form(users_create_url) do -%>
|
8
21
|
# # form stuff here...
|
@@ -31,6 +44,7 @@ module Mack
|
|
31
44
|
end
|
32
45
|
concat("<form#{build_options(options)}>\n", block.binding)
|
33
46
|
concat(meth, block.binding) unless meth.blank?
|
47
|
+
concat(form_authenticity_field, block.binding) if !app_config.mack.disable_forgery_detector
|
34
48
|
yield
|
35
49
|
concat("\n</form>", block.binding)
|
36
50
|
# content_tag(:form, options, &block)
|
@@ -38,22 +52,54 @@ module Mack
|
|
38
52
|
|
39
53
|
# Generates a button with a form around it and will set the request method to delete.
|
40
54
|
def delete_button(url, value = "Delete", form_options = {}, button_options = {})
|
41
|
-
if button_options[:confirm]
|
42
|
-
button_options[:onclick] = "if (confirm('#{button_options[:confirm]}')) {submit();}; return false;"
|
43
|
-
button_options.delete(:confirm)
|
44
|
-
end
|
45
55
|
t = "\n" << hidden_field(:_method, :value => :delete)
|
46
56
|
t << "\n" << submit_button(value, button_options)
|
47
57
|
t << "\n"
|
48
58
|
content_tag(:form, {:action => url, :method => :post}.merge(form_options), t)
|
49
59
|
end
|
50
60
|
|
51
|
-
alias_deprecated_method :submit_tag, :submit_button, '0.7.0'
|
52
|
-
|
53
61
|
# Examples:
|
54
62
|
# <%= submit_button %> # => <input type="submit" value="Submit" />
|
55
63
|
# <%= submit_button "Login" %> # => <input type="submit" value="Login" />
|
64
|
+
# You can disable the button after clicking it. In essence, this will work as follows:
|
65
|
+
# <%= submit_button "Login", :disable_with => "Please wait..." %>
|
66
|
+
# # => <input type="submit" value="Login" onclick="this.disabled=true;this.value='Please wait...';this.form.submit();" />
|
67
|
+
# Even though :disable_with will work on the onclick parameter, you can add your own onclick behaviour to the mix, as follows:
|
68
|
+
# <%= submit_button "Login", :disable_with => "Please wait...", :onclick => "alert('test')" %>
|
69
|
+
# # => <input type="submit" value="Login" onclick="this.disabled=true;this.value='Please wait...';alert('test');this.form.submit();" />
|
70
|
+
#
|
71
|
+
# Please note that if the form.submit() returns false the button's value will be restored to
|
72
|
+
# its initial value. This behaviour is acheived through the injection of a couple bits of JS
|
73
|
+
# into the onlick existing parameter. These bits are injected after the disabled value, and
|
74
|
+
# all existing onclick behaviour that you define in the :onlick option. The included JS bits
|
75
|
+
# are as follows:
|
76
|
+
# "result = (this.form.onsubmit ? (this.form.onsubmit() ? this.form.submit() : false) : this.form.submit())",
|
77
|
+
# "if (result == false) { this.value = this.getAttribute('originalValue'); this.disabled = false }",
|
78
|
+
# "return result;"
|
56
79
|
def submit_button(value = "Submit", options = {}, *original_args)
|
80
|
+
if options[:confirm]
|
81
|
+
onclick = "if (confirm('#{options.delete(:confirm)}')) {submit();}; return false;"
|
82
|
+
onclick << ";#{options.delete(:onclick)}" if options.has_key?(:onclick)
|
83
|
+
options[:onclick] = onclick
|
84
|
+
end
|
85
|
+
# processing the disable with option, which will be embebed in the onclick parameter.
|
86
|
+
if disable_with = options.delete(:disable_with)
|
87
|
+
disable_with = "this.innerHTML='#{disable_with}'"
|
88
|
+
|
89
|
+
# Making sure that we keep the content of the onclick option, should it exist.
|
90
|
+
disable_with << ";#{options.delete(:onclick)}" if options.has_key?(:onclick)
|
91
|
+
|
92
|
+
# Setting the onlick option.
|
93
|
+
options[:onclick] = [
|
94
|
+
"this.setAttribute('originalValue', this.innerHTML)",
|
95
|
+
"this.disabled=true",
|
96
|
+
disable_with,
|
97
|
+
"result = (this.form.onsubmit ? (this.form.onsubmit() ? this.form.submit() : false) : this.form.submit())",
|
98
|
+
"if (result == false) { this.innerHTML = this.getAttribute('originalValue'); this.disabled = false }",
|
99
|
+
"return result;",
|
100
|
+
].join(";")
|
101
|
+
end
|
102
|
+
|
57
103
|
# non_content_tag(:input, {:type => :submit, :value => value}.merge(options))
|
58
104
|
content_tag(:button, {:type => :submit}.merge(options), value)
|
59
105
|
end
|
@@ -129,7 +129,8 @@ module Mack
|
|
129
129
|
link = ""
|
130
130
|
files.each do |name|
|
131
131
|
file_name = !name.to_s.end_with?(".js") ? "#{name}.js" : "#{name}"
|
132
|
-
|
132
|
+
resource = "/javascripts/#{file_name}"
|
133
|
+
link += "<javascript src=\"#{get_resource_root(resource)}#{resource}?#{Time.now.to_i}\" type=\"#{options[:type]}\" />\n"
|
133
134
|
end
|
134
135
|
return link
|
135
136
|
end
|
@@ -153,16 +154,18 @@ module Mack
|
|
153
154
|
link = ""
|
154
155
|
files.each do |name|
|
155
156
|
file_name = !name.to_s.end_with?(".css") ? "#{name}.css" : "#{name}"
|
156
|
-
|
157
|
+
resource = "/stylesheets/#{file_name}"
|
158
|
+
link += "<link href=\"#{get_resource_root(resource)}#{resource}\" media=\"#{options[:media]}\" rel=\"#{options[:rel]}\" type=\"#{options[:type]}\" />\n"
|
157
159
|
end
|
158
160
|
|
159
161
|
return link
|
160
162
|
end
|
161
163
|
|
162
164
|
private
|
163
|
-
def get_resource_root
|
165
|
+
def get_resource_root(resource)
|
164
166
|
path = ""
|
165
167
|
path = "#{app_config.mack.distributed_site_domain}" if app_config.mack.distributed_site_domain
|
168
|
+
path = Mack::AssetHelpers.instance.asset_hosts(resource) if path.empty?
|
166
169
|
return path
|
167
170
|
end
|
168
171
|
|
data/lib/mack_app.rb
CHANGED
@@ -1,20 +1,18 @@
|
|
1
|
-
require 'ruby-debug'
|
2
|
-
|
3
1
|
fl = File.join(File.dirname(__FILE__), "mack")
|
2
|
+
require File.join(fl, "initialization", "application.rb")
|
3
|
+
require File.join(fl, "initialization", "helpers.rb")
|
4
|
+
require File.join(fl, "initialization", "plugins.rb")
|
4
5
|
|
5
|
-
|
6
|
+
boot_load(:start_mack_application, :configuration, :print_hello_banner, :lib, :routes, :app_files, :helpers, :runner) do
|
7
|
+
Mack::Environment.load
|
8
|
+
Mack.logger.debug "Initialization of Mack Application Environment finished."
|
9
|
+
end
|
6
10
|
|
7
|
-
|
8
|
-
|
9
|
-
Mack.logger.debug "Starting application in #{Mack.env} mode."
|
11
|
+
boot_load(:print_hello_banner, :configuration) do
|
12
|
+
Mack.reset_logger!
|
10
13
|
Mack.logger.debug "Mack root: #{Mack.root}"
|
11
14
|
Mack.logger.debug "Mack version: #{Mack::VERSION}"
|
15
|
+
Mack.logger.debug "Starting application in #{Mack.env} mode."
|
16
|
+
end
|
12
17
|
|
13
|
-
|
14
|
-
|
15
|
-
require File.join(fl, "initialization", "helpers.rb")
|
16
|
-
|
17
|
-
Mack::Configuration.initialized_application = true if Mack::Configuration.initialized_application.nil?
|
18
|
-
|
19
|
-
Mack.logger.debug "Initialization of Mack Application Environment finished."
|
20
|
-
end
|
18
|
+
Mack::BootLoader.run(:start_mack_application)
|