RubyでCloudDataStoreに接続する

未分類

基本的には以下のサイトを参考にすればよい

Cloud Firestore の Datastore モードでの使用  |  Ruby の App Engine フレキシブル環境に関するドキュメント  |  Google Cloud

が!、一点公式ドキュメントには見当たらなかった(自分が見つけるのが下手なのだろう…)

制限があり、躓きました。

visits    = datastore.run query

の後に、vistis.countをしても300件までしか取れない…

業務上300件以上のデータを扱っていたので、これではまずいと調べてみたところ…
以下のように書く必要がありました。

visits.all.each

カウントの場合は、visits.all.count

require "digest/sha2"
require "sinatra"
require "google/cloud/datastore"

get "/" do
  datastore = Google::Cloud::Datastore.new

  # Save visit in Datastore
  visit = datastore.entity "Visit" do |v|
    v["user_ip"]   = Digest::SHA256.hexdigest request.ip
    v["timestamp"] = Time.now
  end
  datastore.save visit

  # Query the last 10 visits from the Datastore
  query     = datastore.query("Visit").order("timestamp", :desc).limit(10)
  visits    = datastore.run query

  response.write "Last 10 visits:\n"

  visits.all.each do |visit|
    response.write "Time: #{visit['timestamp']} Addr: #{visit['user_ip']}\n"
  end

  content_type "text/plain"
  status 200
end

コメント

タイトルとURLをコピーしました