lib/rails_current.rb in rails_current-1.8.2 vs lib/rails_current.rb in rails_current-1.9.0
- old
+ new
@@ -1,10 +1,10 @@
# -*- encoding : utf-8 -*-
module Current
def Current.version
- '1.8.2'
+ '1.9.0'
end
def Current.dependencies
{
'map' => [ 'map' , ' >= 6.0.1' ]
@@ -159,42 +159,55 @@
super
end
end
def Current.mock_controller(options = {})
- require 'rails'
- require 'action_controller'
- require 'action_dispatch/testing/test_request.rb'
- require 'action_dispatch/testing/test_response.rb'
+ ensure_rails_application do
+ require 'action_controller'
+ require 'action_dispatch/testing/test_request.rb'
+ require 'action_dispatch/testing/test_response.rb'
- default_url_options =
- begin
- require 'rails_default_url_options'
- DefaultUrlOptions
- rescue LoadError
- options[:default_url_options] || {}
+ store = ActiveSupport::Cache::MemoryStore.new
+
+ controller = mock_controller_class.new
+ controller.perform_caching = true
+ controller.cache_store = store
+
+ request = ActionDispatch::TestRequest.new
+ response = ActionDispatch::TestResponse.new
+
+ controller.request = request
+ controller.response = response
+
+ singleton_class =
+ class << controller
+ self
+ end
+
+ singleton_class.module_eval do
+ define_method(:default_url_options) do
+ @default_url_options ||= (
+ defined?(DefaultUrlOptions) ? DefaultUrlOptions.dup : {}
+ )
+ end
end
- ensure_rails_application do
- store = ActiveSupport::Cache::MemoryStore.new
- controller =
- begin
- ApplicationController.new
- rescue NameError
- ActionController::Base.new
- end
- controller.perform_caching = true
- controller.cache_store = store
- request = ActionDispatch::TestRequest.new
- response = ActionDispatch::TestResponse.new
- 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)
Current.proxy_for(controller)
end
end
+
+ def Current.mock_controller_class
+ unless const_defined?(:Controller)
+ controller_class =
+ if defined?(::ApplicationController)
+ Class.new(::ApplicationController)
+ else
+ Class.new(::ActionController::Base)
+ end
+ const_set(:Controller, controller_class)
+ end
+ return const_get(:Controller)
+ end
def Current.ensure_rails_application(&block)
require 'rails' unless defined?(Rails)
if Rails.application.nil?
mock = Class.new(Rails::Application)