Class: Gcloud::Storage::Project
- Inherits:
-
Object
- Object
- Gcloud::Storage::Project
- Defined in:
- lib/gcloud/storage/project.rb
Overview
Project
Represents the project that storage buckets and files belong to. All data in Google Cloud Storage belongs inside a project. A project consists of a set of users, a set of APIs, billing, authentication, and monitoring settings for those APIs.
Gcloud::Storage::Project is the main object for interacting with Google Storage. Gcloud::Storage::Bucket objects are created, read, updated, and deleted by Gcloud::Storage::Project.
require "gcloud"
gcloud = Gcloud.new
storage = gcloud.storage
bucket = storage.bucket "my-bucket"
file = bucket.file "path/to/my-file.ext"
See Gcloud#storage
Instance Attribute Summary collapse
-
#connection ⇒ Object
The Connection object.
Class Method Summary collapse
-
.default_project ⇒ Object
Default project.
Instance Method Summary collapse
-
#bucket(bucket_name) ⇒ Object
(also: #find_bucket)
Retrieves bucket by name.
-
#buckets(options = {}) ⇒ Object
(also: #find_buckets)
Retrieves a list of buckets for the given project.
-
#create_bucket(bucket_name, options = {}) ⇒ Object
Creates a new bucket.
-
#initialize(project, credentials) ⇒ Project
constructor
Creates a new Project instance.
-
#project ⇒ Object
The Storage project connected to.
Constructor Details
#initialize(project, credentials) ⇒ Project
Creates a new Project instance.
See Gcloud#storage
55 56 57 58 59 |
# File 'lib/gcloud/storage/project.rb', line 55 def initialize project, credentials #:nodoc: project = project.to_s # Always cast to a string fail ArgumentError, "project is missing" if project.empty? @connection = Connection.new project, credentials end |
Instance Attribute Details
#connection ⇒ Object
The Connection object.
49 50 51 |
# File 'lib/gcloud/storage/project.rb', line 49 def connection @connection end |
Class Method Details
.default_project ⇒ Object
Default project.
80 81 82 83 84 85 |
# File 'lib/gcloud/storage/project.rb', line 80 def self.default_project #:nodoc: ENV["STORAGE_PROJECT"] || ENV["GCLOUD_PROJECT"] || ENV["GOOGLE_CLOUD_PROJECT"] || Gcloud::GCE.project_id end |
Instance Method Details
#bucket(bucket_name) ⇒ Object Also known as: find_bucket
Retrieves bucket by name.
Parameters
bucket_name-
Name of a bucket. (
String)
Returns
Gcloud::Storage::Bucket or nil if bucket does not exist
Example
require "gcloud"
gcloud = Gcloud.new
storage = gcloud.storage
bucket = storage.bucket "my-bucket"
puts bucket.name
181 182 183 184 185 186 187 188 189 |
# File 'lib/gcloud/storage/project.rb', line 181 def bucket bucket_name resp = connection.get_bucket bucket_name if resp.success? Bucket.from_gapi resp.data, connection else return nil if resp.data["error"]["code"] == 404 fail ApiError.from_response(resp) end end |
#buckets(options = {}) ⇒ Object Also known as: find_buckets
Retrieves a list of buckets for the given project.
Parameters
options-
An optional Hash for controlling additional behavior. (
Hash) options[:prefix]-
Filter results to buckets whose names begin with this prefix. (
String) options[:token]-
A previously-returned page token representing part of the larger set of results to view. (
String) options[:max]-
Maximum number of buckets to return. (
Integer)
Returns
Array of Gcloud::Storage::Bucket (Gcloud::Storage::Bucket::List)
Examples
require "gcloud"
gcloud = Gcloud.new
storage = gcloud.storage
buckets = storage.buckets
buckets.each do |bucket|
puts bucket.name
end
You can also retrieve all buckets whose names begin with a prefix using the :prefix option:
require "gcloud"
gcloud = Gcloud.new
storage = gcloud.storage
user_buckets = storage.buckets prefix: "user-"
If you have a significant number of buckets, you may need to paginate through them: (See Bucket::List#token)
require "gcloud"
gcloud = Gcloud.new
storage = gcloud.storage
all_buckets = []
tmp_buckets = storage.buckets
while tmp_buckets.any? do
tmp_buckets.each do |bucket|
all_buckets << bucket
end
# break loop if no more buckets available
break if tmp_buckets.token.nil?
# get the next group of buckets
tmp_buckets = storage.buckets token: tmp_buckets.token
end
149 150 151 152 153 154 155 156 |
# File 'lib/gcloud/storage/project.rb', line 149 def buckets = {} resp = connection.list_buckets if resp.success? Bucket::List.from_response resp, connection else fail ApiError.from_response(resp) end end |
#create_bucket(bucket_name, options = {}) ⇒ Object
Creates a new bucket.
Parameters
bucket_name-
Name of a bucket. (
String) options-
An optional Hash for controlling additional behavior. (
Hash) options[:retries]-
The number of times the API call should be retried. Default is Gcloud::Backoff.retries. (
Integer)
Returns
Gcloud::Storage::Bucket
Examples
require "gcloud"
gcloud = Gcloud.new
storage = gcloud.storage
bucket = storage.create_bucket "my-bucket"
The API call to create the bucket may be retried under certain conditions. See Gcloud::Backoff to control this behavior, or specify the wanted behavior in the call with the :retries: option:
require "gcloud"
gcloud = Gcloud.new
storage = gcloud.storage
bucket = storage.create_bucket "my-bucket", retries: 5
229 230 231 232 233 234 235 236 237 238 239 240 241 |
# File 'lib/gcloud/storage/project.rb', line 229 def create_bucket bucket_name, = {} [:acl] = Bucket::Acl.predefined_rule_for [:acl] default_acl = [:default_acl] default_acl = Bucket::DefaultAcl.predefined_rule_for default_acl [:default_acl] = default_acl resp = connection.insert_bucket bucket_name, if resp.success? Bucket.from_gapi resp.data, connection else fail ApiError.from_response(resp) end end |
#project ⇒ Object
The Storage project connected to.
Example
require "gcloud"
gcloud = Gcloud.new "my-todo-project",
"/path/to/keyfile.json"
storage = gcloud.storage
storage.project #=> "my-todo-project"
74 75 76 |
# File 'lib/gcloud/storage/project.rb', line 74 def project connection.project end |