rubyのclassでメンバ変数を一括でjson出力してRedisに登録する
はじめに
Redisでrubyのクラス情報を一気に登録したい場合について調査した。
jsonにして登録するのが良さそうとのことなので、classのメンバ変数をまとめて、json化したい
rubyのメンバ変数の一括取得
rubyのメンバ変数を一括で取得するのに、便利なメソッドがある。
http://ref.xaio.jp/ruby/classes/object/instance_variables
リファレンスの内容を以下に抜粋します。
class Book
def initialize(title, price)
@title = title; @price = price
end
end
book = Book.new("Programming Ruby", 2000)
p book.instance_variables # [:@title, :@price]
これを利用して、jsonでメンバ変数を一括出力出来ます。
jsonでのメンバ変数の一括出力
以下を参考にさせていただきました。
http://stackoverflow.com/questions/4464050/ruby-objects-and-json-serialization-without-rails
def to_json
hash = {}
self.instance_variables.each do |var|
hash[var] = self.instance_variable_get var
end
hash.to_json
end
def from_json! string
JSON.load(string).each do |var, val|
self.instance_variable_set var, val
end
end
redisへの登録
あとは、上記のto_jsonを用いてredisに登録するだけですね。
簡単のため、redisはローカルホストでポートは変更していないこととします。
先ほどのBookクラスに上記のto_jsonが実装されているものとします。
book = Book.new("Programming Ruby", 2000)
redis = Redis.new
redis.set "book" book.to_json
redis = Redis.new
book_json = redis.get "book"
book = Book.new
book.from_json! book_json
puts book.title # Programming Ruby
puts book.price # 2000
Author And Source
この問題について(rubyのclassでメンバ変数を一括でjson出力してRedisに登録する), 我々は、より多くの情報をここで見つけました https://qiita.com/Tterima/items/ed6f8e9b955c6f9c1bc8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .