Skip to content

kenjiszk/remote_attr_accessor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

[Beta] RemoteAttrAccessor

Purpose

Get remote server’s attributes and set them into local attributes via API.

For example : Micorservice’s user infomation

User’s infomation will be used by other servers. So, prepare remote(provider) server for common user infomation provider, and Other servers(client) use ‘remote_attr_accessor’ to get common infomation of users.

Settings

Set Config

Make file in “lib/remote_attr_accessor/config.rb” to Overwrite for your environment.

module RemoteAttrAccessor
  class Config
    def self.id_name
      'id'
    end

    def self.prefix
      'remote_'
    end

    def self.remote_json_key
      'users'
    end

    def self.remote_attrs
      [:email, :last_name, :first_name]
    end

    def self.remote_attrs_with_prefix
      @remote_attrs_with_prefix = remote_attrs.map{|attr| "#{prefix}#{attr}"}
    end
  end
end

Set API

Make file in “lib/remote_attr_accessor/api.rb” to Overwrite for your environments.

module RemoteAttrAccessor

class Api
  def self.get_remote_attrs(ids)
    # Write here API access code
  end

  def self.upsert_remote_attr(params)
    # Write here API access code
  end
end

end

Response format of RemoteAttrAccessor::API.get_remote_attrs

{
  "users": {
    "1": {
      "id": 1,
      "email": "[email protected]",
      "last_name": szk,
      "first_name": kenji,
      "created_at": "2016-05-31T18:04:05.000Z",
      "updated_at": "2016-06-03T05:37:51.000Z"
    },
    "2": {
      "id": 2,
      "email": "[email protected]",
      "last_name": ple,
      "first_name": sam,
      "created_at": "2016-05-31T07:51:10.000Z",
      "updated_at": "2016-05-31T07:51:10.000Z"
    }
  }
}

How to get/set remote attribute

Use sample for “User model”.

users = User.limit(1)
user.first.remote_email  # Get users email from remote server
user.first.remote_email = '[email protected]' # Set users email to remote server

Bulk get from remote attribute

users = User.limit(1)
RemoteAttrAccessor::Bulk.load_remote_attr(users) # Get users info in bulk and set instance variable
user.first.remote_email # Not access to remote server

This project rocks and uses MIT-LICENSE.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages