diff --git a/lib/arbre.rb b/lib/arbre.rb index bf602764..cbd1ff3a 100644 --- a/lib/arbre.rb +++ b/lib/arbre.rb @@ -17,5 +17,5 @@ module Arbre require 'arbre/component' if defined?(Rails) - require 'arbre/rails' + require 'arbre/railtie' end diff --git a/lib/arbre/rails.rb b/lib/arbre/rails.rb deleted file mode 100644 index 693ec7f7..00000000 --- a/lib/arbre/rails.rb +++ /dev/null @@ -1,6 +0,0 @@ -# frozen_string_literal: true -require 'arbre/rails/template_handler' -require 'arbre/rails/forms' -require 'arbre/rails/rendering' - -Arbre::Element.send :include, Arbre::Rails::Rendering diff --git a/lib/arbre/rails/rendering.rb b/lib/arbre/rails/rendering.rb index 08a3dec8..33ea6826 100644 --- a/lib/arbre/rails/rendering.rb +++ b/lib/arbre/rails/rendering.rb @@ -12,7 +12,6 @@ def render(*args) text_node rendered end end - end end end diff --git a/lib/arbre/rails/template_handler.rb b/lib/arbre/rails/template_handler.rb index 23c9e25e..8a1777a4 100644 --- a/lib/arbre/rails/template_handler.rb +++ b/lib/arbre/rails/template_handler.rb @@ -14,5 +14,3 @@ def call(template, source = nil) end end end - -ActionView::Template.register_template_handler :arb, Arbre::Rails::TemplateHandler.new diff --git a/lib/arbre/railtie.rb b/lib/arbre/railtie.rb new file mode 100644 index 00000000..a7d260a1 --- /dev/null +++ b/lib/arbre/railtie.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true +require 'arbre/rails/template_handler' +require 'arbre/rails/forms' +require 'arbre/rails/rendering' +require 'rails' + +Arbre::Element.include(Arbre::Rails::Rendering) + +module Arbre + class Railtie < ::Rails::Railtie + initializer "arbre" do + ActiveSupport.on_load(:action_view) do + ActionView::Template.register_template_handler :arb, Arbre::Rails::TemplateHandler.new + end + end + end +end diff --git a/spec/rails/rails_spec_helper.rb b/spec/rails/rails_spec_helper.rb index d6c69ce3..998497aa 100644 --- a/spec/rails/rails_spec_helper.rb +++ b/spec/rails/rails_spec_helper.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true -require 'rubygems' -require 'bundler/setup' -require 'combustion' +require 'spec_helper' Combustion.path = 'spec/rails/stub_app' Combustion.initialize! :action_controller, @@ -12,13 +10,8 @@ require 'capybara/rspec' require 'capybara/rails' -require 'spec_helper' - require 'rails/support/mock_person' -# Ensure that the rails plugin is installed -require 'arbre/rails' - module AdditionalHelpers def protect_against_forgery? @@ -33,8 +26,8 @@ def form_authenticity_token(form_options: {}) def mock_action_view(assigns = {}) controller = ActionView::TestCase::TestController.new - ActionView::Base.send :include, ActionView::Helpers - ActionView::Base.send :include, AdditionalHelpers + ActionView::Base.include(ActionView::Helpers) + ActionView::Base.include(AdditionalHelpers) context = ActionView::LookupContext.new(ActionController::Base.view_paths) ActionView::Base.new(context, assigns, controller) end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index b49195c5..d82bc64e 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -12,6 +12,7 @@ end require 'support/bundle' +require 'combustion' require 'arbre' def arbre(&block)