Roqua::Support
This gem contains all sorts of support utilities and helper methods that are useful to have in RoQua's applications, but have nothing to with the domain.
Usage
Logging
class Example
include Roqua::Logging
def methodname
# This writes a single line to the event log with
# the given event name and parameters as key=value format.
eventlog.info 'example.eventname', optional: 'extra parameters'
end
def another
# This automatically emits two lines, one for when the
# block begins, one for when the block ends. ':started',
# ':finished', ':failed' are appended to the event name
# given, and the duration of the block is logged with
# the :finished log line.
eventlog.lifecycle 'example.lifecycle', optional: 'params' do
sleep 5
end
end
def third
# This example is the same as the `another` example.
sleep 5
end
log :third, 'example.lifecycle', optional: 'params'
end
Rails logger
You can also add an additional request logger by adding this to config/initializers/request_logger.rb:
require 'roqua/support/request_logger'
Roqua::Support::RequestLogger.attach_to :action_controller
Responders
option 1
Create responder including the required responder modules and use it in a controller.
class ApiResponder < ActionController::Responder
include Roqua::Responders::ApiErrorsResponder
include Roqua::Responders::ActiveInteractionAwareResponder
end
class ApiAreaController < ApplicationController
self.responder = ApiResponder
...
option 2
Use gem 'responders'
And add required responder modules in a controller.
class ApiAreaController < ApplicationController
responders :flash, Roqua::Responders::ApiErrorsResponder, Roqua::Responders::ActiveInteractionAwareResponder
...
ActiveInteraction extensions
require 'roqua/core_ext/active_interaction/filters/date_time_as_unix_extension'
Allows a date or date_time attribute to be set by a unix time e.g. 1415608242 or '1415608242'.
require 'roqua/core_ext/active_interaction/filters/duration_filter'
class DurationFilterOperation < ActiveInteraction::Base
duration :duration
duration :foo, strip: true, default: nil # value is nil if duration is 0.
end
DurationFilterOperation.run(duration: 1.week)
DurationFilterOperation.run(duration: {value: 1, unit: 'weeks'})
Allows you to specify an ActiveSupport::Duration attribute.
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request