rango 0.1.1 → 0.1.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -18,7 +18,7 @@
18
18
  * [FEATURE] Hooks for Rendering
19
19
  * [SPECS] Integration with RunCodeRun.com
20
20
  * [SPECS] All specs passing
21
- * SimpleTemplater, RubyExts & CLI
21
+ * SimpleTemplater, RubyExts & CLI
22
22
  * [FEATURE] Bundler Support
23
23
  * [FEATURE] Generic view
24
24
  * [FEATURE] Project generator
@@ -27,5 +27,9 @@
27
27
  = Version 0.1.1
28
28
  * Tilt support
29
29
  * Removed old merb-helpers
30
- * Templates are rendered in separate namespace
31
30
  * Reworked generic views
31
+ * Default attributes for Haml
32
+ * MessagesMixin and FiltersMixin were divided from Rango::Controller
33
+ * Shebang is just ruby rather than ruby1.9, so it plays well with rvm
34
+ * ImplicitRendering and ExplicitRendering mixins for using locals
35
+ vs. rendering in context of current controller instance
data/Rakefile CHANGED
@@ -1,79 +1,12 @@
1
- #!/usr/bin/env rake1.9
2
1
  # encoding: utf-8
3
2
 
4
3
  # http://support.runcoderun.com/faqs/builds/how-do-i-run-rake-with-trace-enabled
5
4
  Rake.application.options.trace = true
6
5
 
7
- task :setup => ["submodules:init"]
6
+ # default task for RunCodeRun.com
7
+ task :default => ["submodules:init", :spec]
8
8
 
9
- namespace :submodules do
10
- desc "Init submodules"
11
- task :init do
12
- sh "git submodule init"
13
- end
14
-
15
- desc "Update submodules"
16
- task :update do
17
- Dir["vendor/*"].each do |path|
18
- if File.directory?(path) && File.directory?(File.join(path, ".git"))
19
- Dir.chdir(path) do
20
- puts "=> #{path}"
21
- puts %x[git reset --hard]
22
- puts %x[git fetch]
23
- puts %x[git reset origin/master --hard]
24
- puts
25
- end
26
- end
27
- end
28
- end
29
- end
30
-
31
- task :gem do
32
- sh "gem build rango.gemspec"
33
- end
34
-
35
- namespace :gem do
36
- task :prerelease do
37
- require_relative "lib/rango"
38
- gemspec = Dir["*.gemspec"].first
39
- content = File.read(gemspec)
40
- prename = "#{gemspec.split(".").first}.pre.gemspec"
41
- version = Rango::VERSION.sub(/^(\d+)\.(\d+)\.\d+$/) { "#$1.#{$1.to_i + 1}" }
42
- File.open(prename, "w") do |file|
43
- file.puts(content.gsub(/(\w+::VERSION)/, "'#{version}.pre'"))
44
- end
45
- sh "gem build #{prename}"
46
- rm prename
47
- end
48
- end
49
-
50
- desc "Release new version of rango"
51
- task release: ["release:tag", "release:gemcutter"]
52
-
53
- namespace :release do
54
- desc "Create Git tag"
55
- task :tag do
56
- require_relative "lib/rango"
57
- puts "Creating new git tag #{Rango::VERSION} and pushing it online ..."
58
- sh "git tag -a -m 'Version #{Rango::VERSION}' #{Rango::VERSION}"
59
- sh "git push --tags"
60
- puts "Tag #{Rango::VERSION} was created and pushed to GitHub."
61
- end
62
-
63
- desc "Push gem to Gemcutter"
64
- task :gemcutter do
65
- puts "Pushing to Gemcutter ..."
66
- sh "gem push #{Dir["*.gem"].last}"
67
- end
68
-
69
- desc "Create and push prerelease gem"
70
- task :pre => ["gem:prerelease", :gemcutter]
71
- end
72
-
73
- desc "Run specs"
74
- task :default => :setup do
75
- rubylib = (ENV["RUBYLIB"] || String.new).split(":")
76
- libdirs = Dir["vendor/*/lib"]
77
- ENV["RUBYLIB"] = (libdirs + rubylib).join(":")
78
- exec "./script/spec --options spec/spec.opts spec"
9
+ # load tasks
10
+ Dir["tasks/*.rake"].each do |taskfile|
11
+ load taskfile
79
12
  end
data/lib/rango.rb CHANGED
@@ -19,7 +19,7 @@ end
19
19
  Encoding.default_internal = "utf-8"
20
20
 
21
21
  module Rango
22
- VERSION ||= "0.1.1"
22
+ VERSION ||= "0.1.1.1"
23
23
  extend ApplicationMixin
24
24
 
25
25
  def self.root
@@ -2,113 +2,54 @@
2
2
 
3
3
  # http://wiki.github.com/botanicus/rango/controllers
4
4
 
5
- require "rango/mixins/render"
5
+ require "rango/router"
6
6
  require "rango/exceptions"
7
- require "rango/project"
8
7
  require "rango/rack/request"
9
- require "rango/router"
10
- require "rango/templates/template"
11
8
 
12
9
  module Rango
13
10
  class Controller
14
- include Rango::Helpers
15
- include Rango::RenderMixin
16
-
17
- class << self
18
- # @since 0.0.2
19
- attribute :before_filters, Hash.new
20
-
21
- # @since 0.0.2
22
- attribute :after_filters, Hash.new
23
-
24
- def inherited(subclass)
25
- inherit_filters(subclass, :before)
26
- inherit_filters(subclass, :after)
27
- inherit_filters(subclass, :before_render)
28
- inherit_filters(subclass, :after_render)
29
- inherit_filters(subclass, :before_display)
30
- inherit_filters(subclass, :after_display)
31
- end
32
-
33
- def inherit_filters(subclass, name)
34
- subclass.send("#{name}_filters=", self.send("#{name}_filters").dup)
35
- end
36
-
37
- # before :login
38
- # before :login, actions: [:send]
39
- # @since 0.0.2
40
- def before(action = nil, options = Hash.new, &block)
41
- self.before_filters[action || block] = options
42
- end
43
-
44
- # @since 0.0.2
45
- def after(action = nil, options = Hash.new, &block)
46
- self.after_filters[action || block] = options
47
- end
48
-
49
- attribute :before_render_filters, Array.new
50
- attribute :after_render_filters, Array.new
51
-
52
- attribute :before_display_filters, Array.new
53
- attribute :after_display_filters, Array.new
54
-
55
- # [master] Change Merb::Controller to respond to #call and return a Rack Array. (wycats)http://rubyurl.com/BhoY
56
- # @since 0.0.2
57
- def call(env)
58
- Rango::Router.set_rack_env(env) # See rango/router/adapters/*
59
- request = Rango::Request.new(env)
60
- options = env["rango.router.params"] || raise("rango.router.params property has to be setup at least to empty hash")
61
- method = env["rango.controller.action"].to_sym
62
- controller = self.new(env, options.merge(request.params))
63
- begin
64
- unless controller.respond_to?(method) # TODO: what about method_missing?
65
- raise NotFound, "Controller #{self.name} doesn't have method #{method}"
66
- end
67
- controller.run_filters(:before, method.to_sym)
68
- # If you don't care about arguments or if you prefer usage of params.
69
- if controller.method(method).arity.eql?(0)
70
- Rango.logger.debug("Calling method #{self.name}##{method} without arguments")
71
- controller.response.body = controller.method(method).call
72
- else
73
- args = controller.params.values
74
- Rango.logger.debug("Calling method #{self.name}##{method} with arguments #{args.inspect}")
75
- controller.response.body = controller.method(method).call(*args)
76
- end
77
- controller.run_filters(:after, method)
78
- return controller.response.finish
79
- rescue HttpError => exception
80
- controller.rescue_http_error(exception)
11
+ # [master] Change Merb::Controller to respond to #call and return a Rack Array. (wycats)http://rubyurl.com/BhoY
12
+ # @since 0.0.2
13
+ def self.call(env)
14
+ Rango::Router.set_rack_env(env)
15
+ request = Rango::Request.new(env)
16
+ options = env["rango.router.params"] || raise("rango.router.params property has to be setup at least to empty hash")
17
+ method = env["rango.controller.action"].to_sym
18
+ controller = self.new(env, options.merge(request.params))
19
+ begin
20
+ unless controller.respond_to?(method) # TODO: what about method_missing?
21
+ raise NotFound, "Controller #{self.name} doesn't have method #{method}"
81
22
  end
82
- end
83
-
84
- # @experimental
85
- def route_to(env, action, params = Hash.new)
86
- env["rango.controller"] = self
87
- env["rango.controller.action"] = action
88
- env["rango.router.params"] = params
89
- env["rango.action"] = action
90
- Rango::Router::Dispatcher.route_to(env, self)
91
- end
92
-
93
- # for routers
94
- def dispatcher(action)
95
- lambda do |env|
96
- Rango.logger.info("Dispatching to #{self}##{action} [#{env["REQUEST_METHOD"]} #{env["PATH_INFO"]}]")
97
- env["rango.controller.action"] = action
98
- return self.call(env)
23
+ controller.run_filters(:before, method.to_sym)
24
+ # If you don't care about arguments or if you prefer usage of params.
25
+ if controller.method(method).arity.eql?(0)
26
+ Rango.logger.debug("Calling method #{self.name}##{method} without arguments")
27
+ controller.response.body = controller.method(method).call
28
+ else
29
+ args = controller.params.values
30
+ Rango.logger.debug("Calling method #{self.name}##{method} with arguments #{args.inspect}")
31
+ controller.response.body = controller.method(method).call(*args)
99
32
  end
33
+ controller.run_filters(:after, method)
34
+ return controller.response.finish
35
+ rescue HttpError => exception
36
+ controller.rescue_http_error(exception)
100
37
  end
38
+ end
101
39
 
102
- # @since 0.0.2
103
- def get_filters(type)
104
- self.send("#{type}_filters")
40
+ # for routers
41
+ def self.dispatcher(action)
42
+ lambda do |env|
43
+ Rango.logger.info("Dispatching to #{self}##{action} [#{env["REQUEST_METHOD"]} #{env["PATH_INFO"]}]")
44
+ env["rango.controller.action"] = action
45
+ return self.call(env)
105
46
  end
106
47
  end
107
48
 
108
49
  # @since 0.0.1
109
50
  # @return [RubyExts::Logger] Logger for logging project related stuff.
110
51
  # @see RubyExts::Logger
111
- attribute :logger, Project.logger
52
+ attribute :logger, Rango.logger
112
53
  attribute :status
113
54
  attribute :headers, Hash.new
114
55
 
@@ -120,27 +61,9 @@ module Rango
120
61
  # @return [Hash] Hash with params from request. For example <code>{messages: {success: "You're logged in"}, post: {id: 2}}</code>
121
62
  attr_accessor :params
122
63
 
123
- # The rails-style flash messages
124
- # @since 0.0.2
125
- def message
126
- @message ||= (request.GET[:msg] || Hash.new)
127
- end
128
-
129
- def render(template, locals = Hash.new)
130
- super template, self.locals.merge!(locals)
131
- end
132
-
133
64
  # @since 0.0.2
134
65
  def redirect(url, options = Hash.new)
135
66
  self.status = 302
136
-
137
- # for example ?msg[error]=foo
138
- [:error, :success, :notice].each do |type|
139
- if msg = (options[type] || message[type])
140
- url.concat("?msg[#{type}]=#{msg}")
141
- end
142
- end
143
-
144
67
  self.headers["Location"] = URI.escape(url)
145
68
  return String.new
146
69
  end
@@ -155,10 +78,6 @@ module Rango
155
78
  end
156
79
  attr_reader :session
157
80
 
158
- def route_to(action, params = Hash.new)
159
- self.class.route_to(request.env, action, params)
160
- end
161
-
162
81
  # redefine this method for your controller if you want to provide custom error pages
163
82
  # returns response array for rack
164
83
  # if you need to change just body of error message, define render_http_error method
@@ -171,24 +90,5 @@ module Rango
171
90
  [status, headers, body]
172
91
  end
173
92
  end
174
-
175
- # @since 0.0.2
176
- def run_filters(name, method)
177
- # Rango.logger.debug(self.class.instance_variables)
178
- # Rango.logger.inspect(name: name, method: method)
179
- self.class.get_filters(name).each do |filter_method, options|
180
- unless options[:except] && options[:except].include?(method)
181
- if filter_method.is_a?(Symbol) && self.respond_to?(filter_method)
182
- Rango.logger.info("Calling filter #{filter_method} for controller #{self}")
183
- self.send(filter_method)
184
- elsif filter_method.respond_to?(:call)
185
- Rango.logger.info("Calling filter #{filter_method.inspect} for controller #{self}")
186
- self.instance_eval(&filter_method)
187
- else
188
- Rango.logger.error("Filter #{filter_method} doesn't exists!")
189
- end
190
- end
191
- end
192
- end
193
93
  end
194
94
  end
@@ -0,0 +1,70 @@
1
+ # encoding: utf-8
2
+
3
+ module Rango
4
+ module FiltersMixin
5
+ def self.included(controller)
6
+ controller.extend(ClassMethods)
7
+ end
8
+
9
+ # @since 0.0.2
10
+ def run_filters(name, method)
11
+ # Rango.logger.debug(self.class.instance_variables)
12
+ # Rango.logger.inspect(name: name, method: method)
13
+ self.class.get_filters(name).each do |filter_method, options|
14
+ unless options[:except] && options[:except].include?(method)
15
+ if filter_method.is_a?(Symbol) && self.respond_to?(filter_method)
16
+ Rango.logger.info("Calling filter #{filter_method} for controller #{self}")
17
+ self.send(filter_method)
18
+ elsif filter_method.respond_to?(:call)
19
+ Rango.logger.info("Calling filter #{filter_method.inspect} for controller #{self}")
20
+ self.instance_eval(&filter_method)
21
+ else
22
+ Rango.logger.error("Filter #{filter_method} doesn't exists!")
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ module ClassMethods
29
+ def inherited(subclass)
30
+ inherit_filters(subclass, :before)
31
+ inherit_filters(subclass, :after)
32
+ inherit_filters(subclass, :before_render)
33
+ inherit_filters(subclass, :after_render)
34
+ inherit_filters(subclass, :before_display)
35
+ inherit_filters(subclass, :after_display)
36
+ end
37
+
38
+ def inherit_filters(subclass, name)
39
+ subclass.send("#{name}_filters=", self.send("#{name}_filters").dup)
40
+ end
41
+
42
+ # before :login
43
+ # before :login, actions: [:send]
44
+ # @since 0.0.2
45
+ def before(action = nil, options = Hash.new, &block)
46
+ self.before_filters[action || block] = options
47
+ end
48
+
49
+ # @since 0.0.2
50
+ def after(action = nil, options = Hash.new, &block)
51
+ self.after_filters[action || block] = options
52
+ end
53
+
54
+ # @since 0.0.2
55
+ def get_filters(type)
56
+ self.send("#{type}_filters")
57
+ end
58
+
59
+ # @since 0.0.2
60
+ attribute :before_filters, Hash.new
61
+ attribute :after_filters, Hash.new
62
+
63
+ attribute :before_render_filters, Array.new
64
+ attribute :after_render_filters, Array.new
65
+
66
+ attribute :before_display_filters, Array.new
67
+ attribute :after_display_filters, Array.new
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,26 @@
1
+ # encoding: utf-8
2
+
3
+ module Rango
4
+ module MessageMixin
5
+ # The rails-style flash messages
6
+ # @since 0.0.2
7
+ def message
8
+ @message ||= (request.GET[:msg] || Hash.new)
9
+ end
10
+
11
+ # @since 0.0.2
12
+ def redirect(url, options = Hash.new)
13
+ self.status = 302
14
+
15
+ # for example ?msg[error]=foo
16
+ [:error, :success, :notice].each do |type|
17
+ if msg = (options[type] || message[type])
18
+ url.concat("?msg[#{type}]=#{msg}")
19
+ end
20
+ end
21
+
22
+ self.headers["Location"] = URI.escape(url)
23
+ return String.new
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,41 @@
1
+ # encoding: utf-8
2
+
3
+ module Rango
4
+ module ExplicitRendering
5
+ def render(template, locals = Hash.new)
6
+ super(template, self.locals.merge!(locals))
7
+ end
8
+
9
+ # def show
10
+ # # you can't use @explicit
11
+ # post = Post.get(params[:id])
12
+ # render "post.html", post: post
13
+ # end
14
+ # end
15
+ #
16
+ # Context for rendering templates
17
+ # This context will be extended by same crucial methods from template mixin
18
+ # We are in context of current controller by default
19
+ def context
20
+ Object.new.extend(Rango::Helpers)
21
+ end
22
+
23
+ # def show
24
+ # locals[:post] = Post.get(params[:id])
25
+ # render "show.html", locals
26
+ # end
27
+ def locals
28
+ @locals ||= {message: self.message}
29
+ end
30
+ end
31
+
32
+ module ImplicitRendering
33
+ def context
34
+ self
35
+ end
36
+
37
+ def render(template)
38
+ super template
39
+ end
40
+ end
41
+ end
@@ -36,6 +36,11 @@ module Rango
36
36
  # @since 0.0.7
37
37
  # Haml now has an :ugly option, thanks to Wincent Colaiuta. This option forgoes pretty output formatting in favor of speed increases, which show up in particular when rendering deeply nested partials
38
38
  hattribute :ugly, lambda { not Rango.development? }
39
+
40
+ # @since 0.1.1
41
+ # You don't have to explicitly specify attributes which are same for all the tags of same
42
+ # kind in your markup over and over if you just specify them as an options for the engine
43
+ hattribute :default_attributes, {script: {type: "text/javascript"}, form: {method: "POST"}}
39
44
  end
40
45
  end
41
46
  end
@@ -58,7 +58,7 @@ module Erubis
58
58
  end
59
59
  end
60
60
  #rest = $' || input # ruby1.8
61
- rest = pos == 0 ? input : input[pos..-1] # ruby1.9
61
+ rest = pos == 0 ? input : input[pos..-1] # ruby
62
62
  add_text(src, rest)
63
63
  end
64
64
  end
@@ -0,0 +1,34 @@
1
+ # encoding: utf-8
2
+
3
+ # Option default_attributes
4
+ #
5
+ # A hash of default attributes for tags (`{tag => {attribute => default_value}}`).
6
+ # Attributes of each tag will reverse merged with his default attributes, so you
7
+ # don't have to write over and over that script tag has attribute `type` with value
8
+ # `text/javascript`. For example, `%script` compiles to `<script type="text/javascript"></script>`.
9
+ # Defaults to `{:script => {:type => "text/javascript"}, :form => {:method => "POST"}}`
10
+
11
+ module Haml
12
+ class Engine
13
+ alias_method :__initialize__, :initialize
14
+ def initialize(template, options = Hash.new)
15
+ __initialize__(template, options)
16
+ @options[:default_attributes] = Hash.new
17
+ # symbolize keys
18
+ @options[:default_attributes] = @options[:default_attributes].inject(Hash.new) do |options, pair|
19
+ options.merge(pair.first.to_sym => pair.last)
20
+ end
21
+ end
22
+ end
23
+
24
+ module Precompiler
25
+ alias_method :__prerender_tag__, :prerender_tag
26
+ def prerender_tag(name, self_close, attributes)
27
+ # merge given attributes with default attributes from options
28
+ if default_attributes = @options[:default_attributes][name.to_sym]
29
+ attributes = default_attributes.merge(attributes)
30
+ end
31
+ __prerender_tag__(name, self_close, attributes)
32
+ end
33
+ end
34
+ end
@@ -9,8 +9,18 @@ module Tilt
9
9
  chainable do
10
10
  def initialize_engine
11
11
  super
12
- require "rango/templates/erubis"
12
+ require "rango/templates/exts/erubis"
13
13
  end
14
14
  end
15
15
  end
16
- end
16
+
17
+ HamlTemplate.class_eval do
18
+ extend RubyExts::Chainable
19
+ chainable do
20
+ def initialize_engine
21
+ super
22
+ require "rango/templates/exts/haml"
23
+ end
24
+ end
25
+ end
26
+ end
File without changes
File without changes
@@ -3,10 +3,15 @@
3
3
  # http://wiki.github.com/botanicus/rango/controllers
4
4
 
5
5
  require "rango/controller"
6
+ require "rango/mixins/render"
7
+ require "rango/mixins/filters"
8
+ require "rango/mixins/message"
6
9
 
7
10
  module <%= @name.camel_case %>
8
11
  class Application < Rango::Controller
9
- # TODO: implement application controller
12
+ include Rango::FiltersMixin
13
+ include Rango::MessageMixin
14
+ include Rango::RenderMixin
10
15
  end
11
16
 
12
17
  class ShowCase < Application
@@ -43,9 +43,8 @@ gem "dm-aggregates"#, git: "git://github.com/datamapper/dm-more.git" # for count
43
43
  gem "sequel"#, git: "git://github.com/jeremyevans/sequel.git"
44
44
 
45
45
  <% end %>
46
- # TODO: don't load them
47
- #gem "thin"#, git: "git://github.com/macournoyer/thin.git" # there seems to be some problems with latest thin
48
- #gem "unicorn"#, git: "git://repo.or.cz/unicorn.git"
46
+ gem "thin", require_as: nil#, git: "git://github.com/macournoyer/thin.git" # there seems to be some problems with latest thin
47
+ #gem "unicorn", require_as: nil#, git: "git://repo.or.cz/unicorn.git"
49
48
  gem "racksh", require_as: nil#, git: "git://github.com/sickill/racksh.git"
50
49
  <% if @warden %>
51
50
  gem "warden"
@@ -1,4 +1,4 @@
1
- <%= shebang "./init.rb", %w[-p 4000 -s webrick] %>
1
+ <%= shebang "./init.rb", %w[-p 4000 -s thin] %>
2
2
  # encoding: utf-8
3
3
 
4
4
  require "rango/rack/middlewares/basic"
@@ -1,4 +1,4 @@
1
- <%= shebang "ruby1.9", ["--disable-gems"] %>
1
+ <%= shebang "ruby", ["--disable-gems"] %>
2
2
  # encoding: utf-8
3
3
 
4
4
  # This file should set Rango environment
@@ -17,6 +17,7 @@ require_relative "settings"
17
17
  require_relative "settings_local"
18
18
 
19
19
  require "rango"
20
+ require "rango/helpers"
20
21
  require "rango/environments"
21
22
 
22
23
  # http://wiki.github.com/botanicus/rango/environments-support
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rango
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Jakub \xC5\xA0\xC5\xA5astn\xC3\xBD aka Botanicus"
@@ -37,7 +37,7 @@ dependencies:
37
37
  version_requirement:
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - "="
40
+ - - ">="
41
41
  - !ruby/object:Gem::Version
42
42
  version: 0.0.2.1
43
43
  version:
@@ -57,7 +57,7 @@ dependencies:
57
57
  version_requirement:
58
58
  version_requirements: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - "="
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
62
  version: 0.0.1.2
63
63
  version:
@@ -104,8 +104,11 @@ files:
104
104
  - lib/rango/mini.rb
105
105
  - lib/rango/mixins/application.rb
106
106
  - lib/rango/mixins/configurable.rb
107
+ - lib/rango/mixins/filters.rb
107
108
  - lib/rango/mixins/http_caching.rb
109
+ - lib/rango/mixins/message.rb
108
110
  - lib/rango/mixins/render.rb
111
+ - lib/rango/mixins/rendering.rb
109
112
  - lib/rango/orm/adapter.rb
110
113
  - lib/rango/orm/adapters/datamapper.rb
111
114
  - lib/rango/orm/adapters/sequel.rb
@@ -135,17 +138,12 @@ files:
135
138
  - lib/rango/support/cucumber/steps/when_steps.rb
136
139
  - lib/rango/tasks/spec.rake
137
140
  - lib/rango/templates/exts/erubis.rb
141
+ - lib/rango/templates/exts/haml.rb
138
142
  - lib/rango/templates/exts/tilt.rb
139
143
  - lib/rango/templates/helpers.rb
140
144
  - lib/rango/templates/template.rb
141
145
  - lib/rango/utils.rb
142
146
  - lib/rango.rb
143
- - spec/rango/bundling/dependency_spec.rb
144
- - spec/rango/bundling/strategies/copy_spec.rb
145
- - spec/rango/bundling/strategies/gem_spec.rb
146
- - spec/rango/bundling/strategies/git_spec.rb
147
- - spec/rango/bundling/strategies/hg_spec.rb
148
- - spec/rango/bundling/strategy_spec.rb
149
147
  - spec/rango/contrib/pagination/adapters/datamapper_spec.rb
150
148
  - spec/rango/contrib/pagination/helpers_spec.rb
151
149
  - spec/rango/contrib/pagination/page_spec.rb
@@ -156,18 +154,21 @@ files:
156
154
  - spec/rango/environments_spec.rb
157
155
  - spec/rango/exceptions_spec.rb
158
156
  - spec/rango/forms/form_spec.rb
157
+ - spec/rango/gv/static_spec.rb
159
158
  - spec/rango/gv_spec.rb
160
159
  - spec/rango/helpers/assets_spec.rb
161
160
  - spec/rango/helpers/general_spec.rb
162
161
  - spec/rango/helpers/syntax_spec.rb
163
162
  - spec/rango/helpers_spec.rb
164
163
  - spec/rango/loggers/fireruby_spec.rb
165
- - spec/rango/loggers/logger_spec.rb
166
164
  - spec/rango/mini_spec.rb
167
165
  - spec/rango/mixins/application_spec.rb
168
166
  - spec/rango/mixins/configurable_spec.rb
167
+ - spec/rango/mixins/filters_spec.rb
169
168
  - spec/rango/mixins/http_caching_spec.rb
169
+ - spec/rango/mixins/message_spec.rb
170
170
  - spec/rango/mixins/render_spec.rb
171
+ - spec/rango/mixins/rendering_spec.rb
171
172
  - spec/rango/orm/adapter_spec.rb
172
173
  - spec/rango/orm/adapters/datamapper_spec.rb
173
174
  - spec/rango/orm/adapters/sequel_spec.rb
@@ -179,6 +180,7 @@ files:
179
180
  - spec/rango/rack/middlewares/encoding_spec.rb
180
181
  - spec/rango/rack/middlewares/static_spec.rb
181
182
  - spec/rango/rack/request_spec.rb
183
+ - spec/rango/router/adapters/rack_mount_spec.rb
182
184
  - spec/rango/router/adapters/rack_router_spec.rb
183
185
  - spec/rango/router/adapters/urlmap_spec.rb
184
186
  - spec/rango/router/adapters/usher_spec.rb
@@ -191,6 +193,10 @@ files:
191
193
  - spec/rango/support/cucumber/steps/given_steps_spec.rb
192
194
  - spec/rango/support/cucumber/steps/then_steps_spec.rb
193
195
  - spec/rango/support/cucumber/steps/when_steps_spec.rb
196
+ - spec/rango/templates/exts/erubis_spec.rb
197
+ - spec/rango/templates/exts/haml_spec.rb
198
+ - spec/rango/templates/exts/tilt_spec.rb
199
+ - spec/rango/templates/helpers_spec.rb
194
200
  - spec/rango/templates/template_spec.rb
195
201
  - spec/rango/utils_spec.rb
196
202
  - spec/rango_spec.rb