Module: Gcloud

Defined in:
lib/gcloud.rb,
lib/gcloud/gce.rb,
lib/gcloud/dns.rb,
lib/gcloud/pubsub.rb,
lib/gcloud/search.rb,
lib/gcloud/upload.rb,
lib/gcloud/errors.rb,
lib/gcloud/storage.rb,
lib/gcloud/logging.rb,
lib/gcloud/version.rb,
lib/gcloud/backoff.rb,
lib/gcloud/bigquery.rb,
lib/gcloud/dns/zone.rb,
lib/gcloud/datastore.rb,
lib/gcloud/dns/record.rb,
lib/gcloud/dns/change.rb,
lib/gcloud/dns/errors.rb,
lib/gcloud/dns/project.rb,
lib/gcloud/credentials.rb,
lib/gcloud/search/index.rb,
lib/gcloud/dns/importer.rb,
lib/gcloud/bigquery/job.rb,
lib/gcloud/pubsub/topic.rb,
lib/gcloud/storage/file.rb,
lib/gcloud/logging/sink.rb,
lib/gcloud/bigquery/view.rb,
lib/gcloud/search/fields.rb,
lib/gcloud/pubsub/errors.rb,
lib/gcloud/search/errors.rb,
lib/gcloud/bigquery/data.rb,
lib/gcloud/dns/zone/list.rb,
lib/gcloud/search/result.rb,
lib/gcloud/datastore/key.rb,
lib/gcloud/logging/entry.rb,
lib/gcloud/storage/bucket.rb,
lib/gcloud/pubsub/message.rb,
lib/gcloud/dns/connection.rb,
lib/gcloud/logging/errors.rb,
lib/gcloud/storage/errors.rb,
lib/gcloud/logging/metric.rb,
lib/gcloud/bigquery/table.rb,
lib/gcloud/search/project.rb,
lib/gcloud/logging/logger.rb,
lib/gcloud/pubsub/project.rb,
lib/gcloud/storage/project.rb,
lib/gcloud/bigquery/errors.rb,
lib/gcloud/dns/credentials.rb,
lib/gcloud/datastore/proto.rb,
lib/gcloud/logging/project.rb,
lib/gcloud/search/document.rb,
lib/gcloud/dns/change/list.rb,
lib/gcloud/dns/record/list.rb,
lib/gcloud/datastore/query.rb,
lib/gcloud/datastore/errors.rb,
lib/gcloud/storage/file/acl.rb,
lib/gcloud/logging/resource.rb,
lib/gcloud/resource_manager.rb,
lib/gcloud/bigquery/dataset.rb,
lib/gcloud/datastore/entity.rb,
lib/gcloud/bigquery/project.rb,
lib/gcloud/pubsub/connection.rb,
lib/gcloud/pubsub/topic/list.rb,
lib/gcloud/datastore/dataset.rb,
lib/gcloud/search/index/list.rb,
lib/gcloud/bigquery/copy_job.rb,
lib/gcloud/search/connection.rb,
lib/gcloud/storage/file/list.rb,
lib/gcloud/bigquery/load_job.rb,
lib/gcloud/bigquery/job/list.rb,
lib/gcloud/search/api_client.rb,
lib/gcloud/logging/sink/list.rb,
lib/gcloud/search/field_value.rb,
lib/gcloud/search/credentials.rb,
lib/gcloud/pubsub/credentials.rb,
lib/gcloud/logging/connection.rb,
lib/gcloud/storage/connection.rb,
lib/gcloud/logging/entry/list.rb,
lib/gcloud/storage/bucket/acl.rb,
lib/gcloud/search/result/list.rb,
lib/gcloud/bigquery/query_job.rb,
lib/gcloud/storage/credentials.rb,
lib/gcloud/pubsub/subscription.rb,
lib/gcloud/bigquery/query_data.rb,
lib/gcloud/logging/metric/list.rb,
lib/gcloud/bigquery/table/list.rb,
lib/gcloud/bigquery/connection.rb,
lib/gcloud/search/field_values.rb,
lib/gcloud/storage/bucket/list.rb,
lib/gcloud/storage/bucket/cors.rb,
lib/gcloud/logging/credentials.rb,
lib/gcloud/search/document/list.rb,
lib/gcloud/datastore/properties.rb,
lib/gcloud/datastore/connection.rb,
lib/gcloud/bigquery/extract_job.rb,
lib/gcloud/dns/zone/transaction.rb,
lib/gcloud/bigquery/credentials.rb,
lib/gcloud/storage/file/verifier.rb,
lib/gcloud/datastore/transaction.rb,
lib/gcloud/bigquery/dataset/list.rb,
lib/gcloud/datastore/credentials.rb,
lib/gcloud/bigquery/table/schema.rb,
lib/gcloud/bigquery/dataset/access.rb,
lib/gcloud/pubsub/received_message.rb,
lib/gcloud/logging/entry/operation.rb,
lib/gcloud/resource_manager/errors.rb,
lib/gcloud/resource_manager/project.rb,
lib/gcloud/resource_manager/manager.rb,
lib/gcloud/bigquery/insert_response.rb,
lib/gcloud/pubsub/subscription/list.rb,
lib/gcloud/logging/entry/http_request.rb,
lib/gcloud/resource_manager/connection.rb,
lib/gcloud/logging/resource_descriptor.rb,
lib/gcloud/resource_manager/credentials.rb,
lib/gcloud/resource_manager/project/list.rb,
lib/gcloud/datastore/dataset/query_results.rb,
lib/gcloud/resource_manager/project/updater.rb,
lib/gcloud/datastore/dataset/lookup_results.rb,
lib/gcloud/logging/resource_descriptor/list.rb

Overview

Google Cloud

Gcloud is the official library for interacting with the Google Cloud Platform. Google Cloud Platform is a set of modular cloud-based services that allow you to create anything from simple websites to complex applications.

Gcloud's goal is to provide a API that is familiar and comfortable to Rubyists. Authentication is handled by providing project and credential information, or if you are running on Google Compute Engine this configuration is taken care of for you.

You can learn more about various options for connection on the Authentication Guide.

Defined Under Namespace

Modules: Bigquery, Datastore, Dns, Logging, Pubsub, ResourceManager, Search, Storage, Upload Classes: Backoff, Error

Constant Summary collapse

VERSION =
"0.6.1"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.bigquery(project = nil, keyfile = nil, scope: nil) ⇒ Gcloud::Bigquery::Project

Creates a new Project instance connected to the BigQuery service. Each call creates a new connection.

Examples:

require "gcloud/bigquery"

bigquery = Gcloud.bigquery
dataset = bigquery.dataset "my_dataset"
table = dataset.table "my_table"


46
47
48
49
50
51
52
53
54
# File 'lib/gcloud/bigquery.rb', line 46

def self.bigquery project = nil, keyfile = nil, scope: nil
  project ||= Gcloud::Bigquery::Project.default_project
  if keyfile.nil?
    credentials = Gcloud::Bigquery::Credentials.default scope: scope
  else
    credentials = Gcloud::Bigquery::Credentials.new keyfile, scope: scope
  end
  Gcloud::Bigquery::Project.new project, credentials
end

.datastore(project = nil, keyfile = nil, scope: nil) ⇒ Gcloud::Datastore::Dataset

Creates a new object for connecting to the Datastore service. Each call creates a new connection.

Examples:

require "gcloud/datastore"

dataset = Gcloud.datastore "my-todo-project",
                           "/path/to/keyfile.json"

entity = dataset.entity "Task" do |t|
  t["description"] = "Get started with Google Cloud"
  t["completed"] = false
end

dataset.save entity


56
57
58
59
60
61
62
63
64
# File 'lib/gcloud/datastore.rb', line 56

def self.datastore project = nil, keyfile = nil, scope: nil
  project ||= Gcloud::Datastore::Dataset.default_project
  if keyfile.nil?
    credentials = Gcloud::Datastore::Credentials.default scope: scope
  else
    credentials = Gcloud::Datastore::Credentials.new keyfile, scope: scope
  end
  Gcloud::Datastore::Dataset.new project, credentials
end

.dns(project = nil, keyfile = nil, scope: nil) ⇒ Gcloud::Dns::Project

Creates a new Project instance connected to the DNS service. Each call creates a new connection.

Examples:

require "gcloud"

dns = Gcloud.dns "my-dns-project",
                 "/path/to/keyfile.json"

zone = dns.zone "example-com"


47
48
49
50
51
52
53
54
55
# File 'lib/gcloud/dns.rb', line 47

def self.dns project = nil, keyfile = nil, scope: nil
  project ||= Gcloud::Dns::Project.default_project
  if keyfile.nil?
    credentials = Gcloud::Dns::Credentials.default scope: scope
  else
    credentials = Gcloud::Dns::Credentials.new keyfile, scope: scope
  end
  Gcloud::Dns::Project.new project, credentials
end

.logging(project = nil, keyfile = nil, scope: nil) ⇒ Gcloud::Logging::Project

Creates a new object for connecting to the Logging service. Each call creates a new connection.

Examples:

require "gcloud/logging"

gcloud = Gcloud.new
logging = gcloud.logging
# ...


46
47
48
49
50
51
52
53
54
# File 'lib/gcloud/logging.rb', line 46

def self.logging project = nil, keyfile = nil, scope: nil
  project ||= Gcloud::Logging::Project.default_project
  if keyfile.nil?
    credentials = Gcloud::Logging::Credentials.default scope: scope
  else
    credentials = Gcloud::Logging::Credentials.new keyfile, scope: scope
  end
  Gcloud::Logging::Project.new project, credentials
end

.new(project = nil, keyfile = nil) ⇒ Gcloud

Creates a new object for connecting to Google Cloud.

Examples:

require "gcloud"

gcloud  = Gcloud.new
dataset = gcloud.datastore
pubsub  = gcloud.pubsub
storage = gcloud.storage


52
53
54
55
56
57
58
59
60
# File 'lib/gcloud.rb', line 52

def self.new project = nil, keyfile = nil
  gcloud = Object.new
  gcloud.instance_eval do
    @project = project
    @keyfile = keyfile
  end
  gcloud.extend Gcloud
  gcloud
end

.pubsub(project = nil, keyfile = nil, scope: nil) ⇒ Gcloud::Pubsub::Project

Creates a new object for connecting to the Pub/Sub service. Each call creates a new connection.

Examples:

require "gcloud/pubsub"

pubsub = Gcloud.pubsub

topic = pubsub.topic "my-topic"
topic.publish "task completed"


47
48
49
50
51
52
53
54
55
# File 'lib/gcloud/pubsub.rb', line 47

def self.pubsub project = nil, keyfile = nil, scope: nil
  project ||= Gcloud::Pubsub::Project.default_project
  if keyfile.nil?
    credentials = Gcloud::Pubsub::Credentials.default scope: scope
  else
    credentials = Gcloud::Pubsub::Credentials.new keyfile, scope: scope
  end
  Gcloud::Pubsub::Project.new project, credentials
end

.resource_manager(keyfile = nil, scope: nil) ⇒ Gcloud::ResourceManager::Manager

Creates a new Project instance connected to the Resource Manager service. Each call creates a new connection.

Examples:

require "gcloud/resource_manager"

resource_manager = Gcloud.resource_manager
resource_manager.projects.each do |project|
  puts projects.project_id
end


45
46
47
48
49
50
51
52
53
# File 'lib/gcloud/resource_manager.rb', line 45

def self.resource_manager keyfile = nil, scope: nil
  if keyfile.nil?
    credentials = Gcloud::ResourceManager::Credentials.default scope: scope
  else
    credentials = Gcloud::ResourceManager::Credentials.new keyfile,
                                                           scope: scope
  end
  Gcloud::ResourceManager::Manager.new credentials
end

.search(project = nil, keyfile = nil, scope: nil) ⇒ Gcloud::Search::Project

Creates a new Project instance connected to the Search service. Each call creates a new connection.



40
41
42
43
44
45
46
47
48
# File 'lib/gcloud/search.rb', line 40

def self.search project = nil, keyfile = nil, scope: nil
  project ||= Gcloud::Search::Project.default_project
  if keyfile.nil?
    credentials = Gcloud::Search::Credentials.default scope: scope
  else
    credentials = Gcloud::Search::Credentials.new keyfile, scope: scope
  end
  Gcloud::Search::Project.new project, credentials
end

.storage(project = nil, keyfile = nil, scope: nil) ⇒ Gcloud::Storage::Project

Creates a new object for connecting to the Storage service. Each call creates a new connection.

Examples:

require "gcloud/storage"

storage = Gcloud.storage "my-todo-project",
                         "/path/to/keyfile.json"

bucket = storage.bucket "my-bucket"
file = bucket.file "path/to/my-file.ext"


48
49
50
51
52
53
54
55
56
# File 'lib/gcloud/storage.rb', line 48

def self.storage project = nil, keyfile = nil, scope: nil
  project ||= Gcloud::Storage::Project.default_project
  if keyfile.nil?
    credentials = Gcloud::Storage::Credentials.default scope: scope
  else
    credentials = Gcloud::Storage::Credentials.new keyfile, scope: scope
  end
  Gcloud::Storage::Project.new project, credentials
end

Instance Method Details

#bigquery(scope: nil) ⇒ Gcloud::Bigquery::Project

Creates a new object for connecting to the BigQuery service. Each call creates a new connection.

Examples:

require "gcloud"

gcloud = Gcloud.new
bigquery = gcloud.bigquery
dataset = bigquery.dataset "my-dataset"
table = dataset.table "my-table"
table.data.each do |row|
  puts row
end

The default scope can be overridden with the scope option:

require "gcloud"

gcloud  = Gcloud.new
platform_scope = "https://www.googleapis.com/auth/cloud-platform"
bigquery = gcloud.bigquery scope: platform_scope


209
210
211
212
# File 'lib/gcloud.rb', line 209

def bigquery scope: nil
  require "gcloud/bigquery"
  Gcloud.bigquery @project, @keyfile, scope: scope
end

#datastore(scope: nil) ⇒ Gcloud::Datastore::Dataset

Creates a new object for connecting to the Datastore service. Each call creates a new connection.

Examples:

require "gcloud"

gcloud  = Gcloud.new
dataset = gcloud.datastore

entity = dataset.entity "Task" do |t|
  t["description"] = "Get started with Google Cloud"
  t["completed"] = false
end

dataset.save entity

You shouldn't need to override the default scope, but you can:

require "gcloud"

gcloud  = Gcloud.new
platform_scope = "https://www.googleapis.com/auth/cloud-platform"
dataset = gcloud.datastore scope: platform_scope


98
99
100
101
# File 'lib/gcloud.rb', line 98

def datastore scope: nil
  require "gcloud/datastore"
  Gcloud.datastore @project, @keyfile, scope: scope
end

#dns(scope: nil) ⇒ Gcloud::Dns::Project

Creates a new object for connecting to the DNS service. Each call creates a new connection.

Examples:

require "gcloud"

gcloud = Gcloud.new
dns = gcloud.dns
zone = dns.zone "example-zone"
zone.records.each do |record|
  puts record.name
end

The default scope can be overridden with the scope option:

require "gcloud"

gcloud  = Gcloud.new
readonly_scope = "https://www.googleapis.com/auth/ndev.clouddns.readonly"
dns = gcloud.dns scope: readonly_scope


246
247
248
249
# File 'lib/gcloud.rb', line 246

def dns scope: nil
  require "gcloud/dns"
  Gcloud.dns @project, @keyfile, scope: scope
end

#logging(scope: nil) ⇒ Gcloud::Logging::Project

Creates a new object for connecting to the Logging service. Each call creates a new connection.

Examples:

require "gcloud"

gcloud = Gcloud.new
logging = gcloud.logging
# ...

The default scope can be overridden with the scope option:

require "gcloud"

gcloud  = Gcloud.new
platform_scope = "https://www.googleapis.com/auth/cloud-platform"
logging = gcloud.logging scope: platform_scope


346
347
348
349
# File 'lib/gcloud.rb', line 346

def logging scope: nil
  require "gcloud/logging"
  Gcloud.logging @project, @keyfile, scope: scope
end

#pubsub(scope: nil) ⇒ Gcloud::Pubsub::Project

Creates a new object for connecting to the Pub/Sub service. Each call creates a new connection.

Examples:

require "gcloud"

gcloud = Gcloud.new
pubsub = gcloud.pubsub
topic = pubsub.topic "my-topic"
topic.publish "task completed"

The default scope can be overridden with the scope option:

require "gcloud"

gcloud  = Gcloud.new
platform_scope = "https://www.googleapis.com/auth/cloud-platform"
pubsub = gcloud.pubsub scope: platform_scope


171
172
173
174
# File 'lib/gcloud.rb', line 171

def pubsub scope: nil
  require "gcloud/pubsub"
  Gcloud.pubsub @project, @keyfile, scope: scope
end

#resource_manager(scope: nil) ⇒ Gcloud::ResourceManager::Manager

Creates a new object for connecting to the Resource Manager service. Each call creates a new connection.

Examples:

require "gcloud"

gcloud = Gcloud.new
resource_manager = gcloud.resource_manager
resource_manager.projects.each do |project|
  puts projects.project_id
end

The default scope can be overridden with the scope option:

require "gcloud"

gcloud  = Gcloud.new
readonly_scope = "https://www.googleapis.com/auth/cloudresourcemanager.readonly"
resource_manager = gcloud.resource_manager scope: readonly_scope


286
287
288
289
# File 'lib/gcloud.rb', line 286

def resource_manager scope: nil
  require "gcloud/resource_manager"
  Gcloud.resource_manager @keyfile, scope: scope
end

#search(scope: nil) ⇒ Gcloud::Search::Project

Creates a new object for connecting to the Search service. Each call creates a new connection.

Examples:

require "gcloud"


312
313
314
315
# File 'lib/gcloud.rb', line 312

def search scope: nil
  require "gcloud/search"
  Gcloud.search @project, @keyfile, scope: scope
end

#storage(scope: nil) ⇒ Gcloud::Storage::Project

Creates a new object for connecting to the Storage service. Each call creates a new connection.

Examples:

require "gcloud"

gcloud  = Gcloud.new
storage = gcloud.storage
bucket = storage.bucket "my-bucket"
file = bucket.file "path/to/my-file.ext"

The default scope can be overridden with the scope option:

require "gcloud"

gcloud  = Gcloud.new
readonly_scope = "https://www.googleapis.com/auth/devstorage.read_only"
readonly_storage = gcloud.storage scope: readonly_scope

See Also:



136
137
138
139
# File 'lib/gcloud.rb', line 136

def storage scope: nil
  require "gcloud/storage"
  Gcloud.storage @project, @keyfile, scope: scope
end