No commit activity in last 3 years
No release in over 3 years
Access to Remote Rails Model by API and set to Local Model attribute.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

>= 0

Runtime

>= 4.2.0
 Project Readme

[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": "kenjiszk@example.com",
      "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": "sample@example.com",
      "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 = 'test@example.com' # 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.