Sha256: 52bda745e197cd700a50dcbfc0917e041c5626520932ebaa2918b191de573d11

Contents?: true

Size: 968 Bytes

Versions: 70

Compression:

Stored size: 968 Bytes

Contents

module EitilWrapper
  module ExtendedResources

    RESOURCEFUL_ACTIONS = %i$ index new create show edit update destroy $  

    private

    def extended_resources(controller, **kwargs)
      all_args_to_ivars binding

      resources(controller, **resource_args) do
        extended_routes&.each { |route| send(route).call controller }
        yield if block_given?
      end 
    end

    def resource_args
      duplicate = @kwargs.dup
      duplicate[:only] = resourceful_routes 
      duplicate
    end

    def resourceful_routes
      @kwargs.dig(:only) - extended_routes
    end

    def extended_routes
      @kwargs.dig(:only) - RESOURCEFUL_ACTIONS
    end

    def new_route(verb, _method, action, scope)
      self.class.send :define_method, _method do
        -> (controller) { send(verb, _method, to: "#{controller}##{action}", on: scope) }
      end
    end

  end
end

ActionDispatch::Routing::Mapper.__send__ :include, EitilWrapper::ExtendedResources

Version data entries

70 entries across 70 versions & 1 rubygems

Version Path
eitil-2.0.2 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-2.0.1 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-2.0.0 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-1.4.1 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-1.4.0 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-1.3.12 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-1.3.11 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-1.3.10 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-1.3.9 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-1.3.8 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-1.3.7 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-1.3.6 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-1.3.5 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-1.3.4 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-1.3.3 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-1.3.2 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-1.3.1 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-1.3.0 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-1.2.4 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb
eitil-1.2.3 eitil_wrapper/lib/eitil_wrapper/routes/extended_resources.rb