Skip to content

Instantly share code, notes, and snippets.

@olly
Last active January 13, 2020 18:53
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save olly/31d812e15895c24e0854dd9cd2aee4d8 to your computer and use it in GitHub Desktop.
Save olly/31d812e15895c24e0854dd9cd2aee4d8 to your computer and use it in GitHub Desktop.
ActionView subclass regression
$ ruby test.rb 6.0.0
<h1>Sample</h1>
===
Traceback (most recent call last):
21: from test.rb:30:in `<main>'
20: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-6.0.0/lib/action_view/helpers/rendering_helper.rb:30:in `render'
19: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-6.0.0/lib/action_view/base.rb:304:in `in_rendering_context'
18: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-6.0.0/lib/action_view/helpers/rendering_helper.rb:34:in `block in render'
17: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-6.0.0/lib/action_view/renderer/renderer.rb:22:in `render'
16: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-6.0.0/lib/action_view/renderer/renderer.rb:29:in `render_to_object'
15: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-6.0.0/lib/action_view/renderer/renderer.rb:61:in `render_template_to_object'
14: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-6.0.0/lib/action_view/renderer/template_renderer.rb:13:in `render'
13: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-6.0.0/lib/action_view/renderer/template_renderer.rb:57:in `render_template'
12: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-6.0.0/lib/action_view/renderer/template_renderer.rb:66:in `render_with_layout'
11: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-6.0.0/lib/action_view/renderer/template_renderer.rb:58:in `block in render_template'
10: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-6.0.0/lib/action_view/renderer/abstract_renderer.rb:88:in `instrument'
9: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activesupport-6.0.0/lib/active_support/notifications.rb:180:in `instrument'
8: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activesupport-6.0.0/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
7: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activesupport-6.0.0/lib/active_support/notifications.rb:180:in `block in instrument'
6: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-6.0.0/lib/action_view/renderer/abstract_renderer.rb:89:in `block in instrument'
5: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-6.0.0/lib/action_view/renderer/template_renderer.rb:59:in `block (2 levels) in render_template'
4: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-6.0.0/lib/action_view/template.rb:183:in `render'
3: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-6.0.0/lib/action_view/template.rb:386:in `instrument_render_template'
2: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activesupport-6.0.0/lib/active_support/notifications.rb:182:in `instrument'
1: from /usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-6.0.0/lib/action_view/template.rb:185:in `block in render'
/usr/local/var/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/actionview-6.0.0/lib/action_view/base.rb:274:in `_run': undefined method `___sers__lly__emporary_actionview_compile_sample_html_erb__1039703076447898395_70150041963300' for #<ActionView::Base:0x00007f9a281fb7a0> (ActionView::Template::Error)
$ ruby test.rb 5.2.3
<h1>Sample</h1>
===
<h1>Sample</h1>
ruby test.rb 5.2.3
ruby test.rb 6.0.0
<h1>Sample</h1>
require 'bundler/inline'
raise "specify rails verison: #{ARGV[0].inspect}" unless ARGV[0]
gemfile do
source 'https://rubygems.org'
gem 'actionpack', ARGV[0], require: false
end
require 'action_view'
require 'pathname'
LOOKUP_CONTEXT = ActionView::LookupContext.new([Pathname.new(__dir__).to_s])
class ViewContext < ActionView::Base
def initialize
super(LOOKUP_CONTEXT, {}, nil)
end
end
subclass = ViewContext.new
puts subclass.render(template: 'sample')
puts
puts "==="
puts
base = ActionView::Base.new(LOOKUP_CONTEXT, {}, nil)
puts base.render(template: 'sample')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment