mack 0.7.1.1 → 0.8.0

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.
Files changed (76) hide show
  1. data/CHANGELOG +32 -0
  2. data/bin/gem_load_path.rb +1 -1
  3. data/bin/mackery +0 -1
  4. data/bin/mackery-server +5 -1
  5. data/lib/mack/assets/asset_helpers.rb +51 -0
  6. data/lib/mack/assets/assets_mgr.rb +165 -0
  7. data/lib/mack/controller/controller.rb +4 -4
  8. data/lib/mack/controller/cookie_jar.rb +1 -1
  9. data/lib/mack/controller/request.rb +13 -3
  10. data/lib/mack/controller/response.rb +12 -0
  11. data/lib/mack/core_extensions/kernel.rb +69 -0
  12. data/lib/mack/core_extensions/symbol.rb +4 -0
  13. data/lib/mack/errors/errors.rb +5 -1
  14. data/lib/mack/generators/controller_generator/manifest.yml +2 -2
  15. data/lib/mack/generators/controller_helper_generator/manifest.yml +2 -2
  16. data/lib/mack/generators/mack_application_generator/manifest.yml +10 -2
  17. data/lib/mack/generators/mack_application_generator/templates/config/{app_config/default.yml.template → configatron/default.rb.template} +10 -15
  18. data/lib/mack/generators/mack_application_generator/templates/config/{app_config/development.yml.template → configatron/development.rb.template} +1 -1
  19. data/lib/mack/generators/mack_application_generator/templates/config/{app_config/production.yml.template → configatron/production.rb.template} +0 -0
  20. data/lib/mack/generators/mack_application_generator/templates/config/{app_config/test.yml.template → configatron/test.rb.template} +1 -1
  21. data/lib/mack/generators/mack_application_generator/templates/public/404.html.template +15 -0
  22. data/lib/mack/generators/mack_application_generator/templates/public/500.html.template +15 -0
  23. data/lib/mack/generators/view_helper_generator/manifest.yml +2 -2
  24. data/lib/mack/initialization/application.rb +9 -5
  25. data/lib/mack/initialization/boot_loader.rb +2 -104
  26. data/lib/mack/initialization/configuration.rb +72 -69
  27. data/lib/mack/initialization/console.rb +1 -1
  28. data/lib/mack/initialization/helpers.rb +1 -6
  29. data/lib/mack/initialization/logging/basic_layout.rb +14 -0
  30. data/lib/mack/initialization/logging/color_layout.rb +23 -0
  31. data/lib/mack/initialization/logging/filter.rb +45 -0
  32. data/lib/mack/initialization/logging.rb +33 -89
  33. data/lib/mack/initialization/plugins.rb +1 -1
  34. data/lib/mack/rendering/engine/builder.rb +3 -0
  35. data/lib/mack/rendering/engine/erubis.rb +28 -16
  36. data/lib/mack/rendering/type/file_base.rb +1 -1
  37. data/lib/mack/rendering/type/url.rb +3 -3
  38. data/lib/mack/rendering/view_template.rb +4 -7
  39. data/lib/mack/routing/resource_proxy.rb +33 -0
  40. data/lib/mack/routing/route_map.rb +122 -288
  41. data/lib/mack/routing/route_object.rb +88 -0
  42. data/lib/mack/routing/routes.rb +169 -0
  43. data/lib/mack/routing/urls.rb +39 -5
  44. data/lib/mack/runner.rb +65 -32
  45. data/lib/mack/runner_helpers/request_logger.rb +3 -3
  46. data/lib/mack/runner_helpers/session.rb +4 -4
  47. data/lib/mack/sessions/cookie_session_store.rb +3 -3
  48. data/lib/mack/sessions/session.rb +1 -1
  49. data/lib/mack/sessions/session_store_base.rb +1 -1
  50. data/lib/mack/tasks/gem_tasks.rake +156 -1
  51. data/lib/mack/tasks/mack_dump_tasks.rake +1 -1
  52. data/lib/mack/tasks/mack_update_tasks.rake +85 -1
  53. data/lib/mack/tasks/rake_rules.rake +6 -0
  54. data/lib/mack/tasks/test_tasks.rake +4 -4
  55. data/lib/mack/testing/helpers.rb +13 -6
  56. data/lib/mack/testing/rspec.rb +27 -9
  57. data/lib/mack/testing/test_case.rb +1 -1
  58. data/lib/mack/utils/ansi/ansi_color.rb +4 -1
  59. data/lib/mack/utils/forgery_detector.rb +3 -3
  60. data/lib/mack/utils/http_status_codes.rb +19 -0
  61. data/lib/mack/utils/http_status_codes.yml +55 -0
  62. data/lib/mack/utils/paths.rb +32 -32
  63. data/lib/mack/utils/reloader.rb +60 -0
  64. data/lib/mack/utils/server.rb +3 -3
  65. data/lib/mack/version.rb +1 -1
  66. data/lib/mack/view_helpers/all_helpers.rb +7 -0
  67. data/lib/mack/view_helpers/date_time_helpers.rb +16 -10
  68. data/lib/mack/view_helpers/form_helpers.rb +1 -1
  69. data/lib/mack/view_helpers/html_helpers.rb +22 -1
  70. data/lib/mack/view_helpers/link_helpers.rb +51 -10
  71. data/lib/mack/view_helpers/string_helpers.rb +1 -1
  72. data/lib/mack.rb +0 -1
  73. data/lib/mack_core.rb +8 -8
  74. data/lib/mack_tasks.rb +1 -1
  75. metadata +27 -15
  76. data/lib/mack/view_helpers/asset_helpers.rb +0 -50
data/CHANGELOG CHANGED
@@ -1,3 +1,35 @@
1
+ === 0.8.0
2
+ * [#187] Fixed: When an exception is raised, the request doesn't get 'logged'
3
+ * [#185] Fixed: .html is being appended to logged requests when there's a 404
4
+ * [#184] Request logging should also print the message of the status code
5
+ * [#183] Updates to asset mgr/host
6
+ * [#181] Content-type can now be set with calling render.
7
+ * [#179] When configatron.mack.show_exceptions is false you now either the public/404.html or public/500.html file.
8
+ * [#178] Added a configure parameter to turn off log coloring
9
+ * [#176] Added a Google Analytics helper.
10
+ * [#175] Generating urls should use host or scheme if defined
11
+ * [#171] Ability to extend resources in routes
12
+ * [#170] Regex support in routes
13
+ * [#169] Proc support for Routes
14
+ * [#168] Fixed ERB errors not being reported correctly.
15
+ * [#167] Rake task to convert app config yamls to configatron
16
+ * [#165] Asset Packager
17
+ * [#164] Response helper for 'attachments'
18
+ * [#159] Added link_unless_current and link_if helpers
19
+ * [#156] Added 'Wildcard' Routes support
20
+ * [#152] INCOMPATIBILITY NOTICE: Removed deprecated support for delivered_emails use delivered_notifiers instead.
21
+ * [#138] Added support for 'host' & 'scheme' parameters in routes
22
+ * [#135] Replaced log4r with logging gem.
23
+ * [#119] Freeze gems
24
+ * [#106] INCOMPATIBILITY NOTICE: Removed deprecated support for droute_url
25
+ * [#93] INCOMPATIBILITY NOTICE: Removed deprecated support for 'top' level ApplicationHelper
26
+ * [#23] INCOMPATIBILITY NOTICE: Removed support for application_configuration and added support for configatron
27
+ * gem: logging 0.9.4
28
+ * gem: thin 1.0.0
29
+ * gem: rspec 1.1.8
30
+ * gem: configatron 2.1.4
31
+ * gem: cachetastic 2.0.0
32
+
1
33
  === 0.7.1.1
2
34
  * [#163] Fixed jQuery code is being generated with double quotes instead of single quotes
3
35
  * [#162] Fixed View helpers for mack-javascript aren't being required
data/bin/gem_load_path.rb CHANGED
@@ -5,7 +5,7 @@ vendor_path = File.join(FileUtils.pwd, 'vendor')
5
5
 
6
6
  mack_path = File.join(vendor_path, 'framework', 'mack', 'lib')
7
7
  mack_more_path = File.join(vendor_path, 'framework', 'mack-more')
8
- # gem_path = File.join(vendor_path, 'gems')
8
+ gem_path = File.join(vendor_path, 'gems')
9
9
 
10
10
  if File.exists?(mack_path)
11
11
  $:.insert(0, File.expand_path(mack_path))
data/bin/mackery CHANGED
@@ -18,5 +18,4 @@ require File.join(File.dirname(__FILE__), "env_handler")
18
18
 
19
19
  cmd = "mackery-#{@app} #{ARGV.join(" ")}"
20
20
  cmd << " _#{@mack_gem_version}_" if @mack_gem_version
21
- # puts cmd
22
21
  system cmd
data/bin/mackery-server CHANGED
@@ -10,6 +10,11 @@ require 'rubygems'
10
10
  require 'fileutils'
11
11
  require 'thin'
12
12
 
13
+ module Rack
14
+ ADAPTERS[:mack] = 'config/configatron/default.rb' if ADAPTERS.is_a?(Hash)
15
+ ADAPTERS << [:mack, 'config/configatron/default.rb'] if ADAPTERS.is_a?(Array)
16
+ end
17
+
13
18
  require 'mack'
14
19
 
15
20
  handler = "thin"
@@ -30,7 +35,6 @@ if handler == "thin"
30
35
  thin_opts << "start"
31
36
  end
32
37
  thin_opts << ARGV
33
- # puts "thin_opts: #{thin_opts.flatten.inspect}"
34
38
  Thin::Runner.new(thin_opts.flatten.reject{|a| a.match(/^_[\d\.]+_$/)}).run!
35
39
  else
36
40
  port = 3000
@@ -0,0 +1,51 @@
1
+ module Mack
2
+ module Assets
3
+ class Helpers # :nodoc:
4
+ include Singleton
5
+
6
+ #
7
+ # Set the asset hosts for this app. It supports the following format:
8
+ # - plain string: the string literal will be considered as the asset hosts (e.g. 'http://assets.foo.com')
9
+ # - formatted string: to support asset host distribution (e.g. 'http://asset%d.foo.com')
10
+ # - a proc object: to support custom asset hosts generation (e.g. Proc.new { |source| 'assets.foo.com' }
11
+ #
12
+ # The max number of distribution can be set from configatron.mack.assets.max_distribution.
13
+ # The default value is 4
14
+ #
15
+ def asset_hosts=(host)
16
+ @hosts = host
17
+ end
18
+
19
+ #
20
+ # Return the max number of asset hosts distribution
21
+ #
22
+ def max_distribution
23
+ return configatron.mack.assets.max_distribution
24
+ end
25
+
26
+ #
27
+ # Return the asset hosts for this application.
28
+ #
29
+ def asset_hosts(source = '')
30
+ ret_val = ''
31
+
32
+ # if no explicit asset_host setting, then use the one defined in configatron (if exists)
33
+ host = @hosts || (configatron.mack.assets.hosts.nil? ? '' : configatron.mack.assets.hosts)
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
51
+ end
@@ -0,0 +1,165 @@
1
+ module Mack
2
+ module Assets
3
+ class Bundle # :nodoc:
4
+ attr_accessor :data
5
+ attr_accessor :name
6
+
7
+ def initialize(bundle_name)
8
+ self.name = bundle_name
9
+ self.data = {:javascripts => [], :stylesheets => []}
10
+ end
11
+
12
+ def assets(asset_type)
13
+ self.data[asset_type]
14
+ end
15
+
16
+ #
17
+ # Add javascript file(s) to the group/bundle
18
+ #
19
+ def add_js(files)
20
+ return add_data(files, :javascripts, '.js')
21
+ end
22
+ alias_method :javascript, :add_js
23
+
24
+ def remove_js(files)
25
+ files = [files].flatten
26
+ self.data[:javascripts] -= files
27
+ end
28
+
29
+ #
30
+ # Add stylesheet file(s) to the group/bundle
31
+ #
32
+ def add_css(files)
33
+ return add_data(files, :stylesheets, '.css')
34
+ end
35
+ alias_method :stylesheet, :add_css
36
+
37
+ def remove_css(files)
38
+ files = [files].flatten
39
+ self.data[:stylesheets] -= files
40
+ end
41
+
42
+ def reset!(type = :all)
43
+ if type == :all
44
+ self.data.keys.each do |key|
45
+ self.data[key].clear
46
+ end
47
+ else
48
+ self.data[type].clear if self.data[type]
49
+ end
50
+ end
51
+
52
+ private
53
+ def add_data(data, type, file_type)
54
+ data = [data].flatten
55
+ data.each do |elt|
56
+ elt = elt.to_s
57
+ elt += file_type if !elt.end_with?(file_type)
58
+ self.data[type.to_sym] << elt
59
+ end
60
+ return true
61
+ end
62
+
63
+ end
64
+
65
+ #
66
+ # Like the name suggests, this object will manage
67
+ # assets (i.e. scripts and stylesheets) used in a mack application.
68
+ # Developer will be able to use the manager to create
69
+ # assets groups, and refer them later in the erb file.
70
+ # <br>
71
+ # There's a convenient method available, called assets_mgr.
72
+ # Application should use that method to create new bundle, and to access
73
+ # defined bundles.
74
+ # <br>
75
+ # Example:
76
+ # # This will create new bundle called foo
77
+ # assets_mgr.foo do |a|
78
+ # a.add_js "foo"
79
+ # a.add_css "bar"
80
+ # end
81
+ #
82
+ # Note that nested group is not supported.
83
+ #
84
+ class Manager
85
+ include Singleton
86
+
87
+ def initialize # :nodoc:
88
+ @bundles = {}
89
+ end
90
+
91
+ #
92
+ # Clear the defined assets
93
+ #
94
+ def reset!
95
+ @bundles.clear
96
+ end
97
+
98
+ def method_missing(sym, *args, &block) # :nodoc:
99
+ if @bundles.has_key?(sym.to_s)
100
+ bundle = @bundles[sym.to_s]
101
+ else
102
+ bundle = Mack::Assets::Bundle.new(sym.to_s)
103
+ @bundles[sym.to_s] = bundle
104
+ end
105
+ if block_given?
106
+ yield bundle
107
+ end
108
+ return bundle
109
+ end
110
+
111
+ #
112
+ # return all groups defined for both javascript and stylesheets
113
+ #
114
+ def groups
115
+ @bundles.keys
116
+ end
117
+
118
+ #
119
+ # Return all groups defined by specified asset type
120
+ #
121
+ # <i>Params:</i>
122
+ # type -- asset type (can be either :javascript or :stylesheet)
123
+ def groups_by_asset_type(type)
124
+ arr = []
125
+ groups.each do |group|
126
+ arr << group if !@bundles[group.to_s].assets(type.to_sym).empty?
127
+ end
128
+ return arr
129
+ end
130
+
131
+ def has_group?(group, asset_type = nil)
132
+ if asset_type
133
+ return groups_by_asset_type(asset_type).include?(group.to_s)
134
+ else
135
+ return groups.include?(group)
136
+ end
137
+ end
138
+
139
+ def assets(asset_type, group)
140
+ return nil if !@bundles.has_key?(group.to_s)
141
+ return @bundles[group.to_s].assets(asset_type)
142
+ end
143
+
144
+ def javascripts(group)
145
+ return assets(:javascripts, group)
146
+ end
147
+
148
+ def stylesheets(group)
149
+ return assets(:stylesheets, group)
150
+ end
151
+ end
152
+
153
+ end
154
+ end
155
+
156
+
157
+
158
+ module Kernel
159
+ #
160
+ # Return the instance of the AssetManager class.
161
+ #
162
+ def assets_mgr
163
+ return Mack::Assets::Manager.instance
164
+ end
165
+ end
@@ -54,7 +54,7 @@ module Mack
54
54
  run_filters(:before)
55
55
  # check to see if this controller responds to this action.
56
56
  # only run public methods!
57
- if self.public_methods.include?(self.action_name)
57
+ if self.public_methods.include?(self.action_name.to_s)
58
58
  # call the action and capture the results to a variable.
59
59
  self.send(self.action_name)
60
60
  else
@@ -260,9 +260,9 @@ module Mack
260
260
  # end
261
261
  def render(render_type = :action, render_value = self.action_name, options = {})
262
262
  raise Mack::Errors::DoubleRender.new if render_performed?
263
- response.status = options[:status] unless options[:status].nil?
264
- options = {:content_type => Mack::Utils::MimeTypes[params[:format]], :layout => layout}.merge(options)
265
- response["Content-Type"] = options[:content_type]
263
+ response.status = options[:status] if options[:status]
264
+ options = {:layout => layout}.merge(options)
265
+ response.content_type = options[:content_type] if options[:content_type]
266
266
  options.delete(:content_type)
267
267
  @view_template = Mack::Rendering::ViewTemplate.new(render_type, render_value,
268
268
  {:format => params[:format].to_sym, :controller => self}.merge(options))
@@ -43,7 +43,7 @@ module Mack
43
43
  unless value.is_a?(Hash)
44
44
  value = {:value => value}
45
45
  end
46
- value = app_config.mack.cookie_values.symbolize_keys.merge(value)
46
+ value = configatron.mack.cookie_values.to_hash.symbolize_keys.merge(value)
47
47
  self.all_cookies[key] = value
48
48
  self.response.set_cookie(key, value)
49
49
  end
@@ -3,13 +3,18 @@ module Mack
3
3
  class Request < Rack::Request
4
4
 
5
5
  class Parameters < Hash # :nodoc:
6
- alias_method :old_hash, :[]
6
+ alias_instance_method :[], :old_hash
7
+ alias_instance_method :store
7
8
  def [](key)
8
9
  data = old_hash(key.to_sym) || old_hash(key.to_s)
9
10
  data = data.to_s if data.is_a?(Symbol)
10
11
  return data
11
12
  end
12
13
 
14
+ def []=(key, value)
15
+ _original_store(key.to_sym, value)
16
+ end
17
+
13
18
  def to_s
14
19
  s = self.inspect
15
20
  Mack::Logging::Filter.list.each do |p|
@@ -27,7 +32,7 @@ module Mack
27
32
  parse_params(rack_params)
28
33
  end
29
34
 
30
- alias_method :rack_params, :params # :nodoc:
35
+ alias_instance_method :params, :rack_params # :nodoc:
31
36
 
32
37
  # Merges another Hash with the parameters for this request.
33
38
  def merge_params(opts = {})
@@ -85,7 +90,12 @@ module Mack
85
90
  @mack_params
86
91
  end
87
92
 
88
- alias_method :all_params, :params
93
+ def params=(p) # :nodoc:
94
+ @mack_params = Mack::Request::Parameters.new
95
+ parse_params(p)
96
+ end
97
+
98
+ alias_instance_method :params, :all_params
89
99
 
90
100
  # Returns a Mack::Request::UploadedFile object.
91
101
  def file(key)
@@ -9,5 +9,17 @@ module Mack
9
9
  self.controller.instance_variable_get("@#{key}")
10
10
  end
11
11
 
12
+ def attachment=(file_name)
13
+ self['Content-Disposition'] = "attachment; filename=#{file_name}"
14
+ end
15
+
16
+ def content_type=(type)
17
+ self['Content-Type'] = type
18
+ end
19
+
20
+ def content_type
21
+ self['Content-Type']
22
+ end
23
+
12
24
  end
13
25
  end
@@ -41,6 +41,75 @@ module Kernel
41
41
  end
42
42
  end
43
43
 
44
+ unless Module.const_defined?('GEM_MOD')
45
+ Module.const_set('GEM_MOD', 1)
46
+
47
+ alias_instance_method :gem, :old_gem
48
+
49
+ def gem(gem_name, *version_requirements)
50
+ vendor_path = File.join(Mack.root, 'vendor')
51
+ gem_path = File.join(vendor_path, 'gems')
52
+
53
+ # try to normalize the version requirement string
54
+ ver = version_requirements.to_s.strip
55
+ ver = "> 0.0.0" if ver == nil or ver.empty?
56
+ # if the version string starts with number, then prepend = to it (since the developer wants an exact match)
57
+ ver = "= " + ver if ver[0,1] != '=' and ver[0,1] != '>' and ver[0,1] != '<'
58
+
59
+ num = ver.match(/\d.+/).to_s
60
+ op = ver.delete(num).strip
61
+ op += "=" if op == '='
62
+
63
+ found_local_gem = false
64
+
65
+ Dir.glob(File.join(gem_path, "#{gem_name}*")).each_with_index do |file, i|
66
+ # all frozen gem has the pattern [gem_name]-[version]
67
+ next if !file.include?'-'
68
+
69
+ # make sure we're not loading gem with almost the same name, e.g. "#{gem_name}-foo_bar-0.89.1"
70
+ file_gem_name = file.match(/\D*-/).to_s
71
+ next if !file.starts_with?(file_gem_name)
72
+
73
+ # find the version number from the file name
74
+ file_ver = file.match(/\d.+/).to_s
75
+
76
+ # generate number comparison string that we can evaluate, to make sure that we
77
+ # pick the correct gem based on the requested version requirements
78
+ comparison = "'#{file_ver}' #{op} '#{num}'" # e.g.: "'0.8.0' > '0.0.0'"
79
+
80
+ # if we find the match (i.e. the comparison string checks out) then
81
+ # read the frozen spec file in that directory (so we can see what the require path is)
82
+ # and prepend the new require path(s) to the global search path.
83
+ # If we didn't find it, then continue to look (obviously)
84
+ if eval(comparison)
85
+ spec_file = File.join(file, 'spec.yaml')
86
+
87
+ if File.exists?(spec_file)
88
+ spec = YAML.load(File.read(spec_file))
89
+ else
90
+ spec = nil
91
+ end
92
+
93
+ if spec and spec.require_path
94
+ spec.require_path.each { |rp| $:.insert(0, File.expand_path(File.join(file, rp))) }
95
+ else
96
+ $:.insert(0, File.expand_path(file))
97
+ end
98
+
99
+ found_local_gem = true
100
+ break
101
+ end
102
+ end
103
+
104
+ # if After going through the vendor/gems folder and we still didn't find
105
+ # any frozen gem that matched the criteria, then call the system's gem loader
106
+ if !found_local_gem
107
+ # puts "Loading installed gem: #{gem_name}"
108
+ old_gem(gem_name, *version_requirements)
109
+ end
110
+ end
111
+ end
112
+
44
113
  private
45
114
  class DeprecatedRegistryList < Mack::Utils::RegistryList # :nodoc:
46
115
  end
@@ -1,5 +1,9 @@
1
1
  class Symbol
2
2
 
3
+ def method_missing(sym, *args)
4
+ self.to_s.send(sym, *args)
5
+ end
6
+
3
7
  # See Mack::ViewHelpers::FormHelpers date_time_select for more information
4
8
  def date_time_select(*args)
5
9
  Thread.current[:view_template].date_time_select(self, *args)
@@ -56,7 +56,11 @@ module Mack
56
56
  class UndefinedRoute < StandardError
57
57
  # Takes a request object.
58
58
  def initialize(req)
59
- super("#{req.path_info}; #{req.request_method}")
59
+ if req.is_a?(Mack::Request)
60
+ super("#{req.path_info}; #{req.request_method}")
61
+ else
62
+ super(req)
63
+ end
60
64
  end
61
65
  end # UndefinedRoute
62
66
 
@@ -5,12 +5,12 @@ controller_template:
5
5
  views_migrations:
6
6
  type: directory
7
7
  output_path: <%= File.join("app", "views", @name_plural) %>
8
- <% if app_config.mack.testing_framework == "test_case" -%>
8
+ <% if configatron.mack.testing_framework.to_s == "test_case" -%>
9
9
  test_template:
10
10
  type: file
11
11
  template_path: <%= File.join(templates_directory_path, "test", "controllers", "test_case.rb.template") %>
12
12
  output_path: <%= File.join("test", "controllers", "#{@name_plural}_controller_test.rb") %>
13
- <% elsif app_config.mack.testing_framework == "rspec" -%>
13
+ <% elsif configatron.mack.testing_framework.to_s == "rspec" -%>
14
14
  test_template:
15
15
  type: file
16
16
  template_path: <%= File.join(templates_directory_path, "test", "controllers", "rspec.rb.template") %>
@@ -2,12 +2,12 @@ helper_template:
2
2
  type: file
3
3
  template_path: <%= File.join(templates_directory_path, "app", "helpers", "controllers", "helper.rb.template") %>
4
4
  output_path: <%= File.join("app", "helpers", "controllers", "#{@name_plural}_controller_helper.rb") %>
5
- <% if app_config.mack.testing_framework == "test_case" -%>
5
+ <% if configatron.mack.testing_framework.to_s == "test_case" -%>
6
6
  helper_test_template:
7
7
  type: file
8
8
  template_path: <%= File.join(templates_directory_path, "test", "helpers", "controllers", "test_case.rb.template") %>
9
9
  output_path: <%= File.join("test", "helpers", "controllers", "#{@name_plural}_controller_helper_test.rb") %>
10
- <% elsif app_config.mack.testing_framework == "rspec" -%>
10
+ <% elsif configatron.mack.testing_framework.to_s == "rspec" -%>
11
11
  helper_test_template:
12
12
  type: file
13
13
  template_path: <%= File.join(templates_directory_path, "test", "helpers", "controllers", "rspec.rb.template") %>
@@ -22,8 +22,8 @@ application_layout:
22
22
  <% ["default", "development", "production", "test"].each do |env| -%>
23
23
  <%= env %>_yml:
24
24
  type: file
25
- template_path: <%= File.join(templates_directory_path, "config", "app_config", "#{env}.yml.template") %>
26
- output_path: <%= File.join(app_name, "config", "app_config", "#{env}.yml") %>
25
+ template_path: <%= File.join(templates_directory_path, "config", "configatron", "#{env}.rb.template") %>
26
+ output_path: <%= File.join(app_name, "config", "configatron", "#{env}.rb") %>
27
27
  <% end -%>
28
28
  database_yml:
29
29
  type: file
@@ -43,6 +43,14 @@ favicon:
43
43
  type: file
44
44
  template_path: <%= File.join(templates_directory_path, "public", "favicon.ico.template") %>
45
45
  output_path: <%= File.join(app_name, "public", "favicon.ico") %>
46
+ 404:
47
+ type: file
48
+ template_path: <%= File.join(templates_directory_path, "public", "404.html.template") %>
49
+ output_path: <%= File.join(app_name, "public", "404.html") %>
50
+ 500:
51
+ type: file
52
+ template_path: <%= File.join(templates_directory_path, "public", "500.html.template") %>
53
+ output_path: <%= File.join(app_name, "public", "500.html") %>
46
54
  scaffold_css:
47
55
  type: file
48
56
  template_path: <%= File.join(templates_directory_path, "public", "stylesheets", "scaffold.css.template") %>
@@ -6,29 +6,24 @@
6
6
  #
7
7
  # Configuration parameters can be used in your application like such:
8
8
  #
9
- # app_config.<setting_name>
9
+ # configatron.<setting_name>
10
10
  #
11
11
  # Nested parameters can be defined using ::.
12
12
  #
13
13
  # Examples:
14
- # default.yml:
15
- # default_time_limit: <%%= 15.minutes %>
16
- # api::timeout_limit: <%%= 15.seconds %>
14
+ # default.rb:
15
+ # configatron.default_time_limit: <%%= 15.minutes %>
16
+ # configatron.api.timeout_limit: <%%= 15.seconds %>
17
17
  #
18
- # app_config.default_time_limit # => 900
19
- # app_config.api.timeout_limit # => 15
18
+ # configatron.default_time_limit # => 900
19
+ # configatron.api.timeout_limit # => 15
20
20
 
21
-
22
- whiny_config_missing: false
23
-
24
- mack::session_id: _<%= @options["app"].downcase %>_session_id
25
-
26
- mack::testing_framework: <%= @options["testing_framework"] %>
27
-
28
- default_secret_key: <%= String.randomize(80) %>
21
+ configatron.mack.session_id = '_<%= @options["app"].downcase %>_session_id'
22
+ configatron.mack.testing_framework = '<%= @options["testing_framework"] %>'
23
+ configatron.default_secret_key = '<%= String.randomize(80) %>'
29
24
 
30
25
  # Mack provides RJS support through mack-javascript gem.
31
26
  # In order to have RJS support, you will need to perform the following steps:
32
27
  # 1. Uncomment the code below, and make sure that the framework is the one you want to use
33
28
  # 2. run: rake generate:javascript
34
- # mack::js_framework: <%= @options["js_framework"] %>
29
+ # configatron.mack.js_framework = '<%= @options["js_framework"] %>'
@@ -1 +1 @@
1
- # Any settings in here will override the settings in default.yml for the development environment.
1
+ # Any settings in here will override the settings in default.yml for the development environment.
@@ -1 +1 @@
1
- # Any settings in here will override the settings in default.yml for the test environment.
1
+ # Any settings in here will override the settings in default.yml for the test environment.
@@ -0,0 +1,15 @@
1
+ <html>
2
+ <head>
3
+ <title>Page Not Found! (404)</title>
4
+ <style>
5
+ body {
6
+ font-family: Verdana;
7
+ }
8
+ </style>
9
+ </head>
10
+ <body>
11
+ <h1>Page Not Found!</h1>
12
+
13
+ <p>We're sorry the page you have tried to access does not appear to exist. Please check the URL and try again.</p>
14
+ </body>
15
+ </html>
@@ -0,0 +1,15 @@
1
+ <html>
2
+ <head>
3
+ <title>Server Error! (500)</title>
4
+ <style>
5
+ body {
6
+ font-family: Verdana;
7
+ }
8
+ </style>
9
+ </head>
10
+ <body>
11
+ <h1>Server Error!</h1>
12
+
13
+ <p>We're sorry there appears to be a problem. Please try back again later.</p>
14
+ </body>
15
+ </html>
@@ -2,12 +2,12 @@ helper_template:
2
2
  type: file
3
3
  template_path: <%= File.join(templates_directory_path, "app", "helpers", "views", "helper.rb.template") %>
4
4
  output_path: <%= File.join("app", "helpers", "views", "#{@name_singular}_helper.rb") %>
5
- <% if app_config.mack.testing_framework == "test_case" -%>
5
+ <% if configatron.mack.testing_framework.to_s == "test_case" -%>
6
6
  helper_test_template:
7
7
  type: file
8
8
  template_path: <%= File.join(templates_directory_path, "test", "helpers", "views", "test_case.rb.template") %>
9
9
  output_path: <%= File.join("test", "helpers", "views", "#{@name_singular}_helper_test.rb") %>
10
- <% elsif app_config.mack.testing_framework == "rspec" -%>
10
+ <% elsif configatron.mack.testing_framework.to_s == "rspec" -%>
11
11
  helper_test_template:
12
12
  type: file
13
13
  template_path: <%= File.join(templates_directory_path, "test", "helpers", "views", "rspec.rb.template") %>