Module: Conduit::Core::Action::InstanceMethods
- Extended by:
- Forwardable
- Defined in:
- lib/conduit/core/action.rb
Instance Method Summary collapse
-
#attributes_with_values ⇒ Object
Returns a hash of all the defined attributes and their values.
- #initialize(**options) ⇒ Object
-
#perform ⇒ Object
Entry method.
-
#perform_request ⇒ Object
Method called to make the actual request.
-
#view ⇒ Object
Return the rendered view.
-
#view_context ⇒ Object
The view’s context will be the action’s decorator.
-
#view_path ⇒ Object
Location where the view files can be found Default to lib/conduit/drivers/<drivername>/views Can be overriden per class.
Instance Method Details
#attributes_with_values ⇒ Object
Returns a hash of all the defined attributes and their values.
If an attribute’s value is not passed as an option it will default to ‘nil`.
109 110 111 112 113 114 115 |
# File 'lib/conduit/core/action.rb', line 109 def attributes_with_values attributes.inject({}) do |hash, attribute| hash.tap do |h| h[attribute] = @options[attribute] end end end |
#initialize(**options) ⇒ Object
83 84 85 86 |
# File 'lib/conduit/core/action.rb', line 83 def initialize(**) @options = validate!() end |
#perform ⇒ Object
Entry method. Calls either the mocker or the ‘perform_request` method.
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'lib/conduit/core/action.rb', line 147 def perform # When testing we can mock the request. The mocker used # will depend on the action's name. For example: # `Conduit::MyDriver::RequestMocker::Activate` will be responsible for # mocking the `activate` action. # # * To mock success pass `mock_status: 'success'` as an option. # * To mock failure pass `mock_status: 'failure'` as an option. if mock_mode? mocker = request_mocker.new(self, @options) mocker.with_mocking { perform_request } else perform_request end end |
#perform_request ⇒ Object
Method called to make the actual request.
Override to customize.
137 138 139 140 141 142 |
# File 'lib/conduit/core/action.rb', line 137 def perform_request response = request(body: view, method: :post) parser_instance = parser_class.new(response.body) Conduit::ApiResponse.new(raw_response: response, parser: parser_instance) end |
#view ⇒ Object
Return the rendered view
127 128 129 130 131 |
# File 'lib/conduit/core/action.rb', line 127 def view tpl = self.class.name.demodulize .underscore.downcase render(tpl) end |
#view_context ⇒ Object
The view’s context will be the action’s decorator. The decorator name depends on the current action’s name.
For example ‘Conduit::MyDriver::Decorators::ActivateDecorator` will be the view’s context for the ‘activate` action.
97 98 99 100 101 |
# File 'lib/conduit/core/action.rb', line 97 def view_context view_decorator.new( OpenStruct.new(attributes_with_values) ) end |
#view_path ⇒ Object
Location where the view files can be found Default to lib/conduit/drivers/<drivername>/views Can be overriden per class.
121 122 123 |
# File 'lib/conduit/core/action.rb', line 121 def view_path File.join(File.dirname(action_path), 'views') end |