Class: RoutingNumber

Inherits:
Object
  • Object
show all
Defined in:
lib/bank_routing/routing_numbers.rb

Defined Under Namespace

Classes: InvalidStore, MemStore, RedisStore, StoreBase

Constant Summary collapse

Stores =

class MemcacheStore < StoreBase

end

{
  default: MemStore,
  memory: MemStore,
  redis: RedisStore,
  # memcached: MemcachedStore
}
FORMAT =
[
  [:route,9],
  [:office_code,1],
  [:servicing_frb_number,9],
  [:record_type_code,1],
  [:change_date,6],
  [:new_routing_number,9],
  [:name,36],
  [:address,36],
  [:city,20],
  [:state,2],
  [:zip,5],
  [:zip_ext,4],
  [:phone_area,3],
  [:phone_prefix,3],
  [:phone_suffix,4],
  [:institution_status_code,1],
  [:data_view_code,1],
  [:filler,5]
].freeze
DefaultOptions =
{
  store_in: :memory,
  routing_data_url: "https://www.fededirectory.frb.org/FedACHdir.txt",
  routing_data_file: File.expand_path(File.dirname(__FILE__)) + "/../../data/FedACHdir.txt",
  fetch_fed_data: false,
  store_opts: {},
  mapping_file: File.expand_path(File.dirname(__FILE__) + "/../../data/mappings.json"),
  metadata_file: File.expand_path(File.dirname(__FILE__) + "/../../data/metadata.json")
}.freeze

Class Method Summary collapse

Class Method Details

.get(num) ⇒ Object Also known as: [], find



210
211
212
213
214
215
216
217
# File 'lib/bank_routing/routing_numbers.rb', line 210

def get(num)
  init!(options)
  if cnt = store.get(num.to_s)
    cnt
  else
    nil
  end
end

.init!(opts = {}) ⇒ Object



192
193
194
195
196
197
198
199
200
201
202
203
204
# File 'lib/bank_routing/routing_numbers.rb', line 192

def init!(opts = {})
  return if @initted
  @options = options.merge(opts)
  if options[:store_in]
    store_in options[:store_in], options[:store_opts]
  end
  unless store.loaded?
    log.info "Loading routing numbers..."
    load_routing_numbers
    log.info "Done loading routing numbers."
  end
  @initted = true
end

.options=(opts) ⇒ Object



206
207
208
# File 'lib/bank_routing/routing_numbers.rb', line 206

def options=(opts)
  @options = options.merge(opts)
end

.reconnect!Object



232
233
234
235
# File 'lib/bank_routing/routing_numbers.rb', line 232

def reconnect!
  log.info "Reconnecting!"
  store.reconnect!
end

.store_in(name, opts = {}) ⇒ Object

Raises:



221
222
223
224
225
226
227
228
229
230
# File 'lib/bank_routing/routing_numbers.rb', line 221

def store_in(name, opts={})
  raise InvalidStore unless s_cls = Stores[name.to_sym]
  return if @store.is_a?(s_cls)
  @store.shutdown! if @store
  @store = s_cls.new(opts.merge(logger: log))
  @initted = false
  options[:store_in] = name.to_sym
  options[:store_opts] = opts
  init!
end