概要
メモがてら残しておきます
Firebase の認証はレガシーな Database Secret を使っています
環境
- macOS 10.14.5
- Ruby 2.6.2p47
準備
bundle init
vim Gemfile
gem "firebase"
gem "redis"
bundle install --path vendor
アプリ
vim app.rb
require './lib/my_fb.rb'
require './lib/my_redis.rb'
p MyRedis.store(MyFB.fetch_all)
firebase の処理
vim lib/my_fb.rb
require 'firebase'
module MyFB
BASE_URL = 'https://product_id.firebaseio.com/'
SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
def fetch_all
client = Firebase::Client.new(BASE_URL, SECRET)
ret = {}
ret.store('category1', client.get('db1/category1').body)
ret.store('category2', client.get('db1/category2').body)
ret
end
module_function :fetch_all
end
Redis の処理
vim lib/my_redis.rb
require 'redis'
require 'json'
module MyRedis
def store(ret)
client = Redis.new
sum = 0
ret.each do |key, ary|
ary.each_with_index do |p, i|
client.set("#{key}_#{i}", p.to_json)
end
client.set("#{key}", ary.length)
sum += ary.length
end
sum
end
module_function :store
end
Redis には category1_0
のような key で登録します
後からインデックスで検索、ループ処理しやすいように各カテゴリごとのデータのサイズを category1
という key に登録しています
実行
bundle exec ruby app.rb
動作確認
redis-cli get category1_0
で JSON の値が取得できれば OK
また redis-cli get category1
でコンテンツの数が取得できれば OK
最後に
サブカテゴリみたいに更に階層が深い場合にはループを増やせば OK です
Redis も localhost を前提にしているので外部なのであれば URL を指定してください
0 件のコメント:
コメントを投稿