mack 0.4.7 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. data/CHANGELOG +21 -2
  2. data/README +1 -4
  3. data/bin/mack +2 -2
  4. data/lib/errors/errors.rb +1 -10
  5. data/lib/generators/mack_application_generator/manifest.yml +5 -1
  6. data/lib/generators/mack_application_generator/templates/config/database.yml.template +45 -1
  7. data/lib/generators/mack_application_generator/templates/test/test_helper.rb.template +1 -1
  8. data/lib/generators/plugin_generator/templates/vendor/plugins/{<%= @plugin_name %> → %=@plugin_name%}/init.rb.template +0 -0
  9. data/lib/generators/plugin_generator/templates/vendor/plugins/{<%= @plugin_name %>/lib/<%= @plugin_name %>.rb.template → %=@plugin_name%/lib/%=@plugin_name%.rb.template} +0 -0
  10. data/lib/generators/plugin_generator/templates/vendor/plugins/{<%= @plugin_name %>/lib/tasks/<%= @plugin_name %>_tasks.rake.template → %=@plugin_name%/lib/tasks/%=@plugin_name%_tasks.rake.template} +0 -0
  11. data/lib/initialization/configuration.rb +28 -6
  12. data/lib/initialization/console.rb +2 -0
  13. data/lib/initialization/initializer.rb +23 -36
  14. data/lib/initialization/initializers/logging.rb +2 -2
  15. data/lib/initialization/initializers/orm_support.rb +4 -63
  16. data/lib/initialization/initializers/plugins.rb +1 -1
  17. data/lib/initialization/server/simple_server.rb +0 -2
  18. data/lib/mack.rb +2 -2
  19. data/lib/mack_tasks.rb +6 -0
  20. data/lib/rendering/base.rb +1 -1
  21. data/lib/rendering/classes/action.rb +1 -1
  22. data/lib/rendering/classes/public.rb +1 -1
  23. data/lib/rendering/classes/url.rb +1 -0
  24. data/lib/rendering/classes/xml.rb +1 -1
  25. data/lib/sea_level/controller_base.rb +19 -10
  26. data/lib/sea_level/helpers/view_helpers/html_helpers.rb +96 -11
  27. data/lib/sea_level/helpers/view_helpers/string_helpers.rb +22 -0
  28. data/lib/sea_level/uploaded_file.rb +1 -0
  29. data/lib/sea_level/view_binder.rb +14 -11
  30. data/lib/tasks/cachetastic_tasks.rake +11 -11
  31. data/lib/tasks/mack_server_tasks.rake +3 -3
  32. data/lib/tasks/mack_tasks.rake +2 -5
  33. data/lib/tasks/rake_rules.rake +1 -2
  34. data/lib/tasks/test_tasks.rake +22 -1
  35. data/lib/test_extensions/test_case.rb +50 -0
  36. data/lib/test_extensions/test_helpers.rb +22 -5
  37. metadata +30 -30
  38. data/lib/generators/genosaurus_helpers.rb +0 -38
  39. data/lib/generators/migration_generator/migration_generator.rb +0 -67
  40. data/lib/generators/migration_generator/templates/db/migrations/<%=@migration_name%>.rb.template +0 -31
  41. data/lib/generators/model_column.rb +0 -55
  42. data/lib/generators/model_generator/manifest.yml +0 -11
  43. data/lib/generators/model_generator/model_generator.rb +0 -93
  44. data/lib/generators/model_generator/templates/active_record.rb.template +0 -2
  45. data/lib/generators/model_generator/templates/data_mapper.rb.template +0 -11
  46. data/lib/generators/model_generator/templates/test.rb.template +0 -9
  47. data/lib/generators/scaffold_generator/manifest.yml +0 -31
  48. data/lib/generators/scaffold_generator/scaffold_generator.rb +0 -43
  49. data/lib/generators/scaffold_generator/templates/generic/app/controllers/controller.rb.template +0 -50
  50. data/lib/generators/scaffold_generator/templates/generic/app/views/edit.html.erb.template +0 -20
  51. data/lib/generators/scaffold_generator/templates/generic/app/views/index.html.erb.template +0 -41
  52. data/lib/generators/scaffold_generator/templates/generic/app/views/new.html.erb.template +0 -19
  53. data/lib/generators/scaffold_generator/templates/generic/app/views/show.html.erb.template +0 -12
  54. data/lib/generators/scaffold_generator/templates/no_orm/controller.rb.template +0 -38
  55. data/lib/generators/scaffold_generator/templates/test.rb.template +0 -9
  56. data/lib/sea_level/helpers/view_helpers/orm_helpers.rb +0 -87
  57. data/lib/tasks/db_tasks.rake +0 -94
  58. data/lib/utils/html.rb +0 -104
@@ -1,5 +1,5 @@
1
1
  plugins = [] # a list of all plugins
2
- Dir.glob(File.join(MACK_PLUGINS, "*")).each do |d|
2
+ Dir.glob(File.join(Mack::Configuration.plugins, "*")).each do |d|
3
3
  plugins << d
4
4
  $: << File.join(d, "lib") # add the lib for this plugin to the global load path
5
5
  end
@@ -2,8 +2,6 @@ module Mack
2
2
  # Even though it's called, SimpleServer, this might be the only server you need to run
3
3
  # a Mack application.
4
4
  #
5
- # $ ruby script/server
6
- #
7
5
  # This SimpleServer does not use Thin. But does work with anything that Rack has a handler for.
8
6
  class SimpleServer
9
7
 
data/lib/mack.rb CHANGED
@@ -113,8 +113,8 @@ module Mack
113
113
  if File.extname(env["PATH_INFO"]).blank?
114
114
  env["PATH_INFO"] << ".html"
115
115
  end
116
- if File.exists?(File.join(MACK_PUBLIC, env["PATH_INFO"]))
117
- return Rack::File.new(File.join(MACK_PUBLIC)).call(env)
116
+ if File.exists?(File.join(Mack::Configuration.public_directory, env["PATH_INFO"]))
117
+ return Rack::File.new(File.join(Mack::Configuration.public_directory)).call(env)
118
118
  else
119
119
  raise exception
120
120
  end
data/lib/mack_tasks.rb CHANGED
@@ -1,6 +1,12 @@
1
1
  require 'rake'
2
2
  require 'rake/testtask'
3
3
  require 'rake/rdoctask'
4
+ require 'rubygems'
5
+ require 'application_configuration'
6
+
7
+ require File.join(File.dirname(__FILE__), "initialization", "configuration.rb")
8
+ require File.join(File.dirname(__FILE__), "initialization", "initializers", "orm_support.rb")
9
+
4
10
  # Requires all rake tasks that ship with the Mack framework.
5
11
  [File.join(File.dirname(__FILE__)), File.join(FileUtils.pwd, "lib"), File.join(FileUtils.pwd, "vendor", "plugins")].each do |dir|
6
12
  begin
@@ -41,7 +41,7 @@ module Mack
41
41
  private
42
42
  # Used to render a file from disk.
43
43
  def render_file(f, options = {})
44
- options = {:is_partial => false, :ext => ".#{self.params(:format)}.erb", :dir => MACK_VIEWS}.merge(options)
44
+ options = {:is_partial => false, :ext => ".#{self.params(:format)}.erb", :dir => Mack::Configuration.views_directory}.merge(options)
45
45
  partial = f.to_s
46
46
  parts = partial.split("/")
47
47
  if parts.size == 1
@@ -10,7 +10,7 @@ module Mack
10
10
  rescue Errno::ENOENT => e
11
11
  begin
12
12
  # If the action doesn't exist on disk, try to render it from the public directory:
13
- t = render_file(options[:action], {:dir => MACK_PUBLIC, :ext => ".#{params(:format)}", :layout => false}.merge(options))
13
+ t = render_file(options[:action], {:dir => Mack::Configuration.public_directory, :ext => ".#{params(:format)}", :layout => false}.merge(options))
14
14
  # Because it's being served from public don't wrap a layout around it!
15
15
  # self.controller.instance_variable_get("@render_options").merge!({:layout => false})
16
16
  return t
@@ -5,7 +5,7 @@ module Mack
5
5
  class Public < Base
6
6
 
7
7
  def render
8
- render_file(options[:public], {:dir => MACK_PUBLIC, :ext => ".html", :layout => false}.merge(options))
8
+ render_file(options[:public], {:dir => Mack::Configuration.public_directory, :ext => ".html", :layout => false}.merge(options))
9
9
  end
10
10
 
11
11
  end
@@ -1,4 +1,5 @@
1
1
  require 'net/http'
2
+ require File.join(File.dirname(__FILE__), "..", 'base')
2
3
  module Mack
3
4
  module Rendering
4
5
  # Used when someone calls render(:url => "http://www.mackframework.com")
@@ -10,7 +10,7 @@ module Mack
10
10
  rescue Errno::ENOENT => e
11
11
  begin
12
12
  # If the action doesn't exist on disk, try to render it from the public directory:
13
- t = render_file(options[:xml], {:dir => MACK_PUBLIC, :ext => ".xml.erb", :layout => false}.merge(options.merge(:format => :xml)))
13
+ t = render_file(options[:xml], {:dir => Mack::Configuration.public_directory, :ext => ".xml.erb", :layout => false}.merge(options.merge(:format => :xml)))
14
14
  return t
15
15
  rescue Errno::ENOENT => ex
16
16
  end
@@ -77,6 +77,8 @@ module Mack
77
77
  # An implicit render will happen if one is not specified in the action.
78
78
  #
79
79
  # Only :action and :text will get layouts wrapped around them.
80
+ #
81
+ # You can also specify the response status code as part of the options hash.
80
82
  #
81
83
  # Examples:
82
84
  # class MyAwesomeController < Mack::Controller::Base
@@ -85,7 +87,7 @@ module Mack
85
87
  # render(:text => "Hello World!")
86
88
  # end
87
89
  #
88
- # # This will render MACK_ROOT/views/my_awesome_controller/foo.html.erb
90
+ # # This will render Mack::Configuration.root/views/my_awesome_controller/foo.html.erb
89
91
  # def show
90
92
  # render(:action => :foo)
91
93
  # end
@@ -96,12 +98,12 @@ module Mack
96
98
  # render(:action => :foo)
97
99
  # end
98
100
  #
99
- # # This will render MACK_ROOT/views/my_awesome_controller/delete.html.erb
101
+ # # This will render Mack::Configuration.root/views/my_awesome_controller/delete.html.erb
100
102
  # def delete
101
103
  # end
102
104
  #
103
105
  # # This will render the text 'Hello World!' to the screen. Assuming that
104
- # # there is no file: MACK_ROOT/views/my_awesome_controller/update.html.erb
106
+ # # there is no file: Mack::Configuration.root/views/my_awesome_controller/update.html.erb
105
107
  # # The reason for this is if the view for the action doesn't exist, and the
106
108
  # # last thing returned from the action is a String, that string will be returned.
107
109
  # def update
@@ -109,13 +111,13 @@ module Mack
109
111
  # end
110
112
  #
111
113
  # # This will raise a Mack::Errors::InvalidRenderType error. Assuming that
112
- # # there is no file: MACK_ROOT/views/my_awesome_controller/create.html.erb
114
+ # # there is no file: Mack::Configuration.root/views/my_awesome_controller/create.html.erb
113
115
  # def create
114
116
  # @user = User.find(1)
115
117
  # end
116
118
  #
117
119
  # # This will raise a Errno::ENOENT error. Assuming that
118
- # # there is no file: MACK_ROOT/views/my_awesome_controller/bar.html.erb
120
+ # # there is no file: Mack::Configuration.root/views/my_awesome_controller/bar.html.erb
119
121
  # def bar
120
122
  # render(:action => "bar")
121
123
  # end
@@ -137,14 +139,14 @@ module Mack
137
139
  # end
138
140
  #
139
141
  # # This will render a partial. In this case it will look for:
140
- # # MACK_ROOT/views/my_awesome_controller/_latest_news.html.erb
142
+ # # Mack::Configuration.root/views/my_awesome_controller/_latest_news.html.erb
141
143
  # # Partials do NOT get wrapped in layouts.
142
144
  # def latest_news
143
145
  # render(:partial => :latest_news)
144
146
  # end
145
147
  #
146
148
  # # This will render a partial. In this case it will look for:
147
- # # MACK_ROOT/views/some_other/_old_news.html.erb
149
+ # # Mack::Configuration.root/views/some_other/_old_news.html.erb
148
150
  # # Partials do NOT get wrapped in layouts.
149
151
  # def latest_news
150
152
  # render(:partial => "some_other/old_news")
@@ -175,9 +177,16 @@ module Mack
175
177
  # def get_index
176
178
  # render(:url => "/")
177
179
  # end
180
+ #
181
+ # # This will render 'application/404' and set the response status code to 404
182
+ # def to_the_unknown
183
+ # return render(:action => '/application/404', :status => 404)
184
+ # end
185
+ #
178
186
  # end
179
187
  def render(options = {:action => self.action_name})
180
188
  raise Mack::Errors::DoubleRender.new if render_performed?
189
+ response.status = options[:status] unless options[:status].nil?
181
190
  unless options[:action] || options[:text]
182
191
  options = {:layout => false}.merge(options)
183
192
  end
@@ -345,11 +354,11 @@ module Mack
345
354
  #
346
355
  # Example:
347
356
  # class MyAwesomeController < Mack::Controller::Base
348
- # # Sets all actions to use: "#{MACK_ROOT}/app/views/layouts/dark.html.erb" as they're layout.
357
+ # # Sets all actions to use: "#{Mack::Configuration.root}/app/views/layouts/dark.html.erb" as they're layout.
349
358
  # layout :dark
350
359
  #
351
360
  # def index
352
- # # Sets this action to use: "#{MACK_ROOT}/app/views/layouts/bright.html.erb" as it's layout.
361
+ # # Sets this action to use: "#{Mack::Configuration.root}/app/views/layouts/bright.html.erb" as it's layout.
353
362
  # render(:text => "Welcome...", :layout => :bright)
354
363
  # end
355
364
  #
@@ -359,7 +368,7 @@ module Mack
359
368
  # end
360
369
  # end
361
370
  #
362
- # The default layout is "#{MACK_ROOT}/app/views/layouts/application.html.erb".
371
+ # The default layout is "#{Mack::Configuration.root}/app/views/layouts/application.html.erb".
363
372
  #
364
373
  # If a layout is specified, and it doesn't exist a Mack::Errors::UnknownLayout error will be raised.
365
374
  def layout(lay)
@@ -2,7 +2,7 @@ module Mack
2
2
  module ViewHelpers
3
3
  module HtmlHelpers
4
4
 
5
- # This is just an alias to Mack::Utils::Html.
5
+ # This is just an alias to
6
6
  #
7
7
  # Examples:
8
8
  # <%= link_to("http://www.mackframework.com") %> # => <a href="http://www.mackframework.com">http://www.mackframework.com</a>
@@ -17,31 +17,116 @@ module Mack
17
17
  # nothing will happen. This is extremely useful for 'delete' type of links.
18
18
  # <%= link_to("Mack", "http://www.mackframework.com", :method => :delete, :confirm => "Are you sure?") %>
19
19
  def link_to(link_text, url = link_text, html_options = {})
20
- Mack::Utils::Html.href(link_text, url, html_options)
20
+ options = {:href => url}.merge(html_options)
21
+ a(link_text, options)
21
22
  end
22
23
 
23
- # A wrapper method for views that calls out to Mack::Utils::Html.
24
+ # Used in views to create href links. It takes link_text, url, and a Hash that gets added
25
+ # to the href as options.
24
26
  #
25
27
  # Examples:
26
- # <%= html.b("hello") %> # => <b>hello</b>
27
- def html
28
- Mack::Utils::Html
28
+ # a("http://www.mackframework.com") # => <a href="http://www.mackframework.com">http://www.mackframework.com</a>
29
+ # a("Mack", :href => "http://www.mackframework.com") # => <a href="http://www.mackframework.com">Mack</a>
30
+ # a("Mack", :href => "http://www.mackframework.com", :target => "_blank") # => <a href="http://www.mackframework.com" target="_blank">Mack</a>
31
+ # a("Mack", :href => "http://www.mackframework.com", :target => "_blank", :rel => :nofollow) # => <a href="http://www.mackframework.com" target="_blank" rel="nofollow">Mack</a>
32
+ # If you pass in :method as an option it will be a JavaScript form that will post to the specified link with the
33
+ # methd specified.
34
+ # a("Mack", :href => "http://www.mackframework.com", :method => :delete)
35
+ # If you use the :method option you can also pass in a :confirm option. The :confirm option will generate a
36
+ # javascript confirmation window. If 'OK' is selected the the form will submit. If 'cancel' is selected, then
37
+ # nothing will happen. This is extremely useful for 'delete' type of links.
38
+ # a("Mack", :href => "http://www.mackframework.com", :method => :delete, :confirm => "Are you sure?")
39
+ def a(link_text, options = {})
40
+ options = {:href => link_text}.merge(options)
41
+ if options[:method]
42
+ meth = nil
43
+ confirm = nil
44
+
45
+ meth = %{var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;var s = document.createElement('input'); s.setAttribute('type', 'hidden'); s.setAttribute('name', '_method'); s.setAttribute('value', '#{options[:method]}'); f.appendChild(s);f.submit()}
46
+ options.delete(:method)
47
+
48
+ if options[:confirm]
49
+ confirm = %{if (confirm('#{options[:confirm]}'))}
50
+ options.delete(:confirm)
51
+ end
52
+
53
+ options[:onclick] = (confirm ? (confirm + " { ") : "") << meth << (confirm ? (" } ") : "") << ";return false;"
54
+ end
55
+ content_tag(:a, options, link_text)
29
56
  end
30
57
 
31
- # A wrapper method for image link.
58
+ # Builds an HTML tag.
59
+ #
60
+ # Examples:
61
+ # content_tag(:b) {"hello"} # => <b>hello</b>
62
+ # content_tag("div", :class => :foo) {"hello world!"} # => <div class="foo">hello world!</div>
63
+ def content_tag(tag, options = {}, content = nil, &block)
64
+ if block_given?
65
+ concat("<#{tag}#{build_options(options)}>\n", block.binding)
66
+ yield
67
+ concat("</#{tag}>", block.binding)
68
+ else
69
+ "<#{tag}#{build_options(options)}>#{content}</#{tag}>"
70
+ end
71
+ end
72
+
73
+ # Builds an HTML tag with no content.
74
+ #
75
+ # Examples:
76
+ # non_content_tag(:br) # => <br />
77
+ # non_content_tag(:hr, :width => "100%") # => <hr width="100%" />
78
+ def non_content_tag(tag, options = {})
79
+ "<#{tag}#{build_options(options)} />"
80
+ end
81
+
82
+ # Builds a HTML image tag.
83
+ def img(image_src, options = {})
84
+ non_content_tag(:img, {:src => image_src}.merge(options))
85
+ end
86
+
87
+
88
+ # Wraps an image tag with a link tag.
32
89
  #
33
90
  # Examples:
34
91
  # <%= link_image_to("/images/foo.jpg", "#" %> # => <a href="#"><img src="/images/foo.jpg"></a>
35
92
  def link_image_to(image_url, url, image_options = {}, html_options = {})
36
- link_to(Mack::Utils::Html.image_tag(image_url, image_options), url, html_options)
93
+ link_to(img(image_url, image_options), url, html_options)
37
94
  end
38
95
 
39
- # A wrapper to Mack::Utils::Html rss method.
40
- #
41
96
  # Example:
42
97
  # <%= rss_tag(posts_index_url(:format => :xml)) %>
43
98
  def rss_tag(url)
44
- Mack::Utils::Html.rss(url)
99
+ "<link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS\" href=\"#{url}\">"
100
+ end
101
+
102
+ def form(action, options = {}, &block)
103
+ options = {:method => :post, :action => action}.merge(options)
104
+ if options[:id]
105
+ options = {:class => options[:id]}.merge(options)
106
+ end
107
+ if options[:multipart]
108
+ options = {:enctype => "multipart/form-data"}.merge(options)
109
+ options.delete(:multipart)
110
+ end
111
+ meth = nil
112
+ unless options[:method] == :get || options[:method] == :post
113
+ meth = "<input name=\"_method\" type=\"hidden\" value=\"#{options[:method]}\" />\n"
114
+ options[:method] = :post
115
+ end
116
+ concat("<form#{build_options(options)}>\n", block.binding)
117
+ concat(meth, block.binding) unless meth.blank?
118
+ yield
119
+ concat("</form>", block.binding)
120
+ # content_tag(:form, options, &block)
121
+ end
122
+
123
+ private
124
+ def build_options(options)
125
+ opts = ""
126
+ unless options.empty?
127
+ opts = " " << options.join("%s=\"%s\"", " ")
128
+ end
129
+ opts
45
130
  end
46
131
 
47
132
  end # HtmlHelpers
@@ -0,0 +1,22 @@
1
+ module Mack
2
+ module ViewHelpers
3
+ module StringHelpers
4
+
5
+ # Takes a count integer and a word and returns a phrase containing the count
6
+ # and the correct inflection of the word.
7
+ #
8
+ # Examples:
9
+ # pluralize_word(0, "error") # => "0 errors"
10
+ # pluralize_word(1, "error") # => "1 error"
11
+ # pluralize_word(2, "error") # => "2 errors"
12
+ def pluralize_word(count, word)
13
+ if count.to_i == 1
14
+ "#{count} #{word.singular}"
15
+ else
16
+ "#{count} #{word.plural}"
17
+ end
18
+ end
19
+
20
+ end # StringHelpers
21
+ end # ViewHelpers
22
+ end # Mack
@@ -1,3 +1,4 @@
1
+ require File.join(File.dirname(__FILE__), 'request')
1
2
  module Mack
2
3
  # Wraps the Hash that Rack creates when you post a file.
3
4
  class Request::UploadedFile
@@ -13,11 +13,6 @@ class Mack::ViewBinder
13
13
  @xml = Builder::XmlMarkup.new(:target => @xml_output, :indent => 1)
14
14
  end
15
15
 
16
- # Returns the binding for this class.
17
- def view_binding
18
- binding
19
- end
20
-
21
16
  # If a method can not be found then the :locals key of
22
17
  # the options is used to find the variable.
23
18
  def method_missing(sym, *args)
@@ -57,6 +52,19 @@ class Mack::ViewBinder
57
52
  raise Mack::Errors::UnknownRenderOption.new(options)
58
53
  end
59
54
 
55
+ def run(io)
56
+ # TODO: find a nicer way of doing this:
57
+ if ((controller.params(:format).to_sym == :xml) || options[:format] == :xml) && (options[:action] || options[:xml])
58
+ return eval(io, binding)
59
+ else
60
+ return Erubis::Eruby.new(io).result(binding)
61
+ end
62
+ end
63
+
64
+ def concat(txt, b)
65
+ eval( "_buf", b) << txt
66
+ end
67
+
60
68
  private
61
69
 
62
70
  # Transfer instance variables from the controller to the view.
@@ -72,12 +80,7 @@ class Mack::ViewBinder
72
80
  # and returns a String. The io can be either an IO object or a String.
73
81
  def render(io, controller, options = {})
74
82
  vb = Mack::ViewBinder.new(controller, options)
75
- # TODO: find a nicer way of doing this:
76
- if ((controller.params(:format).to_sym == :xml) || options[:format] == :xml) && (options[:action] || options[:xml])
77
- return eval(io, vb.view_binding)
78
- else
79
- return Erubis::Eruby.new(io).result(vb.view_binding)
80
- end
83
+ vb.run(io)
81
84
  end
82
85
 
83
86
  end
@@ -10,7 +10,7 @@ namespace :cachetastic do
10
10
  when "All"
11
11
  puts "About to work on ALL caches!"
12
12
  # force all caches to register themselves:
13
- ["#{MACK_ROOT}/lib/caches"].each do |dir|
13
+ ["#{Mack::Configuration.root}/lib/caches"].each do |dir|
14
14
  Find.find(dir) do |f|
15
15
  # puts f
16
16
  if FileTest.directory?(f) and !f.match(/.svn/)
@@ -55,15 +55,15 @@ namespace :cachetastic do
55
55
  end
56
56
  end
57
57
 
58
- namespace :page_cache do
59
-
60
- desc "Expires the page cache."
61
- task :expire_all => :environment do
62
- running_time do("Cachetastic::Caches::PageCache.expire_all")
63
- Cachetastic::Caches::PageCache.expire_all
64
- end
65
- end
66
-
67
- end
58
+ # namespace :page_cache do
59
+ #
60
+ # desc "Expires the page cache."
61
+ # task :expire_all => :environment do
62
+ # running_time do("Cachetastic::Caches::PageCache.expire_all")
63
+ # Cachetastic::Caches::PageCache.expire_all
64
+ # end
65
+ # end
66
+ #
67
+ # end
68
68
 
69
69
  end
@@ -22,15 +22,15 @@ namespace :mack do
22
22
  d_handler = "thin"
23
23
  rescue Exception => e
24
24
  end
25
-
26
- MACK_ROOT = FileUtils.pwd unless Object.const_defined?("MACK_ROOT")
25
+
26
+ Mack::Configuration.set(:root, FileUtils.pwd) if Mack::Configuration.root.nil?
27
27
 
28
28
  options = OpenStruct.new
29
29
  options.port = (ENV["PORT"] ||= "3000") # Does NOT work with Thin!! You must edit the thin.yml file!
30
30
  options.handler = (ENV["HANDLER"] ||= d_handler)
31
31
 
32
32
 
33
- # require File.join(MACK_ROOT, "config", "boot.rb")
33
+ # require File.join(Mack::Configuration.root, "config", "boot.rb")
34
34
  require 'mack'
35
35
 
36
36
  if options.handler == "thin"