rails-footnotes 3.6.7 → 3.7.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ tags
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ == Footnotes v3.7.0
2
+ * Migrate to Bundler
3
+ * Support only Rails3
4
+
1
5
  == Footnotes v3.6.7
2
6
  * fixed log_note error - long overdue (thanks to many including Moritz Heidkamp)
3
7
  * 1.9: ignore more assigns (thanks to justin case)
@@ -14,7 +18,7 @@
14
18
  * pre rails 2.3 support fixes (thanks to tobias)
15
19
  * better disabling of query notes (thanks to tobias)
16
20
  * fixed variable assignment escaping (thanks to gdelvino)
17
- * fixed cookie value escaping (thanks to indirect)
21
+ * fixed cookie value escaping (thanks to indirect)
18
22
  * Turn off footnotes with a parameter footnotes=false (thanks to indirect)
19
23
 
20
24
  == Footnotes v3.6
@@ -50,7 +54,7 @@
50
54
  == Footnotes v3.2.1
51
55
  * Added some tests;
52
56
  * Redefined Footnotes CSS and Javascripts to use concise names.
53
-
57
+
54
58
  == Footnotes v3.2
55
59
  * Now you can easily add your own notes;
56
60
  * Added numbers to tabs;
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in mcutter.gemspec
4
+ gemspec
5
+
6
+ # gem "rails", ">= 3.0.5"
7
+ #
8
+ if RUBY_PLATFORM =~ /darwin/
9
+ group :test do
10
+ gem "autotest-growl"
11
+ end
12
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,83 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ rails-footnotes (3.6.7)
5
+
6
+ GEM
7
+ remote: http://rubygems.org/
8
+ specs:
9
+ abstract (1.0.0)
10
+ actionmailer (3.0.5)
11
+ actionpack (= 3.0.5)
12
+ mail (~> 2.2.15)
13
+ actionpack (3.0.5)
14
+ activemodel (= 3.0.5)
15
+ activesupport (= 3.0.5)
16
+ builder (~> 2.1.2)
17
+ erubis (~> 2.6.6)
18
+ i18n (~> 0.4)
19
+ rack (~> 1.2.1)
20
+ rack-mount (~> 0.6.13)
21
+ rack-test (~> 0.5.7)
22
+ tzinfo (~> 0.3.23)
23
+ activemodel (3.0.5)
24
+ activesupport (= 3.0.5)
25
+ builder (~> 2.1.2)
26
+ i18n (~> 0.4)
27
+ activerecord (3.0.5)
28
+ activemodel (= 3.0.5)
29
+ activesupport (= 3.0.5)
30
+ arel (~> 2.0.2)
31
+ tzinfo (~> 0.3.23)
32
+ activeresource (3.0.5)
33
+ activemodel (= 3.0.5)
34
+ activesupport (= 3.0.5)
35
+ activesupport (3.0.5)
36
+ arel (2.0.9)
37
+ autotest-growl (0.2.9)
38
+ builder (2.1.2)
39
+ erubis (2.6.6)
40
+ abstract (>= 1.0.0)
41
+ i18n (0.5.0)
42
+ mail (2.2.15)
43
+ activesupport (>= 2.3.6)
44
+ i18n (>= 0.4.0)
45
+ mime-types (~> 1.16)
46
+ treetop (~> 1.4.8)
47
+ mime-types (1.16)
48
+ mocha (0.9.12)
49
+ polyglot (0.3.1)
50
+ rack (1.2.2)
51
+ rack-mount (0.6.13)
52
+ rack (>= 1.0.0)
53
+ rack-test (0.5.7)
54
+ rack (>= 1.0)
55
+ rails (3.0.5)
56
+ actionmailer (= 3.0.5)
57
+ actionpack (= 3.0.5)
58
+ activerecord (= 3.0.5)
59
+ activeresource (= 3.0.5)
60
+ activesupport (= 3.0.5)
61
+ bundler (~> 1.0)
62
+ railties (= 3.0.5)
63
+ railties (3.0.5)
64
+ actionpack (= 3.0.5)
65
+ activesupport (= 3.0.5)
66
+ rake (>= 0.8.7)
67
+ thor (~> 0.14.4)
68
+ rake (0.8.7)
69
+ redgreen (1.2.2)
70
+ thor (0.14.6)
71
+ treetop (1.4.9)
72
+ polyglot (>= 0.3.1)
73
+ tzinfo (0.3.25)
74
+
75
+ PLATFORMS
76
+ ruby
77
+
78
+ DEPENDENCIES
79
+ autotest-growl
80
+ mocha
81
+ rails (>= 3.0.5)
82
+ rails-footnotes!
83
+ redgreen
data/README CHANGED
@@ -1,12 +1,11 @@
1
1
  Rails Footnotes
2
2
  License: MIT
3
- Version: 3.6.7
3
+ Version: 3.7.0
4
4
 
5
5
  You can also read this README in pretty html at the GitHub project Wiki page
6
6
 
7
7
  http://wiki.github.com/josevalim/rails-footnotes
8
8
 
9
-
10
9
  Description
11
10
  -----------
12
11
 
@@ -21,28 +20,42 @@ your backtrace lines.
21
20
  Installation
22
21
  ------------
23
22
 
24
- Install Rails Footnotes is very easy. If you are running on Rails 2.3 just run
25
- the following:
23
+ Since this branch aims Rails 3 support, if you want to use it with Rails 2.3 you should check this branch:
24
+
25
+ https://github.com/josevalim/rails-footnotes/tree/rails2
26
26
 
27
- sudo gem install rails-footnotes
27
+ Install Rails Footnotes is very easy.
28
+
29
+ Rails 2.x
28
30
 
29
31
  In RAILS_ROOT/config/environments/development.rb (yes, you want it only in development):
30
32
 
31
- config.gem "rails-footnotes"
33
+ gem "rails-footnotes", '< 3.7.0', :group => :development
32
34
 
33
- If you want it as plugin, just do:
35
+ Rails 3.x
34
36
 
35
- script/plugin install git://github.com/josevalim/rails-footnotes.git
37
+ gem 'rails-footnotes', '>= 3.7', :group => :development
36
38
 
37
39
  Configuration
38
40
  -------------
39
41
 
42
+ For version greater then 3.7.0
43
+
44
+ If you want to add alternate logic to enable or disable footnotes,
45
+ add something like this to config/initializers/footnotes.rb:
46
+
47
+ if defined?(Footnotes) & Rails.env.development?
48
+ Footnotes.run! # first of all
49
+
50
+ # ... other init code
51
+ end
52
+
40
53
  If you are not using Textmate as text editor, in your environment.rb or
41
54
  in an initializer do:
42
55
 
43
- if defined?(Footnotes)
44
- Footnotes::Filter.prefix = 'txmt://open?url=file://%s&amp;line=%d&amp;column=%d'
45
- end
56
+ Footnotes::Filter.prefix = 'mvim://open?url=file://%s&amp;line=%d&amp;column=%d'
57
+
58
+ for MacVim
46
59
 
47
60
  Where you are going to choose a prefix compatible with your text editor. The %s is
48
61
  replaced by the name of the file, the first %d is replaced by the line number and
@@ -63,11 +76,6 @@ If you have New Relic RPM installed, you may want to turn off query explains
63
76
 
64
77
  Footnotes::Notes::QueriesNote.sql_explain = false
65
78
 
66
- If you want to add alternate logic to enable or disable footnotes,
67
- add something like this to environment.rb:
68
-
69
- ENABLE_RAILS_FOOTNOTES=(Rails.env.production? == false)
70
-
71
79
  Finally, you can control which notes you want to show. The default are:
72
80
 
73
81
  Footnotes::Filter.notes = [:session, :cookies, :params, :filters, :routes, :env, :queries, :log, :general]
@@ -95,9 +103,9 @@ For example, to create a note that shows info about the user logged in your appl
95
103
  @current_user = controller.instance_variable_get("@current_user")
96
104
  end
97
105
 
98
- # The name that will appear as legend in fieldsets
106
+ # Returns the title that represents this note.
99
107
  #
100
- def legend
108
+ def title
101
109
  "Current user: #{@current_user.name}"
102
110
  end
103
111
 
data/Rakefile CHANGED
@@ -1,28 +1,14 @@
1
- require 'rake'
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
2
3
  require 'rake/testtask'
3
4
  require 'rake/rdoctask'
4
5
 
5
- begin
6
- require 'jeweler'
7
- Jeweler::Tasks.new do |s|
8
- s.name = "rails-footnotes"
9
- s.version = "3.6.7"
10
- s.rubyforge_project = "rails-footnotes"
11
- s.summary = "Every Rails page has footnotes that gives information about your application and links back to your editor."
12
- s.email = "keenan@thebrocks.net"
13
- s.homepage = "http://github.com/josevalim/rails-footnotes"
14
- s.description = "Every Rails page has footnotes that gives information about your application and links back to your editor."
15
- s.authors = ['Keenan Brock']
16
- s.files = FileList["[A-Z]*", "{lib}/**/*"]
17
- end
18
-
19
- Jeweler::GemcutterTasks.new
20
- rescue LoadError
21
- puts "Jeweler, or one of its dependencies, is not available. Install it with: gem install jeweler"
22
- end
6
+ desc 'Default: run tests'
7
+ task :default => :test
23
8
 
24
9
  desc 'Run tests for Footnotes.'
25
10
  Rake::TestTask.new(:test) do |t|
11
+ t.libs << 'test'
26
12
  t.pattern = 'test/**/*_test.rb'
27
13
  t.verbose = true
28
14
  end
@@ -36,14 +22,3 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
36
22
  rdoc.rdoc_files.include('MIT-LICENSE')
37
23
  rdoc.rdoc_files.include('lib/**/*.rb')
38
24
  end
39
-
40
- begin
41
- require 'metric_fu'
42
- MetricFu::Configuration.run do |config|
43
- #skipping: churn, :stats
44
- config.metrics = [:saikuro, :flog, :flay, :reek, :roodi, :rcov]
45
- # config.graphs = [:flog, :flay, :reek, :roodi, :rcov]
46
- config.rcov[:rcov_opts] << "-Itest"
47
- end
48
- rescue LoadError
49
- end
@@ -1,23 +1,22 @@
1
- unless defined?(ENABLE_RAILS_FOOTNOTES)
2
- ENABLE_RAILS_FOOTNOTES=(RAILS_ENV == 'development')
3
- end
4
- if ENABLE_RAILS_FOOTNOTES
5
- dir = File.dirname(__FILE__)
6
- require File.join(dir, 'rails-footnotes', 'footnotes')
7
- require File.join(dir, 'rails-footnotes', 'backtracer')
8
-
9
- # Load all notes
10
- #
11
- Dir[File.join(dir, 'rails-footnotes', 'notes', '*.rb')].sort.each do |note|
12
- require note
13
- end
14
-
1
+ module Footnotes
2
+
15
3
  # The footnotes are applied by default to all actions. You can change this
16
4
  # behavior commenting the after_filter line below and putting it in Your
17
5
  # application. Then you can cherrypick in which actions it will appear.
18
6
  #
19
- class ActionController::Base
20
- prepend_before_filter Footnotes::Filter
21
- after_filter Footnotes::Filter
7
+ module RailsFootnotesExtension
8
+ def self.included(base)
9
+ base.prepend_before_filter Footnotes::BeforeFilter
10
+ base.after_filter Footnotes::AfterFilter
11
+ end
12
+ end
13
+
14
+ def self.run!
15
+ require 'rails-footnotes/footnotes'
16
+ require 'rails-footnotes/backtracer'
17
+
18
+ Dir[File.join(File.dirname(__FILE__), 'rails-footnotes', 'notes', '*.rb')].each { |note| require note }
19
+
20
+ ActionController::Base.send(:include, RailsFootnotesExtension)
22
21
  end
23
22
  end
@@ -9,7 +9,7 @@ module Footnotes
9
9
 
10
10
  def add_links_to_backtrace(lines)
11
11
  lines.collect do |line|
12
- expanded = line.gsub('#{RAILS_ROOT}', RAILS_ROOT)
12
+ expanded = line.gsub('#{RAILS_ROOT}', Rails.root)
13
13
  if match = expanded.match(/^(.+):(\d+):in/) || match = expanded.match(/^(.+):(\d+)\s*$/)
14
14
  file = File.expand_path(match[1])
15
15
  line_number = match[2]
@@ -31,4 +31,6 @@ module Footnotes
31
31
  end
32
32
  end
33
33
 
34
- Exception.send :include, Footnotes::Extensions::Exception
34
+ if Rails.version < '3.0'
35
+ Exception.send :include, Footnotes::Extensions::Exception
36
+ end
@@ -1,4 +1,21 @@
1
1
  module Footnotes
2
+ class BeforeFilter
3
+ # Method called to start the notes
4
+ # It's a before filter prepend in the controller
5
+ def self.filter(controller)
6
+ Footnotes::Filter.start!(controller)
7
+ end
8
+ end
9
+
10
+ class AfterFilter
11
+ # Method that calls Footnotes to attach its contents
12
+ def self.filter(controller)
13
+ filter = Footnotes::Filter.new(controller)
14
+ filter.add_footnotes!
15
+ filter.close!(controller)
16
+ end
17
+ end
18
+
2
19
  class Filter
3
20
  @@no_style = false
4
21
  @@multiple_notes = false
@@ -25,20 +42,6 @@ module Footnotes
25
42
  cattr_accessor :no_style, :notes, :prefix, :multiple_notes
26
43
 
27
44
  class << self
28
- # Method called to start the notes
29
- # It's a before filter prepend in the controller
30
- #
31
- def before(controller)
32
- Footnotes::Filter.start!(controller)
33
- end
34
-
35
- # Method that calls Footnotes to attach its contents
36
- #
37
- def after(controller)
38
- filter = Footnotes::Filter.new(controller)
39
- filter.add_footnotes!
40
- filter.close!(controller)
41
- end
42
45
 
43
46
  # Calls the class method start! in each note
44
47
  # Sometimes notes need to set variables or clean the environment to work properly
@@ -77,7 +80,7 @@ module Footnotes
77
80
  # Logs the error using specified title and format
78
81
  #
79
82
  def log_error(title, exception)
80
- RAILS_DEFAULT_LOGGER.error "#{title}: #{exception}\n#{exception.backtrace.join("\n")}"
83
+ Rails.logger.error "#{title}: #{exception}\n#{exception.backtrace.join("\n")}"
81
84
  end
82
85
 
83
86
  # If none argument is sent, simply return the prefix.
@@ -138,11 +141,24 @@ module Footnotes
138
141
  end
139
142
 
140
143
  def performed_render?
141
- @controller.instance_variable_get(:@performed_render)
144
+ @controller.instance_variable_get(:@performed_render) || # rails 2.x
145
+ (@controller.respond_to?(:performed?) && @controller.performed?) # rails3, will break on redirect??
142
146
  end
143
147
 
144
148
  def valid_format?
145
- [:html,:rhtml,:xhtml,:rxhtml].include?(@template.template_format.to_sym)
149
+ if @template # Rails 2.x
150
+ [:html,:rhtml,:xhtml,:rxhtml].include?(@template.send(template_format_method.to_sym).to_sym)
151
+ else # Rails 3
152
+ @controller.response.content_type == 'text/html'
153
+ end
154
+ end
155
+
156
+ def template_format_method
157
+ if @template.respond_to?(:template_format)
158
+ return 'template_format'
159
+ else
160
+ return 'format'
161
+ end
146
162
  end
147
163
 
148
164
  def valid_content_type?
@@ -167,17 +183,18 @@ module Footnotes
167
183
  #
168
184
 
169
185
  def insert_styles
186
+ #TODO More customizable(reset.css, from file etc.)
170
187
  insert_text :before, /<\/head>/i, <<-HTML
171
188
  <!-- Footnotes Style -->
172
189
  <style type="text/css">
173
- #footnotes_debug {margin: 2em 0 1em 0; text-align: center; color: #444; line-height: 16px;}
190
+ #footnotes_debug {font-size: 11px; font-weight: normal; margin: 2em 0 1em 0; text-align: center; color: #444; line-height: 16px;}
174
191
  #footnotes_debug th, #footnotes_debug td {color: #444; line-height: 18px;}
175
- #footnotes_debug a {text-decoration: none; color: #444; line-height: 18px;}
192
+ #footnotes_debug a {color: #9b1b1b; font-weight: inherit; text-decoration: none; line-height: 18px;}
176
193
  #footnotes_debug table {text-align: center;}
177
194
  #footnotes_debug table td {padding: 0 5px;}
178
195
  #footnotes_debug tbody {text-align: left;}
179
196
  #footnotes_debug .name_values td {vertical-align: top;}
180
- #footnotes_debug legend {background-color: #FFF;}
197
+ #footnotes_debug legend {background-color: #fff;}
181
198
  #footnotes_debug fieldset {text-align: left; border: 1px dashed #aaa; padding: 0.5em 1em 1em 1em; margin: 1em 2em; color: #444; background-color: #FFF;}
182
199
  /* Aditional Stylesheets */
183
200
  #{@notes.map(&:stylesheet).compact.join("\n")}
@@ -242,7 +259,7 @@ module Footnotes
242
259
  HTML
243
260
 
244
261
  placeholder = /<div[^>]+id=['"]footnotes_holder['"][^>]*>/i
245
- if @body =~ placeholder
262
+ if @controller.response.body =~ placeholder
246
263
  insert_text :after, placeholder, footnotes_html
247
264
  else
248
265
  insert_text :before, /<\/body>/i, footnotes_html
@@ -325,15 +342,17 @@ module Footnotes
325
342
  def insert_text(position, pattern, new_text)
326
343
  index = case pattern
327
344
  when Regexp
328
- if match = @body.match(pattern)
345
+ if match = @controller.response.body.match(pattern)
329
346
  match.offset(0)[position == :before ? 0 : 1]
330
347
  else
331
- @body.size
348
+ @controller.response.body.size
332
349
  end
333
350
  else
334
351
  pattern
335
352
  end
336
- @body.insert index, new_text
353
+ newbody = @controller.response.body
354
+ newbody.insert index, new_text
355
+ @controller.response.body = newbody
337
356
  end
338
357
 
339
358
  # Instance each_with_rescue method
@@ -36,7 +36,7 @@ module Footnotes
36
36
  end
37
37
  #raise "File not found"
38
38
  else
39
- @controller_filename=File.join(File.expand_path(RAILS_ROOT), 'app', 'controllers', "#{controller_name}.rb").sub('/controllers/controllers/', '/controllers/')
39
+ @controller_filename=File.join(File.expand_path(Rails.root), 'app', 'controllers', "#{controller_name}.rb").sub('/controllers/controllers/', '/controllers/')
40
40
  end
41
41
  @controller_filename
42
42
  end
@@ -32,7 +32,7 @@ module Footnotes
32
32
  def parse_files!
33
33
  @files.collect! do |filename|
34
34
  if filename =~ %r{^/}
35
- full_filename = File.join(File.expand_path(RAILS_ROOT), 'public', filename)
35
+ full_filename = File.join(File.expand_path(Rails.root), 'public', filename)
36
36
  %[<a href="#{Footnotes::Filter.prefix(full_filename, 1, 1)}">#{filename}</a>]
37
37
  else
38
38
  %[<a href="#{filename}">#{filename}</a>]
@@ -20,9 +20,9 @@ module Footnotes
20
20
  # Get controller filter chain
21
21
  #
22
22
  def parse_filters
23
- return @controller.class.filter_chain.collect do |filter|
24
- [parse_method(filter.method), filter.type.inspect, controller_filtered_actions(filter).inspect]
25
- end
23
+ return [] # TODO @controller.class.filter_chain.collect do |filter|
24
+ # [parse_method(filter.method), filter.type.inspect, controller_filtered_actions(filter).inspect]
25
+ # end
26
26
  end
27
27
 
28
28
  # This receives a filter, creates a mock controller and check in which
@@ -16,12 +16,12 @@ module Footnotes
16
16
  end
17
17
 
18
18
  def valid?
19
- prefix? && @controller.active_layout
19
+ prefix? && nil#@controller.active_layout TODO doesn't work with Rails 3
20
20
  end
21
21
 
22
22
  protected
23
23
  def filename
24
- File.join(File.expand_path(RAILS_ROOT), 'app', 'layouts', "#{@controller.active_layout.to_s.underscore}").sub('/layouts/layouts/', '/views/layouts/')
24
+ File.join(File.expand_path(Rails.root), 'app', 'layouts', "#{@controller.active_layout.to_s.underscore}").sub('/layouts/layouts/', '/views/layouts/')
25
25
  end
26
26
  end
27
27
  end
@@ -25,7 +25,7 @@ module Footnotes
25
25
  unless @log
26
26
  @log = @@log.join('')
27
27
  @@log = []
28
- if rindex = @log.rindex('Processing '+@controller.controller_class_name+'#'+@controller.action_name)
28
+ if rindex = @log.rindex('Processing '+@controller.class.name+'#'+@controller.action_name)
29
29
  @log = @log[rindex..-1]
30
30
  end
31
31
  end
@@ -16,7 +16,7 @@ module Footnotes
16
16
  def content
17
17
  rows = partials.map do |filename|
18
18
  href = Footnotes::Filter.prefix(filename,1,1)
19
- shortened_name=filename.gsub(File.join(RAILS_ROOT,"app/views/"),"")
19
+ shortened_name=filename.gsub(File.join(Rails.root,"app/views/"),"")
20
20
  [%{<a href="#{href}">#{shortened_name}</a>},"#{@partial_times[filename].sum}ms",@partial_counts[filename]]
21
21
  end
22
22
  mount_table(rows.unshift(%w(Partial Time Count)), :summary => "Partials for #{title}")
@@ -71,7 +71,7 @@ module Footnotes
71
71
  ActiveRecord::ConnectionAdapters::AbstractAdapter.send :include, Footnotes::Extensions::AbstractAdapter
72
72
  ActiveRecord::ConnectionAdapters.local_constants.each do |adapter|
73
73
  next unless adapter =~ /.*[^Abstract]Adapter$/
74
- next if adapter =~ /SQLiteAdapter$/
74
+ next if adapter =~ /(SQLite|Salesforce)Adapter$/
75
75
  eval("ActiveRecord::ConnectionAdapters::#{adapter}").send :include, Footnotes::Extensions::QueryAnalyzer
76
76
  self.loaded = true
77
77
  end
@@ -91,7 +91,7 @@ module Footnotes
91
91
  def parse_trace(trace)
92
92
  trace.map do |t|
93
93
  s = t.split(':')
94
- %[<a href="#{escape(Footnotes::Filter.prefix("#{RAILS_ROOT}/#{s[0]}", s[1].to_i, 1))}">#{escape(t)}</a><br />]
94
+ %[<a href="#{escape(Footnotes::Filter.prefix("#{Rails.root.to_s}/#{s[0]}", s[1].to_i, 1))}">#{escape(t)}</a><br />]
95
95
  end.join
96
96
  end
97
97
 
@@ -136,7 +136,7 @@ module Footnotes
136
136
 
137
137
  # Strip, select those ones from app and reject first two, because they
138
138
  # are from the plugin
139
- @trace = Kernel.caller.collect(&:strip).select{|i| i.gsub!(/^#{RAILS_ROOT}\//im, '') }[2..-1]
139
+ @trace = Kernel.caller.collect(&:strip).select{|i| i.gsub!(/^#{Rails.root}\//im, '') }[2..-1]
140
140
  end
141
141
  end
142
142
 
@@ -18,21 +18,25 @@ module Footnotes
18
18
 
19
19
  protected
20
20
  def parse_routes
21
- routes_with_name = ActionController::Routing::Routes.named_routes.to_a.flatten
21
+ routes_with_name = Rails.application.routes.named_routes.to_a.flatten
22
22
 
23
- return ActionController::Routing::Routes.filtered_routes(:controller => @controller.controller_path).collect do |route|
23
+ return Rails.application.routes.filtered_routes(:controller => @controller.controller_path).collect do |route|
24
24
  # Catch routes name if exists
25
25
  i = routes_with_name.index(route)
26
26
  name = i ? routes_with_name[i-1].to_s : ''
27
27
 
28
28
  # Catch segments requirements
29
29
  req = {}
30
- route.segments.each do |segment|
31
- next unless segment.is_a?(ActionController::Routing::DynamicSegment) && segment.regexp
32
- req[segment.key.to_sym] = segment.regexp
30
+ if Rails.version < '3.0'
31
+ route.segments.each do |segment|
32
+ next unless segment.is_a?(ActionController::Routing::DynamicSegment) && segment.regexp
33
+ req[segment.key.to_sym] = segment.regexp
34
+ end
35
+ [escape(name), route.segments.join, route.requirements.reject{|key,value| key == :controller}.inspect, req.inspect]
36
+ else
37
+ req = route.conditions
38
+ [escape(name), route.conditions.keys.join, route.requirements.reject{|key,value| key == :controller}.inspect, req.inspect]
33
39
  end
34
-
35
- [escape(name), route.segments.join, route.requirements.reject{|key,value| key == :controller}.inspect, req.inspect]
36
40
  end
37
41
  end
38
42
  end
@@ -0,0 +1,3 @@
1
+ module Footnotes
2
+ VERSION = "3.7.0"
3
+ end
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "rails-footnotes/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "rails-footnotes"
7
+ s.version = Footnotes::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Keenan Brock"]
10
+ s.email = ["keenan@thebrocks.net"]
11
+ s.homepage = "http://github.com/josevalim/rails-footnotes"
12
+ s.summary = %q{Every Rails page has footnotes that gives information about your application and links back to your editor.}
13
+ s.description = %q{Every Rails page has footnotes that gives information about your application and links back to your editor.}
14
+
15
+ s.rubyforge_project = "rails-footnotes"
16
+
17
+ s.add_dependency "rails", ">= 3.0.0"
18
+
19
+ s.add_development_dependency "autotest"
20
+ s.add_development_dependency "redgreen"
21
+ s.add_development_dependency "mocha"
22
+ s.add_development_dependency "rails", ">= 3.0.0"
23
+
24
+ s.files = `git ls-files`.split("\n")
25
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
26
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
27
+ s.require_paths = ["lib"]
28
+ end
29
+
@@ -1,8 +1,7 @@
1
- require File.dirname(__FILE__) + '/test_helper'
1
+ require 'test_helper'
2
2
 
3
3
  require 'action_controller'
4
4
  require 'action_controller/test_case'
5
- require 'action_controller/test_process'
6
5
 
7
6
  class FootnotesController < ActionController::Base; attr_accessor :template, :performed_render; end
8
7
 
@@ -20,6 +19,7 @@ class FootnotesTest < Test::Unit::TestCase
20
19
  @controller.request = ActionController::TestRequest.new
21
20
  @controller.response = ActionController::TestResponse.new
22
21
  @controller.response.body = $html.dup
22
+ @controller.params = {}
23
23
 
24
24
  Footnotes::Filter.notes = [ :test ]
25
25
  Footnotes::Filter.multiple_notes = false
@@ -81,8 +81,8 @@ class FootnotesTest < Test::Unit::TestCase
81
81
  def test_notes_are_initialized
82
82
  footnotes_perform!
83
83
  test_note = @footnotes.instance_variable_get('@notes').first
84
- assert 'Footnotes::Notes::TestNote', test_note.class
85
- assert :test, test_note.to_sym
84
+ assert_equal 'Footnotes::Notes::TestNote', test_note.class.name
85
+ assert_equal :test, test_note.to_sym
86
86
  end
87
87
 
88
88
  def test_notes_links
@@ -173,12 +173,20 @@ class FootnotesTest < Test::Unit::TestCase
173
173
  # Then we call add_footnotes!
174
174
  #
175
175
  def footnotes_perform!
176
- @controller.template.expects(:template_format).returns('html')
176
+ template_expects('html')
177
177
  @controller.performed_render = true
178
178
 
179
179
  Footnotes::Filter.start!(@controller)
180
180
  @footnotes.add_footnotes!
181
181
  end
182
+
183
+ def template_expects(format)
184
+ if @controller.template.respond_to?(:template_format)
185
+ @controller.template.expects(:template_format).returns(format)
186
+ else
187
+ @controller.template.expects(:format).returns(format)
188
+ end
189
+ end
182
190
  end
183
191
 
184
192
  $html = <<HTML
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/../test_helper'
1
+ require 'test_helper'
2
2
 
3
3
  class AbstractNoteTest < Test::Unit::TestCase
4
4
  def setup
@@ -78,7 +78,7 @@ class AbstractNoteTest < Test::Unit::TestCase
78
78
  assert_equal '', @note.send(:mount_table,[['h1','h2','h3']], :class => 'table')
79
79
 
80
80
  tab = <<-TABLE
81
- <table class="table">
81
+ <table class="table" >
82
82
  <thead><tr><th>H1</th></tr></thead>
83
83
  <tbody><tr><td>r1c1</td></tr></tbody>
84
84
  </table>
data/test/test_helper.rb CHANGED
@@ -5,5 +5,6 @@ require 'mocha'
5
5
  ENV['RAILS_ENV'] = 'test'
6
6
 
7
7
  require 'active_support'
8
- require File.dirname(__FILE__) + '/../lib/rails-footnotes/footnotes'
9
- require File.dirname(__FILE__) + '/../lib/rails-footnotes/notes/abstract_note'
8
+ require 'active_support/all' unless Class.respond_to?(:cattr_accessor)
9
+ require 'rails-footnotes/footnotes'
10
+ require 'rails-footnotes/notes/abstract_note'
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-footnotes
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
5
- prerelease: false
6
- segments:
7
- - 3
8
- - 6
9
- - 7
10
- version: 3.6.7
4
+ prerelease:
5
+ version: 3.7.0
11
6
  platform: ruby
12
7
  authors:
13
8
  - Keenan Brock
@@ -15,20 +10,78 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2010-07-20 00:00:00 -04:00
13
+ date: 2011-03-19 00:00:00 +02:00
19
14
  default_executable:
20
- dependencies: []
21
-
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rails
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 3.0.0
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: autotest
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: "0"
36
+ type: :development
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: redgreen
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: "0"
47
+ type: :development
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: mocha
51
+ prerelease: false
52
+ requirement: &id004 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: "0"
58
+ type: :development
59
+ version_requirements: *id004
60
+ - !ruby/object:Gem::Dependency
61
+ name: rails
62
+ prerelease: false
63
+ requirement: &id005 !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 3.0.0
69
+ type: :development
70
+ version_requirements: *id005
22
71
  description: Every Rails page has footnotes that gives information about your application and links back to your editor.
23
- email: keenan@thebrocks.net
72
+ email:
73
+ - keenan@thebrocks.net
24
74
  executables: []
25
75
 
26
76
  extensions: []
27
77
 
28
- extra_rdoc_files:
29
- - README
78
+ extra_rdoc_files: []
79
+
30
80
  files:
81
+ - .gitignore
31
82
  - CHANGELOG
83
+ - Gemfile
84
+ - Gemfile.lock
32
85
  - MIT-LICENSE
33
86
  - README
34
87
  - Rakefile
@@ -54,6 +107,8 @@ files:
54
107
  - lib/rails-footnotes/notes/session_note.rb
55
108
  - lib/rails-footnotes/notes/stylesheets_note.rb
56
109
  - lib/rails-footnotes/notes/view_note.rb
110
+ - lib/rails-footnotes/version.rb
111
+ - rails-footnotes.gemspec
57
112
  - test/footnotes_test.rb
58
113
  - test/notes/abstract_note_test.rb
59
114
  - test/test_helper.rb
@@ -62,8 +117,8 @@ homepage: http://github.com/josevalim/rails-footnotes
62
117
  licenses: []
63
118
 
64
119
  post_install_message:
65
- rdoc_options:
66
- - --charset=UTF-8
120
+ rdoc_options: []
121
+
67
122
  require_paths:
68
123
  - lib
69
124
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -71,23 +126,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
71
126
  requirements:
72
127
  - - ">="
73
128
  - !ruby/object:Gem::Version
74
- hash: 3
75
- segments:
76
- - 0
77
129
  version: "0"
78
130
  required_rubygems_version: !ruby/object:Gem::Requirement
79
131
  none: false
80
132
  requirements:
81
133
  - - ">="
82
134
  - !ruby/object:Gem::Version
83
- hash: 3
84
- segments:
85
- - 0
86
135
  version: "0"
87
136
  requirements: []
88
137
 
89
138
  rubyforge_project: rails-footnotes
90
- rubygems_version: 1.3.7
139
+ rubygems_version: 1.5.0
91
140
  signing_key:
92
141
  specification_version: 3
93
142
  summary: Every Rails page has footnotes that gives information about your application and links back to your editor.