#HTTPリクエストで
RubyでParse(parse.com)を利用する場合は、公式SDKがないので3rdパーティのgemを使う。
parse-ruby-clientが有名かと。
https://github.com/adelevie/parse-ruby-client
ただし、最近更新されていなくて、GeoQueriesが未実装のままになってる。
gemを使ってデータをParseにUPするのは簡単。
- Parse.initする
- Parse::Object.newでインスタンス生成
- インスタンスのsaveメソッドを呼ぶ
Parse.init :application_id => "",
:api_key => "",
:quiet => true
hoge.each do |h|
s = Parse::Object.new("hogehoge")
s["name"] = h["name"]
s["point"] = Parse::GeoPoint.new({
"latitude" => h["latitude"],
"longitude" => h["longitude"]
})
s.save
end
ただ、このループ回数が多いと、毎度HTTPリクエストしててデータ数が多い場合に長時間になって辛い。
#インポートで
Parseにはデータのインポート機能がある。
https://parse.com/docs/data#data-import
インポートはcsv or jsonで、今回はjsonを選択。
\nがなんだとか書いてあるが、osxなら問題ない。
手順としては、3つ。
- 配列とハッシュ作ってデータ入れる
- 前後におまけを付ける
- ParseのサイトからUPする
s2 = []
hoge.each do |h|
s = Hash.new
s["name"] = h["name"]
s["point"] = Parse::GeoPoint.new({
"latitude" => h["latitude"],
"longitude" => h["longitude"]
})
s2 << s
end
data = "{ \"results\": " + s2.to_json + "}"#おまけ付加
File.write("hoge.json", data)
Parse::Object.new("hogehoge")のままでもJSONは生成できるが、そのJSONにはclassNameが入っていて、ParseにUPしてもvalidationエラーになるので、ハッシュに変える。
GeoPointがそのままなのは、これをHashにするとString(中身はJSON)として扱われてしまうため。
GeoPointはvalidationエラーにならない。
あとはこれをParseのサイトにUPしてインポート完了を待つだけ。