aws-sdk 1.8.5 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.yardopts +1 -0
- data/README.rdoc +8 -0
- data/lib/aws-sdk.rb +39 -35
- data/lib/aws/api_config/CloudFront-2012-07-01.yml +2398 -0
- data/lib/aws/api_config/DirectConnect-2012-10-25.yml +475 -0
- data/lib/aws/api_config/DynamoDB-2011-12-05.yml +8 -0
- data/lib/aws/api_config/DynamoDB-2012-08-10.yml +1516 -0
- data/lib/aws/api_config/OpsWorks-2013-02-18.yml +2 -2
- data/lib/aws/auto_scaling.rb +44 -44
- data/lib/aws/auto_scaling/activity.rb +1 -1
- data/lib/aws/auto_scaling/activity_collection.rb +14 -15
- data/lib/aws/auto_scaling/client.rb +277 -277
- data/lib/aws/auto_scaling/config.rb +1 -1
- data/lib/aws/auto_scaling/group.rb +35 -36
- data/lib/aws/auto_scaling/group_collection.rb +10 -10
- data/lib/aws/auto_scaling/group_options.rb +19 -19
- data/lib/aws/auto_scaling/instance.rb +27 -27
- data/lib/aws/auto_scaling/instance_collection.rb +10 -10
- data/lib/aws/auto_scaling/launch_configuration.rb +3 -3
- data/lib/aws/auto_scaling/launch_configuration_collection.rb +1 -1
- data/lib/aws/auto_scaling/notification_configuration.rb +2 -2
- data/lib/aws/auto_scaling/notification_configuration_collection.rb +37 -38
- data/lib/aws/auto_scaling/scaling_policy.rb +3 -3
- data/lib/aws/auto_scaling/scaling_policy_collection.rb +6 -6
- data/lib/aws/auto_scaling/scaling_policy_options.rb +8 -7
- data/lib/aws/auto_scaling/scheduled_action.rb +3 -3
- data/lib/aws/auto_scaling/scheduled_action_collection.rb +28 -28
- data/lib/aws/auto_scaling/tag_collection.rb +30 -28
- data/lib/aws/cloud_formation.rb +95 -94
- data/lib/aws/cloud_formation/client.rb +136 -133
- data/lib/aws/cloud_formation/config.rb +1 -1
- data/lib/aws/cloud_formation/stack.rb +37 -37
- data/lib/aws/cloud_formation/stack_collection.rb +28 -27
- data/lib/aws/cloud_formation/stack_event.rb +9 -11
- data/lib/aws/cloud_formation/stack_output.rb +1 -1
- data/lib/aws/cloud_formation/stack_resource.rb +6 -6
- data/lib/aws/cloud_formation/stack_resource_collection.rb +11 -12
- data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +11 -11
- data/lib/aws/cloud_formation/stack_summary_collection.rb +39 -39
- data/lib/aws/cloud_front.rb +21 -21
- data/lib/aws/cloud_front/client.rb +853 -652
- data/lib/aws/cloud_front/request.rb +3 -0
- data/lib/aws/cloud_search.rb +22 -22
- data/lib/aws/cloud_search/client.rb +322 -315
- data/lib/aws/cloud_search/config.rb +1 -1
- data/lib/aws/cloud_watch.rb +39 -39
- data/lib/aws/cloud_watch/alarm.rb +55 -37
- data/lib/aws/cloud_watch/alarm_collection.rb +18 -18
- data/lib/aws/cloud_watch/alarm_history_item_collection.rb +2 -2
- data/lib/aws/cloud_watch/client.rb +360 -146
- data/lib/aws/cloud_watch/config.rb +1 -1
- data/lib/aws/cloud_watch/metric.rb +15 -15
- data/lib/aws/cloud_watch/metric_alarm_collection.rb +17 -17
- data/lib/aws/cloud_watch/metric_collection.rb +16 -16
- data/lib/aws/cloud_watch/metric_statistics.rb +11 -11
- data/lib/aws/core.rb +243 -225
- data/lib/aws/core/async_handle.rb +13 -13
- data/lib/aws/core/cacheable.rb +14 -15
- data/lib/aws/core/client.rb +40 -15
- data/lib/aws/core/collection.rb +42 -46
- data/lib/aws/core/collection/with_limit_and_next_token.rb +1 -1
- data/lib/aws/core/collection/with_next_token.rb +1 -1
- data/lib/aws/core/configuration.rb +97 -133
- data/lib/aws/core/credential_providers.rb +16 -16
- data/lib/aws/core/data.rb +23 -23
- data/lib/aws/core/http/connection_pool.rb +348 -0
- data/lib/aws/core/http/net_http_handler.rb +17 -26
- data/lib/aws/core/http/patch.rb +102 -0
- data/lib/aws/core/http/request.rb +13 -19
- data/lib/aws/core/http/response.rb +2 -2
- data/lib/aws/core/lazy_error_classes.rb +17 -17
- data/lib/aws/core/log_formatter.rb +70 -104
- data/lib/aws/core/options/json_serializer.rb +1 -1
- data/lib/aws/core/options/validator.rb +4 -4
- data/lib/aws/core/page_result.rb +8 -8
- data/lib/aws/core/policy.rb +49 -49
- data/lib/aws/core/region.rb +72 -0
- data/lib/aws/core/region_collection.rb +106 -0
- data/lib/aws/core/resource.rb +5 -5
- data/lib/aws/core/response.rb +20 -17
- data/lib/aws/core/rest_request_builder.rb +4 -4
- data/lib/aws/core/service_interface.rb +24 -2
- data/lib/aws/core/signature/version_3.rb +2 -2
- data/lib/aws/core/uri_escape.rb +1 -1
- data/lib/aws/core/xml/frame_stack.rb +1 -1
- data/lib/aws/core/xml/grammar.rb +3 -4
- data/lib/aws/core/xml/sax_handlers/libxml.rb +2 -2
- data/lib/aws/core/xml/sax_handlers/nokogiri.rb +3 -3
- data/lib/aws/core/xml/sax_handlers/rexml.rb +5 -5
- data/lib/aws/core/xml/stub.rb +9 -9
- data/lib/aws/data_pipeline.rb +21 -21
- data/lib/aws/data_pipeline/client.rb +189 -133
- data/lib/aws/data_pipeline/config.rb +1 -1
- data/lib/aws/direct_connect.rb +74 -0
- data/lib/aws/direct_connect/client.rb +253 -0
- data/lib/aws/direct_connect/config.rb +18 -0
- data/lib/aws/direct_connect/errors.rb +22 -0
- data/lib/aws/direct_connect/request.rb +27 -0
- data/lib/aws/dynamo_db.rb +71 -69
- data/lib/aws/dynamo_db/attribute_collection.rb +53 -58
- data/lib/aws/dynamo_db/batch_get.rb +23 -23
- data/lib/aws/dynamo_db/batch_write.rb +43 -43
- data/lib/aws/dynamo_db/binary.rb +9 -9
- data/lib/aws/dynamo_db/client.rb +494 -509
- data/lib/aws/dynamo_db/client_base.rb +91 -0
- data/lib/aws/dynamo_db/client_v2.rb +825 -0
- data/lib/aws/dynamo_db/config.rb +1 -1
- data/lib/aws/dynamo_db/item.rb +10 -10
- data/lib/aws/dynamo_db/item_collection.rb +75 -75
- data/lib/aws/dynamo_db/table.rb +85 -85
- data/lib/aws/dynamo_db/table_collection.rb +13 -13
- data/lib/aws/ec2.rb +132 -142
- data/lib/aws/ec2/attachment.rb +31 -36
- data/lib/aws/ec2/attachment_collection.rb +1 -1
- data/lib/aws/ec2/availability_zone.rb +4 -4
- data/lib/aws/ec2/client.rb +2272 -2125
- data/lib/aws/ec2/config.rb +1 -1
- data/lib/aws/ec2/customer_gateway.rb +6 -6
- data/lib/aws/ec2/customer_gateway_collection.rb +6 -6
- data/lib/aws/ec2/dhcp_options.rb +3 -3
- data/lib/aws/ec2/dhcp_options_collection.rb +10 -10
- data/lib/aws/ec2/elastic_ip.rb +15 -15
- data/lib/aws/ec2/elastic_ip_collection.rb +11 -15
- data/lib/aws/ec2/export_task.rb +4 -4
- data/lib/aws/ec2/export_task_collection.rb +11 -11
- data/lib/aws/ec2/filtered_collection.rb +6 -8
- data/lib/aws/ec2/image.rb +46 -40
- data/lib/aws/ec2/image_collection.rb +44 -52
- data/lib/aws/ec2/instance.rb +64 -62
- data/lib/aws/ec2/instance_collection.rb +47 -50
- data/lib/aws/ec2/internet_gateway.rb +6 -6
- data/lib/aws/ec2/internet_gateway/attachment.rb +13 -13
- data/lib/aws/ec2/internet_gateway_collection.rb +3 -3
- data/lib/aws/ec2/key_pair.rb +3 -3
- data/lib/aws/ec2/key_pair_collection.rb +12 -12
- data/lib/aws/ec2/network_acl.rb +39 -39
- data/lib/aws/ec2/network_acl/association.rb +2 -2
- data/lib/aws/ec2/network_acl/entry.rb +22 -22
- data/lib/aws/ec2/network_acl_collection.rb +2 -2
- data/lib/aws/ec2/network_interface.rb +13 -4
- data/lib/aws/ec2/network_interface/attachment.rb +3 -3
- data/lib/aws/ec2/network_interface_collection.rb +5 -5
- data/lib/aws/ec2/permission_collection.rb +1 -1
- data/lib/aws/ec2/region.rb +6 -6
- data/lib/aws/ec2/region_collection.rb +1 -1
- data/lib/aws/ec2/reserved_instances_collection.rb +2 -2
- data/lib/aws/ec2/reserved_instances_offering_collection.rb +2 -2
- data/lib/aws/ec2/resource_tag_collection.rb +5 -5
- data/lib/aws/ec2/route_table.rb +14 -14
- data/lib/aws/ec2/route_table/association.rb +22 -22
- data/lib/aws/ec2/route_table/route.rb +8 -8
- data/lib/aws/ec2/route_table_collection.rb +3 -3
- data/lib/aws/ec2/security_group.rb +39 -41
- data/lib/aws/ec2/security_group_collection.rb +19 -21
- data/lib/aws/ec2/snapshot.rb +3 -3
- data/lib/aws/ec2/snapshot_collection.rb +11 -12
- data/lib/aws/ec2/subnet.rb +2 -2
- data/lib/aws/ec2/subnet_collection.rb +17 -17
- data/lib/aws/ec2/tag_collection.rb +1 -1
- data/lib/aws/ec2/tagged_collection.rb +7 -7
- data/lib/aws/ec2/tagged_item.rb +10 -10
- data/lib/aws/ec2/volume.rb +16 -16
- data/lib/aws/ec2/volume_collection.rb +9 -12
- data/lib/aws/ec2/vpc.rb +6 -6
- data/lib/aws/ec2/vpc_collection.rb +10 -10
- data/lib/aws/ec2/vpn_connection.rb +4 -4
- data/lib/aws/ec2/vpn_connection/telemetry.rb +1 -1
- data/lib/aws/ec2/vpn_connection_collection.rb +6 -6
- data/lib/aws/ec2/vpn_gateway.rb +2 -2
- data/lib/aws/ec2/vpn_gateway_collection.rb +5 -5
- data/lib/aws/elastic_beanstalk.rb +12 -12
- data/lib/aws/elastic_beanstalk/client.rb +376 -368
- data/lib/aws/elastic_beanstalk/config.rb +1 -1
- data/lib/aws/elastic_transcoder.rb +5 -5
- data/lib/aws/elastic_transcoder/client.rb +283 -283
- data/lib/aws/elastic_transcoder/config.rb +1 -1
- data/lib/aws/elasticache.rb +12 -12
- data/lib/aws/elasticache/client.rb +484 -479
- data/lib/aws/elasticache/config.rb +1 -1
- data/lib/aws/elb.rb +23 -23
- data/lib/aws/elb/availability_zone_collection.rb +34 -34
- data/lib/aws/elb/backend_server_policy_collection.rb +24 -24
- data/lib/aws/elb/client.rb +153 -153
- data/lib/aws/elb/config.rb +1 -1
- data/lib/aws/elb/errors.rb +1 -1
- data/lib/aws/elb/instance_collection.rb +20 -25
- data/lib/aws/elb/listener.rb +3 -3
- data/lib/aws/elb/listener_collection.rb +8 -8
- data/lib/aws/elb/load_balancer.rb +15 -16
- data/lib/aws/elb/load_balancer_collection.rb +36 -24
- data/lib/aws/elb/load_balancer_policy.rb +1 -1
- data/lib/aws/elb/load_balancer_policy_collection.rb +5 -5
- data/lib/aws/emr.rb +28 -26
- data/lib/aws/emr/client.rb +165 -149
- data/lib/aws/emr/config.rb +1 -1
- data/lib/aws/emr/instance_group.rb +1 -1
- data/lib/aws/emr/instance_group_collection.rb +1 -1
- data/lib/aws/emr/job_flow.rb +27 -26
- data/lib/aws/emr/job_flow_collection.rb +34 -34
- data/lib/aws/errors.rb +7 -7
- data/lib/aws/glacier.rb +21 -21
- data/lib/aws/glacier/archive_collection.rb +2 -2
- data/lib/aws/glacier/client.rb +139 -140
- data/lib/aws/glacier/config.rb +1 -1
- data/lib/aws/glacier/vault.rb +2 -2
- data/lib/aws/glacier/vault_collection.rb +1 -1
- data/lib/aws/iam.rb +133 -144
- data/lib/aws/iam/access_key.rb +17 -17
- data/lib/aws/iam/access_key_collection.rb +22 -22
- data/lib/aws/iam/account_alias_collection.rb +2 -2
- data/lib/aws/iam/client.rb +429 -420
- data/lib/aws/iam/collection.rb +1 -1
- data/lib/aws/iam/config.rb +2 -2
- data/lib/aws/iam/group.rb +8 -8
- data/lib/aws/iam/group_collection.rb +16 -16
- data/lib/aws/iam/group_policy_collection.rb +6 -6
- data/lib/aws/iam/group_user_collection.rb +3 -3
- data/lib/aws/iam/mfa_device.rb +1 -1
- data/lib/aws/iam/mfa_device_collection.rb +9 -9
- data/lib/aws/iam/policy_collection.rb +4 -4
- data/lib/aws/iam/resource.rb +2 -2
- data/lib/aws/iam/server_certificate.rb +1 -1
- data/lib/aws/iam/server_certificate_collection.rb +15 -15
- data/lib/aws/iam/signing_certificate.rb +29 -29
- data/lib/aws/iam/signing_certificate_collection.rb +23 -23
- data/lib/aws/iam/user.rb +33 -38
- data/lib/aws/iam/user_collection.rb +27 -27
- data/lib/aws/iam/user_group_collection.rb +3 -3
- data/lib/aws/iam/user_policy_collection.rb +6 -6
- data/lib/aws/iam/virtual_mfa_device.rb +12 -12
- data/lib/aws/iam/virtual_mfa_device_collection.rb +4 -4
- data/lib/aws/import_export.rb +22 -21
- data/lib/aws/import_export/client.rb +47 -43
- data/lib/aws/ops_works.rb +5 -5
- data/lib/aws/ops_works/client.rb +484 -438
- data/lib/aws/ops_works/config.rb +1 -1
- data/lib/aws/rails.rb +34 -34
- data/lib/aws/rds.rb +18 -18
- data/lib/aws/rds/client.rb +1286 -1277
- data/lib/aws/rds/config.rb +1 -1
- data/lib/aws/rds/db_instance.rb +15 -4
- data/lib/aws/rds/db_snapshot.rb +1 -1
- data/lib/aws/record.rb +50 -24
- data/lib/aws/record/abstract_base.rb +52 -60
- data/lib/aws/record/attributes.rb +79 -79
- data/lib/aws/record/conversion.rb +1 -1
- data/lib/aws/record/dirty_tracking.rb +69 -67
- data/lib/aws/record/errors.rb +21 -21
- data/lib/aws/record/exceptions.rb +2 -2
- data/lib/aws/record/hash_model.rb +20 -21
- data/lib/aws/record/hash_model/attributes.rb +13 -15
- data/lib/aws/record/hash_model/finder_methods.rb +46 -46
- data/lib/aws/record/hash_model/scope.rb +31 -31
- data/lib/aws/record/model.rb +136 -136
- data/lib/aws/record/model/attributes.rb +57 -59
- data/lib/aws/record/model/finder_methods.rb +67 -67
- data/lib/aws/record/model/scope.rb +48 -49
- data/lib/aws/record/naming.rb +1 -1
- data/lib/aws/record/scope.rb +23 -19
- data/lib/aws/record/validations.rb +253 -271
- data/lib/aws/record/validator.rb +3 -3
- data/lib/aws/record/validators/acceptance.rb +1 -3
- data/lib/aws/record/validators/block.rb +1 -3
- data/lib/aws/record/validators/confirmation.rb +1 -3
- data/lib/aws/record/validators/count.rb +2 -4
- data/lib/aws/record/validators/exclusion.rb +2 -4
- data/lib/aws/record/validators/format.rb +2 -4
- data/lib/aws/record/validators/inclusion.rb +1 -3
- data/lib/aws/record/validators/length.rb +5 -7
- data/lib/aws/record/validators/method.rb +1 -3
- data/lib/aws/record/validators/numericality.rb +6 -8
- data/lib/aws/record/validators/presence.rb +1 -3
- data/lib/aws/redshift.rb +14 -14
- data/lib/aws/redshift/client.rb +596 -592
- data/lib/aws/redshift/config.rb +1 -1
- data/lib/aws/route_53.rb +30 -30
- data/lib/aws/route_53/change_batch.rb +7 -7
- data/lib/aws/route_53/client.rb +188 -152
- data/lib/aws/route_53/hosted_zone.rb +4 -4
- data/lib/aws/route_53/hosted_zone_collection.rb +7 -7
- data/lib/aws/route_53/resource_record_set.rb +10 -10
- data/lib/aws/route_53/resource_record_set_collection.rb +6 -6
- data/lib/aws/s3.rb +79 -79
- data/lib/aws/s3/access_control_list.rb +44 -36
- data/lib/aws/s3/acl_options.rb +51 -51
- data/lib/aws/s3/bucket.rb +146 -146
- data/lib/aws/s3/bucket_collection.rb +21 -21
- data/lib/aws/s3/bucket_lifecycle_configuration.rb +81 -82
- data/lib/aws/s3/bucket_tag_collection.rb +4 -2
- data/lib/aws/s3/cipher_io.rb +5 -4
- data/lib/aws/s3/client.rb +89 -84
- data/lib/aws/s3/client/xml.rb +1 -1
- data/lib/aws/s3/config.rb +7 -1
- data/lib/aws/s3/cors_rule.rb +2 -0
- data/lib/aws/s3/cors_rule_collection.rb +42 -40
- data/lib/aws/s3/data_options.rb +16 -11
- data/lib/aws/s3/encryption_utils.rb +2 -2
- data/lib/aws/s3/errors.rb +7 -7
- data/lib/aws/s3/multipart_upload.rb +30 -33
- data/lib/aws/s3/multipart_upload_collection.rb +8 -6
- data/lib/aws/s3/object_collection.rb +35 -35
- data/lib/aws/s3/object_metadata.rb +6 -6
- data/lib/aws/s3/object_version.rb +4 -4
- data/lib/aws/s3/object_version_collection.rb +15 -15
- data/lib/aws/s3/policy.rb +2 -2
- data/lib/aws/s3/prefixed_collection.rb +9 -5
- data/lib/aws/s3/presigned_post.rb +39 -37
- data/lib/aws/s3/request.rb +11 -11
- data/lib/aws/s3/s3_object.rb +210 -200
- data/lib/aws/s3/tree.rb +25 -27
- data/lib/aws/s3/tree/child_collection.rb +3 -3
- data/lib/aws/s3/tree/leaf_node.rb +2 -2
- data/lib/aws/s3/tree/parent.rb +1 -1
- data/lib/aws/s3/website_configuration.rb +13 -13
- data/lib/aws/simple_db.rb +83 -83
- data/lib/aws/simple_db/attribute.rb +9 -7
- data/lib/aws/simple_db/attribute_collection.rb +22 -13
- data/lib/aws/simple_db/client.rb +107 -107
- data/lib/aws/simple_db/config.rb +7 -1
- data/lib/aws/simple_db/consistent_read_option.rb +5 -5
- data/lib/aws/simple_db/domain.rb +4 -2
- data/lib/aws/simple_db/domain_collection.rb +4 -4
- data/lib/aws/simple_db/domain_metadata.rb +5 -5
- data/lib/aws/simple_db/errors.rb +9 -9
- data/lib/aws/simple_db/item.rb +5 -5
- data/lib/aws/simple_db/item_collection.rb +83 -81
- data/lib/aws/simple_db/item_data.rb +4 -4
- data/lib/aws/simple_db/put_attributes.rb +3 -3
- data/lib/aws/simple_email_service.rb +140 -140
- data/lib/aws/simple_email_service/client.rb +82 -76
- data/lib/aws/simple_email_service/config.rb +1 -2
- data/lib/aws/simple_email_service/email_address_collection.rb +3 -3
- data/lib/aws/simple_email_service/identity.rb +8 -8
- data/lib/aws/simple_email_service/quotas.rb +8 -6
- data/lib/aws/simple_workflow.rb +106 -106
- data/lib/aws/simple_workflow/activity_task.rb +15 -22
- data/lib/aws/simple_workflow/activity_task_collection.rb +15 -15
- data/lib/aws/simple_workflow/activity_type.rb +23 -23
- data/lib/aws/simple_workflow/activity_type_collection.rb +23 -23
- data/lib/aws/simple_workflow/client.rb +1004 -956
- data/lib/aws/simple_workflow/config.rb +1 -1
- data/lib/aws/simple_workflow/count.rb +5 -5
- data/lib/aws/simple_workflow/decision_task.rb +129 -129
- data/lib/aws/simple_workflow/decision_task_collection.rb +59 -59
- data/lib/aws/simple_workflow/domain.rb +11 -11
- data/lib/aws/simple_workflow/domain_collection.rb +26 -26
- data/lib/aws/simple_workflow/history_event.rb +32 -32
- data/lib/aws/simple_workflow/history_event_collection.rb +3 -3
- data/lib/aws/simple_workflow/option_formatters.rb +5 -5
- data/lib/aws/simple_workflow/request.rb +1 -1
- data/lib/aws/simple_workflow/resource.rb +1 -1
- data/lib/aws/simple_workflow/type.rb +8 -8
- data/lib/aws/simple_workflow/type_collection.rb +15 -15
- data/lib/aws/simple_workflow/workflow_execution.rb +70 -72
- data/lib/aws/simple_workflow/workflow_execution_collection.rb +130 -130
- data/lib/aws/simple_workflow/workflow_type.rb +27 -25
- data/lib/aws/simple_workflow/workflow_type_collection.rb +20 -20
- data/lib/aws/sns.rb +25 -25
- data/lib/aws/sns/client.rb +55 -55
- data/lib/aws/sns/config.rb +1 -1
- data/lib/aws/sns/policy.rb +1 -1
- data/lib/aws/sns/subscription.rb +7 -7
- data/lib/aws/sns/subscription_collection.rb +5 -5
- data/lib/aws/sns/topic.rb +49 -49
- data/lib/aws/sns/topic_collection.rb +2 -2
- data/lib/aws/sns/topic_subscription_collection.rb +5 -5
- data/lib/aws/sqs.rb +20 -20
- data/lib/aws/sqs/client.rb +78 -78
- data/lib/aws/sqs/config.rb +1 -1
- data/lib/aws/sqs/errors.rb +12 -12
- data/lib/aws/sqs/queue.rb +66 -67
- data/lib/aws/sqs/queue_collection.rb +16 -8
- data/lib/aws/sqs/received_message.rb +7 -6
- data/lib/aws/storage_gateway.rb +21 -21
- data/lib/aws/storage_gateway/client.rb +269 -202
- data/lib/aws/storage_gateway/config.rb +1 -1
- data/lib/aws/sts.rb +10 -8
- data/lib/aws/sts/client.rb +35 -35
- data/lib/aws/sts/session.rb +3 -3
- data/lib/aws/version.rb +1 -2
- metadata +23 -21
- data/lib/aws/core/autoloader.rb +0 -64
- data/lib/net/http/connection_pool.rb +0 -226
- data/lib/net/http/connection_pool/connection.rb +0 -189
- data/lib/net/http/connection_pool/session.rb +0 -126
|
@@ -16,30 +16,32 @@ module AWS
|
|
|
16
16
|
|
|
17
17
|
# Provides a way to track changes in your records.
|
|
18
18
|
#
|
|
19
|
-
#
|
|
19
|
+
# my_book = Book['bookid']
|
|
20
20
|
#
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
21
|
+
# my_book.changed? #=> false
|
|
22
|
+
# my_book.title #=> "My Book"
|
|
23
|
+
# my_book.title = "My Awesome Book"
|
|
24
|
+
# my_book.changed? #=> true
|
|
25
|
+
#
|
|
26
|
+
# my_book = Book['bookid']
|
|
25
27
|
#
|
|
26
28
|
# You can inspect further and get a list of changed attributes
|
|
27
29
|
#
|
|
28
|
-
#
|
|
30
|
+
# my_book.changed #=> ['title']
|
|
29
31
|
#
|
|
30
32
|
# Or you can get a more detailed description of the changes. {#changes}
|
|
31
|
-
# returns a hash of changed attributes (keys) with their old and new
|
|
33
|
+
# returns a hash of changed attributes (keys) with their old and new
|
|
32
34
|
# values.
|
|
33
|
-
#
|
|
34
|
-
#
|
|
35
|
-
#
|
|
35
|
+
#
|
|
36
|
+
# my_book.changes
|
|
37
|
+
# #=> { 'title' => ['My Book', 'My Awesome Book']
|
|
36
38
|
#
|
|
37
39
|
# For every configured attribute you also get a handful of methods
|
|
38
40
|
# for inspecting changes on that attribute. Given the following
|
|
39
41
|
# attribute:
|
|
40
42
|
#
|
|
41
|
-
#
|
|
42
|
-
#
|
|
43
|
+
# string_attr :title
|
|
44
|
+
#
|
|
43
45
|
# You can now call any of the following methods:
|
|
44
46
|
#
|
|
45
47
|
# * title_changed?
|
|
@@ -49,73 +51,73 @@ module AWS
|
|
|
49
51
|
# * title_will_change!
|
|
50
52
|
#
|
|
51
53
|
# Given the title change from above:
|
|
52
|
-
#
|
|
53
|
-
# my_book.title_changed? #=> true
|
|
54
|
-
# my_book.title_change #=> ['My Book', 'My Awesome Book']
|
|
55
|
-
# my_book.title_was #=> ['My Book']
|
|
56
54
|
#
|
|
57
|
-
#
|
|
58
|
-
#
|
|
55
|
+
# my_book.title_changed? #=> true
|
|
56
|
+
# my_book.title_change #=> ['My Book', 'My Awesome Book']
|
|
57
|
+
# my_book.title_was #=> ['My Book']
|
|
59
58
|
#
|
|
60
|
-
#
|
|
59
|
+
# my_book.reset_title!
|
|
60
|
+
# my_book.title #=> 'My Book'
|
|
61
61
|
#
|
|
62
|
-
#
|
|
62
|
+
# ## In-Place Editing
|
|
63
|
+
#
|
|
64
|
+
# Dirty tracking works by comparing incoming attribute values upon
|
|
63
65
|
# assignment against the value that was there previously. If you
|
|
64
66
|
# use functions against the value that modify it (like gsub!)
|
|
65
67
|
# you must notify your record about the coming change.
|
|
66
68
|
#
|
|
67
|
-
#
|
|
68
|
-
#
|
|
69
|
-
#
|
|
70
|
-
#
|
|
69
|
+
# my_book.title #=> 'My Book'
|
|
70
|
+
# my_book.title_will_change!
|
|
71
|
+
# my_book.title.gsub!(/My/, 'Your')
|
|
72
|
+
# my_book.title_change #=> ['My Book', 'Your Book']
|
|
71
73
|
#
|
|
72
|
-
#
|
|
74
|
+
# ## Partial Updates
|
|
73
75
|
#
|
|
74
76
|
# Dirty tracking makes it possible to only persist those attributes
|
|
75
|
-
# that have changed since they were loaded. This speeds up requests
|
|
77
|
+
# that have changed since they were loaded. This speeds up requests
|
|
76
78
|
# against AWS when saving data.
|
|
77
79
|
#
|
|
78
80
|
module DirtyTracking
|
|
79
|
-
|
|
81
|
+
|
|
80
82
|
# Returns true if this model has unsaved changes.
|
|
81
83
|
#
|
|
82
|
-
#
|
|
83
|
-
#
|
|
84
|
-
#
|
|
84
|
+
# b = Book.new(:title => 'My Book')
|
|
85
|
+
# b.changed?
|
|
86
|
+
# #=> true
|
|
85
87
|
#
|
|
86
88
|
# New objects and objects freshly loaded should not have any changes:
|
|
87
89
|
#
|
|
88
|
-
#
|
|
89
|
-
#
|
|
90
|
+
# b = Book.new
|
|
91
|
+
# b.changed? #=> false
|
|
90
92
|
#
|
|
91
|
-
#
|
|
92
|
-
#
|
|
93
|
+
# b = Book.first
|
|
94
|
+
# b.changed? #=> false
|
|
93
95
|
#
|
|
94
96
|
# @return [Boolean] Returns true if any of the attributes have
|
|
95
97
|
# unsaved changes.
|
|
96
98
|
def changed?
|
|
97
99
|
!orig_values.empty?
|
|
98
100
|
end
|
|
99
|
-
|
|
100
|
-
# Returns an array of attribute names that have changes.
|
|
101
|
+
|
|
102
|
+
# Returns an array of attribute names that have changes.
|
|
101
103
|
#
|
|
102
|
-
#
|
|
103
|
-
#
|
|
104
|
-
#
|
|
104
|
+
# book.changed #=> []
|
|
105
|
+
# person.title = 'New Title'
|
|
106
|
+
# book.changed #=> ['title']
|
|
105
107
|
#
|
|
106
|
-
# @return [Array] Returns an array of attribute names that have
|
|
108
|
+
# @return [Array] Returns an array of attribute names that have
|
|
107
109
|
# unsaved changes.
|
|
108
110
|
def changed
|
|
109
111
|
orig_values.keys
|
|
110
112
|
end
|
|
111
|
-
|
|
113
|
+
|
|
112
114
|
# Returns the changed attributes in a hash. Keys are attribute names,
|
|
113
115
|
# values are two value arrays. The first value is the previous
|
|
114
116
|
# attribute value, the second is the current attribute value.
|
|
115
117
|
#
|
|
116
|
-
#
|
|
117
|
-
#
|
|
118
|
-
#
|
|
118
|
+
# book.title = 'New Title'
|
|
119
|
+
# book.changes
|
|
120
|
+
# #=> { 'title' => ['Old Title', 'New Title'] }
|
|
119
121
|
#
|
|
120
122
|
# @return [Hash] Returns a hash of attribute changes.
|
|
121
123
|
def changes
|
|
@@ -124,16 +126,16 @@ module AWS
|
|
|
124
126
|
changes
|
|
125
127
|
end
|
|
126
128
|
end
|
|
127
|
-
|
|
129
|
+
|
|
128
130
|
# Returns true if the named attribute has unsaved changes.
|
|
129
131
|
#
|
|
130
|
-
# This is an attribute method. The following two expressions
|
|
132
|
+
# This is an attribute method. The following two expressions
|
|
131
133
|
# are equivilent:
|
|
132
134
|
#
|
|
133
|
-
#
|
|
134
|
-
#
|
|
135
|
+
# book.title_changed?
|
|
136
|
+
# book.attribute_changed?(:title)
|
|
135
137
|
#
|
|
136
|
-
# @param [String] attribute_name Name of the attribute to check
|
|
138
|
+
# @param [String] attribute_name Name of the attribute to check
|
|
137
139
|
# for changes.
|
|
138
140
|
#
|
|
139
141
|
# @return [Boolean] Returns true if the named attribute
|
|
@@ -143,15 +145,15 @@ module AWS
|
|
|
143
145
|
def attribute_changed? attribute_name
|
|
144
146
|
orig_values.keys.include?(attribute_name)
|
|
145
147
|
end
|
|
146
|
-
|
|
147
|
-
# Returns an array of the old value and the new value for
|
|
148
|
+
|
|
149
|
+
# Returns an array of the old value and the new value for
|
|
148
150
|
# attributes that have unsaved changes, returns nil otherwise.
|
|
149
151
|
#
|
|
150
|
-
# This is an attribute method. The following two expressions
|
|
152
|
+
# This is an attribute method. The following two expressions
|
|
151
153
|
# are equivilent:
|
|
152
154
|
#
|
|
153
|
-
#
|
|
154
|
-
#
|
|
155
|
+
# book.title_change
|
|
156
|
+
# book.attribute_change(:title)
|
|
155
157
|
#
|
|
156
158
|
# @example Asking for changes on an unchanged attribute
|
|
157
159
|
#
|
|
@@ -168,7 +170,7 @@ module AWS
|
|
|
168
170
|
# book = Book.first
|
|
169
171
|
# book.title = 'New Title'
|
|
170
172
|
# book.title_change #=> ['Old Title', 'New Title']
|
|
171
|
-
#
|
|
173
|
+
#
|
|
172
174
|
# @param [String] attribute_name Name of the attribute to fetch
|
|
173
175
|
# a change for.
|
|
174
176
|
# @return [Boolean] Returns true if the named attribute
|
|
@@ -184,15 +186,15 @@ module AWS
|
|
|
184
186
|
end
|
|
185
187
|
end
|
|
186
188
|
end
|
|
187
|
-
|
|
189
|
+
|
|
188
190
|
# Returns the previous value for changed attributes, or the current
|
|
189
191
|
# value for unchanged attributes.
|
|
190
192
|
#
|
|
191
|
-
# This is an attribute method. The following two expressions
|
|
193
|
+
# This is an attribute method. The following two expressions
|
|
192
194
|
# are equivilent:
|
|
193
195
|
#
|
|
194
|
-
#
|
|
195
|
-
#
|
|
196
|
+
# book.title_was
|
|
197
|
+
# book.attribute_was(:title)
|
|
196
198
|
#
|
|
197
199
|
# @example Returns the previous value for changed attributes:
|
|
198
200
|
#
|
|
@@ -215,7 +217,7 @@ module AWS
|
|
|
215
217
|
orig_values.has_key?(name) ? orig_values[name] : __send__(name)
|
|
216
218
|
end
|
|
217
219
|
end
|
|
218
|
-
|
|
220
|
+
|
|
219
221
|
# Reverts any changes to the attribute, restoring its original value.
|
|
220
222
|
# @param [String] attribute_name Name of the attribute to reset.
|
|
221
223
|
# @return [nil]
|
|
@@ -225,7 +227,7 @@ module AWS
|
|
|
225
227
|
__send__("#{attribute_name}=", attribute_was(attribute_name))
|
|
226
228
|
nil
|
|
227
229
|
end
|
|
228
|
-
|
|
230
|
+
|
|
229
231
|
# Indicate to the record that you are about to edit an attribute
|
|
230
232
|
# in place.
|
|
231
233
|
# @param [String] attribute_name Name of the attribute that will
|
|
@@ -240,7 +242,7 @@ module AWS
|
|
|
240
242
|
was = __send__(name)
|
|
241
243
|
begin
|
|
242
244
|
# booleans, nil, etc all #respond_to?(:clone), but they raise
|
|
243
|
-
# a TypeError when you attempt to dup them.
|
|
245
|
+
# a TypeError when you attempt to dup them.
|
|
244
246
|
orig_values[name] = was.clone
|
|
245
247
|
rescue TypeError
|
|
246
248
|
orig_values[name] = was
|
|
@@ -254,12 +256,12 @@ module AWS
|
|
|
254
256
|
def orig_values
|
|
255
257
|
@_orig_values ||= {}
|
|
256
258
|
end
|
|
257
|
-
|
|
259
|
+
|
|
258
260
|
private
|
|
259
261
|
def clear_change! attribute_name
|
|
260
262
|
orig_values.delete(attribute_name)
|
|
261
263
|
end
|
|
262
|
-
|
|
264
|
+
|
|
263
265
|
private
|
|
264
266
|
def ignore_changes &block
|
|
265
267
|
begin
|
|
@@ -269,17 +271,17 @@ module AWS
|
|
|
269
271
|
@_ignore_changes = false
|
|
270
272
|
end
|
|
271
273
|
end
|
|
272
|
-
|
|
274
|
+
|
|
273
275
|
private
|
|
274
276
|
def if_tracking_changes &block
|
|
275
277
|
yield unless @_ignore_changes
|
|
276
278
|
end
|
|
277
|
-
|
|
279
|
+
|
|
278
280
|
private
|
|
279
281
|
def clear_changes!
|
|
280
282
|
orig_values.clear
|
|
281
283
|
end
|
|
282
|
-
|
|
284
|
+
|
|
283
285
|
end
|
|
284
286
|
end
|
|
285
287
|
end
|
data/lib/aws/record/errors.rb
CHANGED
|
@@ -15,20 +15,20 @@ module AWS
|
|
|
15
15
|
module Record
|
|
16
16
|
|
|
17
17
|
class Errors < Core::IndifferentHash
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
include Enumerable
|
|
20
20
|
|
|
21
21
|
# Returns the errors for the atttibute in an array.
|
|
22
22
|
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
#
|
|
23
|
+
# errors.add(:name, 'may not be blank')
|
|
24
|
+
# errors.add(:name, 'must be less than 30 characters')
|
|
25
|
+
# errors[:name]
|
|
26
|
+
# #=> ['may not be blank', 'must be less than 30 characters']
|
|
27
27
|
#
|
|
28
28
|
# @param [String,Symbol] attribute_name The name of the attribute to retnr
|
|
29
29
|
# errors for. You can pass the string or symbol version.
|
|
30
30
|
# @return [Array<String>] Returns the error messages for the given
|
|
31
|
-
#
|
|
31
|
+
# `attribute_name`. If there are no errors on the attribute then
|
|
32
32
|
# an empty array is returned.
|
|
33
33
|
def [] attribute_name
|
|
34
34
|
super(attribute_name) || []
|
|
@@ -37,15 +37,15 @@ module AWS
|
|
|
37
37
|
|
|
38
38
|
# Adds an error message to the named attribute.
|
|
39
39
|
#
|
|
40
|
-
#
|
|
41
|
-
#
|
|
42
|
-
#
|
|
40
|
+
# errors.add(:name, 'may not be blank')
|
|
41
|
+
# errors.on(:name)
|
|
42
|
+
# #=> ['may not be blank']
|
|
43
43
|
#
|
|
44
|
-
# If you want to add a general error message, then pass
|
|
45
|
-
# for
|
|
44
|
+
# If you want to add a general error message, then pass `:base`
|
|
45
|
+
# for `attribute_name`, or call {#add_to_base}.
|
|
46
46
|
# @param [String,Symbol] attribute_name The name of the attribute
|
|
47
47
|
# that you are adding an error to.
|
|
48
|
-
# @param [String] message ('is invalid') The error message (should
|
|
48
|
+
# @param [String] message ('is invalid') The error message (should
|
|
49
49
|
# not contain the attribute name).
|
|
50
50
|
# @return [String] Returns the message.
|
|
51
51
|
def []= attribute_name, message = 'is invalid'
|
|
@@ -60,7 +60,7 @@ module AWS
|
|
|
60
60
|
|
|
61
61
|
# Adds a general error message (not associated with any particular
|
|
62
62
|
# attribute).
|
|
63
|
-
# @param [String] message ('is invalid') The error message (should
|
|
63
|
+
# @param [String] message ('is invalid') The error message (should
|
|
64
64
|
# not contain the attribute name).
|
|
65
65
|
# @return [String] Returns the message.
|
|
66
66
|
def add_to_base message
|
|
@@ -73,9 +73,9 @@ module AWS
|
|
|
73
73
|
end
|
|
74
74
|
alias_method :size, :count
|
|
75
75
|
|
|
76
|
-
# Yields once for each error message added.
|
|
76
|
+
# Yields once for each error message added.
|
|
77
77
|
#
|
|
78
|
-
# An attribute_name may yield more than once if there are more than
|
|
78
|
+
# An attribute_name may yield more than once if there are more than
|
|
79
79
|
# one errors associated with that attirbute.
|
|
80
80
|
#
|
|
81
81
|
# @yield [attribute_name, error_message]
|
|
@@ -93,9 +93,9 @@ module AWS
|
|
|
93
93
|
# Returns the errors prefixed by a humanized version of the attribute
|
|
94
94
|
# name.
|
|
95
95
|
#
|
|
96
|
-
#
|
|
97
|
-
#
|
|
98
|
-
#
|
|
96
|
+
# errors.add(:name, 'may not be blank')
|
|
97
|
+
# errors.full_messages
|
|
98
|
+
# #=> ['Name may not be blank']
|
|
99
99
|
#
|
|
100
100
|
# @return [Array of Strings] Returns an array of error messages.
|
|
101
101
|
def full_messages
|
|
@@ -113,9 +113,9 @@ module AWS
|
|
|
113
113
|
# Returns a hash of of errors messages. Keys are attribute names
|
|
114
114
|
# and values are arrays of error messages.
|
|
115
115
|
#
|
|
116
|
-
#
|
|
117
|
-
#
|
|
118
|
-
#
|
|
116
|
+
# errors.add(:name, 'may not be blank')
|
|
117
|
+
# errors.to_hash
|
|
118
|
+
# #=> { 'name' => ['may not be blank'] }
|
|
119
119
|
#
|
|
120
120
|
# Please note that the hash values are always arrays, even if there
|
|
121
121
|
# is only one error message for the attribute.
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
module AWS
|
|
15
15
|
module Record
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
# Raised when trying to access an attribute that does not exist.
|
|
18
18
|
# @private
|
|
19
19
|
class UndefinedAttributeError < StandardError
|
|
@@ -21,7 +21,7 @@ module AWS
|
|
|
21
21
|
super("undefined attribute `#{attribute_name}`")
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
|
-
|
|
24
|
+
|
|
25
25
|
# Raised when calling #save!, #create! or #update_attributes! on a record that
|
|
26
26
|
# has validation errors.
|
|
27
27
|
# @private
|
|
@@ -11,45 +11,44 @@
|
|
|
11
11
|
# ANY KIND, either express or implied. See the License for the specific
|
|
12
12
|
# language governing permissions and limitations under the License.
|
|
13
13
|
|
|
14
|
-
require 'aws/record/abstract_base'
|
|
15
|
-
require 'aws/record/hash_model/scope'
|
|
16
|
-
require 'aws/record/hash_model/attributes'
|
|
17
|
-
require 'aws/record/hash_model/finder_methods'
|
|
18
|
-
|
|
19
14
|
module AWS
|
|
20
15
|
module Record
|
|
21
16
|
class HashModel
|
|
22
17
|
|
|
18
|
+
require 'aws/record/hash_model/attributes'
|
|
19
|
+
require 'aws/record/hash_model/finder_methods'
|
|
20
|
+
require 'aws/record/hash_model/scope'
|
|
21
|
+
|
|
23
22
|
extend AbstractBase
|
|
24
23
|
|
|
25
24
|
class << self
|
|
26
25
|
|
|
27
26
|
# Creates the DynamoDB table that is configured for this class.
|
|
28
27
|
#
|
|
29
|
-
#
|
|
30
|
-
#
|
|
28
|
+
# class Product < AWS::Record::HashModel
|
|
29
|
+
# end
|
|
31
30
|
#
|
|
32
|
-
#
|
|
33
|
-
#
|
|
31
|
+
# # create the table 'Product' with 10 read/write capacity units
|
|
32
|
+
# Product.create_table 10, 10
|
|
34
33
|
#
|
|
35
34
|
# If you shard you data across multiple tables, you can specify the
|
|
36
35
|
# shard name:
|
|
37
36
|
#
|
|
38
|
-
#
|
|
39
|
-
#
|
|
40
|
-
#
|
|
37
|
+
# # create two tables, with the given names
|
|
38
|
+
# Product.create_table 500, 10, :shard_name => 'products-1'
|
|
39
|
+
# Product.create_table 500, 10, :shard_name => 'products-2'
|
|
41
40
|
#
|
|
42
41
|
# If you share a single AWS account with multiple applications, you
|
|
43
42
|
# can provide a table prefix to group tables and to avoid name
|
|
44
43
|
# collisions:
|
|
45
44
|
#
|
|
46
|
-
#
|
|
45
|
+
# AWS::Record.table_prefix = 'myapp-'
|
|
47
46
|
#
|
|
48
|
-
#
|
|
49
|
-
#
|
|
47
|
+
# # creates the table 'myapp-Product'
|
|
48
|
+
# Product.create_table 250, 50
|
|
50
49
|
#
|
|
51
|
-
#
|
|
52
|
-
#
|
|
50
|
+
# # creates the table 'myapp-products-1'
|
|
51
|
+
# Product.create_table 250, 50, :shard_name => 'products-1'
|
|
53
52
|
#
|
|
54
53
|
# @param [Integer] read_capacity_units
|
|
55
54
|
# See {DynamoDB::TableCollection#create} for more information.
|
|
@@ -73,9 +72,9 @@ module AWS
|
|
|
73
72
|
create_opts[:hash_key] = { :id => :string }
|
|
74
73
|
|
|
75
74
|
dynamo_db.tables.create(
|
|
76
|
-
table_name,
|
|
77
|
-
read_capacity_units,
|
|
78
|
-
write_capacity_units,
|
|
75
|
+
table_name,
|
|
76
|
+
read_capacity_units,
|
|
77
|
+
write_capacity_units,
|
|
79
78
|
create_opts)
|
|
80
79
|
|
|
81
80
|
end
|
|
@@ -100,7 +99,7 @@ module AWS
|
|
|
100
99
|
|
|
101
100
|
end
|
|
102
101
|
|
|
103
|
-
# @return [DynamoDB::Item] Returns a reference to the item as stored in
|
|
102
|
+
# @return [DynamoDB::Item] Returns a reference to the item as stored in
|
|
104
103
|
# simple db.
|
|
105
104
|
# @private
|
|
106
105
|
private
|