lib/rails_view.rb in rails_view-1.2.0 vs lib/rails_view.rb in rails_view-2.0.0

- old
+ new

@@ -1,71 +1,74 @@ require 'rails' unless defined?(::Rails) require 'action_controller' unless defined?(::ActionController) class View - VERSION = '1.2.0' + VERSION = '2.0.0' def View.version View::VERSION end - if defined?(Rails::Engine) - class Engine < Rails::Engine - config.after_initialize do - ::View.generate_controller! + def View.load_shit! + @loaded_shit ||= ( + unless defined?(::Rails) + require 'rails' end - end - else - ::View.generate_controller! - end - def View.generate_controller! - #base = (defined?(ApplicationController) ? ApplicationController : ::ActionController::Base) - base = ::ActionController::Base - - c = Class.new(base) do - layout false - helper :all - - def self.context(*args, &block) - require 'rails' + unless defined?(::ActionController) require 'action_controller' + end + + unless defined?(::ActionDispatch::TestRequest) require 'action_dispatch/testing/test_request.rb' + end + + unless defined?(::ActionDispatch::TestResponse) require 'action_dispatch/testing/test_response.rb' + end - default_url_options = - begin - require 'rails_default_url_options' - DefaultUrlOptions - rescue LoadError - options[:default_url_options] || {} - end + true + ) + end - store = ActiveSupport::Cache::MemoryStore.new - request = ActionDispatch::TestRequest.new - response = ActionDispatch::TestResponse.new + def View.controller(&block) + load_shit! - controller = new() - - controller.perform_caching = false - controller.cache_store = store - controller.request = request - controller.response = response - #controller.send(:initialize_template_class, response) - #controller.send(:assign_shortcuts, request, response) - controller.send(:default_url_options).merge!(default_url_options) - block ? controller.instance_eval(&block) : controller - end + controller_class = Class.new(::ActionController::Base) do + layout false + helper :all end - const_set(:Controller, c) - end + default_url_options = + begin + require 'rails_default_url_options' + DefaultUrlOptions + rescue LoadError + options[:default_url_options] || {} + end + store = ActiveSupport::Cache::MemoryStore.new + request = ActionDispatch::TestRequest.new + response = ActionDispatch::TestResponse.new + controller = controller_class.new() + + controller.perform_caching = false + controller.cache_store = store + controller.request = request + controller.response = response + #controller.send(:initialize_template_class, response) + #controller.send(:assign_shortcuts, request, response) + controller.send(:default_url_options).merge!(default_url_options) + block ? controller.instance_eval(&block) : controller + end + def View.render(*args) - Array(Controller.context{ render(*args) }).join.html_safe + Array(View.controller{ render(*args) }).join.html_safe end end + +Rails_view = ::View __END__ puts View.render(:inline => "<%= Time.now %> <%= link_to :foo, root_path %><%= solid :bar %><%= link_to :chiclet, Chiclet.first %>") puts View.render(:inline => "* one\n* two\n* three\n", :type => :markdown)