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.
Files changed (386) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +1 -0
  3. data/README.rdoc +8 -0
  4. data/lib/aws-sdk.rb +39 -35
  5. data/lib/aws/api_config/CloudFront-2012-07-01.yml +2398 -0
  6. data/lib/aws/api_config/DirectConnect-2012-10-25.yml +475 -0
  7. data/lib/aws/api_config/DynamoDB-2011-12-05.yml +8 -0
  8. data/lib/aws/api_config/DynamoDB-2012-08-10.yml +1516 -0
  9. data/lib/aws/api_config/OpsWorks-2013-02-18.yml +2 -2
  10. data/lib/aws/auto_scaling.rb +44 -44
  11. data/lib/aws/auto_scaling/activity.rb +1 -1
  12. data/lib/aws/auto_scaling/activity_collection.rb +14 -15
  13. data/lib/aws/auto_scaling/client.rb +277 -277
  14. data/lib/aws/auto_scaling/config.rb +1 -1
  15. data/lib/aws/auto_scaling/group.rb +35 -36
  16. data/lib/aws/auto_scaling/group_collection.rb +10 -10
  17. data/lib/aws/auto_scaling/group_options.rb +19 -19
  18. data/lib/aws/auto_scaling/instance.rb +27 -27
  19. data/lib/aws/auto_scaling/instance_collection.rb +10 -10
  20. data/lib/aws/auto_scaling/launch_configuration.rb +3 -3
  21. data/lib/aws/auto_scaling/launch_configuration_collection.rb +1 -1
  22. data/lib/aws/auto_scaling/notification_configuration.rb +2 -2
  23. data/lib/aws/auto_scaling/notification_configuration_collection.rb +37 -38
  24. data/lib/aws/auto_scaling/scaling_policy.rb +3 -3
  25. data/lib/aws/auto_scaling/scaling_policy_collection.rb +6 -6
  26. data/lib/aws/auto_scaling/scaling_policy_options.rb +8 -7
  27. data/lib/aws/auto_scaling/scheduled_action.rb +3 -3
  28. data/lib/aws/auto_scaling/scheduled_action_collection.rb +28 -28
  29. data/lib/aws/auto_scaling/tag_collection.rb +30 -28
  30. data/lib/aws/cloud_formation.rb +95 -94
  31. data/lib/aws/cloud_formation/client.rb +136 -133
  32. data/lib/aws/cloud_formation/config.rb +1 -1
  33. data/lib/aws/cloud_formation/stack.rb +37 -37
  34. data/lib/aws/cloud_formation/stack_collection.rb +28 -27
  35. data/lib/aws/cloud_formation/stack_event.rb +9 -11
  36. data/lib/aws/cloud_formation/stack_output.rb +1 -1
  37. data/lib/aws/cloud_formation/stack_resource.rb +6 -6
  38. data/lib/aws/cloud_formation/stack_resource_collection.rb +11 -12
  39. data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +11 -11
  40. data/lib/aws/cloud_formation/stack_summary_collection.rb +39 -39
  41. data/lib/aws/cloud_front.rb +21 -21
  42. data/lib/aws/cloud_front/client.rb +853 -652
  43. data/lib/aws/cloud_front/request.rb +3 -0
  44. data/lib/aws/cloud_search.rb +22 -22
  45. data/lib/aws/cloud_search/client.rb +322 -315
  46. data/lib/aws/cloud_search/config.rb +1 -1
  47. data/lib/aws/cloud_watch.rb +39 -39
  48. data/lib/aws/cloud_watch/alarm.rb +55 -37
  49. data/lib/aws/cloud_watch/alarm_collection.rb +18 -18
  50. data/lib/aws/cloud_watch/alarm_history_item_collection.rb +2 -2
  51. data/lib/aws/cloud_watch/client.rb +360 -146
  52. data/lib/aws/cloud_watch/config.rb +1 -1
  53. data/lib/aws/cloud_watch/metric.rb +15 -15
  54. data/lib/aws/cloud_watch/metric_alarm_collection.rb +17 -17
  55. data/lib/aws/cloud_watch/metric_collection.rb +16 -16
  56. data/lib/aws/cloud_watch/metric_statistics.rb +11 -11
  57. data/lib/aws/core.rb +243 -225
  58. data/lib/aws/core/async_handle.rb +13 -13
  59. data/lib/aws/core/cacheable.rb +14 -15
  60. data/lib/aws/core/client.rb +40 -15
  61. data/lib/aws/core/collection.rb +42 -46
  62. data/lib/aws/core/collection/with_limit_and_next_token.rb +1 -1
  63. data/lib/aws/core/collection/with_next_token.rb +1 -1
  64. data/lib/aws/core/configuration.rb +97 -133
  65. data/lib/aws/core/credential_providers.rb +16 -16
  66. data/lib/aws/core/data.rb +23 -23
  67. data/lib/aws/core/http/connection_pool.rb +348 -0
  68. data/lib/aws/core/http/net_http_handler.rb +17 -26
  69. data/lib/aws/core/http/patch.rb +102 -0
  70. data/lib/aws/core/http/request.rb +13 -19
  71. data/lib/aws/core/http/response.rb +2 -2
  72. data/lib/aws/core/lazy_error_classes.rb +17 -17
  73. data/lib/aws/core/log_formatter.rb +70 -104
  74. data/lib/aws/core/options/json_serializer.rb +1 -1
  75. data/lib/aws/core/options/validator.rb +4 -4
  76. data/lib/aws/core/page_result.rb +8 -8
  77. data/lib/aws/core/policy.rb +49 -49
  78. data/lib/aws/core/region.rb +72 -0
  79. data/lib/aws/core/region_collection.rb +106 -0
  80. data/lib/aws/core/resource.rb +5 -5
  81. data/lib/aws/core/response.rb +20 -17
  82. data/lib/aws/core/rest_request_builder.rb +4 -4
  83. data/lib/aws/core/service_interface.rb +24 -2
  84. data/lib/aws/core/signature/version_3.rb +2 -2
  85. data/lib/aws/core/uri_escape.rb +1 -1
  86. data/lib/aws/core/xml/frame_stack.rb +1 -1
  87. data/lib/aws/core/xml/grammar.rb +3 -4
  88. data/lib/aws/core/xml/sax_handlers/libxml.rb +2 -2
  89. data/lib/aws/core/xml/sax_handlers/nokogiri.rb +3 -3
  90. data/lib/aws/core/xml/sax_handlers/rexml.rb +5 -5
  91. data/lib/aws/core/xml/stub.rb +9 -9
  92. data/lib/aws/data_pipeline.rb +21 -21
  93. data/lib/aws/data_pipeline/client.rb +189 -133
  94. data/lib/aws/data_pipeline/config.rb +1 -1
  95. data/lib/aws/direct_connect.rb +74 -0
  96. data/lib/aws/direct_connect/client.rb +253 -0
  97. data/lib/aws/direct_connect/config.rb +18 -0
  98. data/lib/aws/direct_connect/errors.rb +22 -0
  99. data/lib/aws/direct_connect/request.rb +27 -0
  100. data/lib/aws/dynamo_db.rb +71 -69
  101. data/lib/aws/dynamo_db/attribute_collection.rb +53 -58
  102. data/lib/aws/dynamo_db/batch_get.rb +23 -23
  103. data/lib/aws/dynamo_db/batch_write.rb +43 -43
  104. data/lib/aws/dynamo_db/binary.rb +9 -9
  105. data/lib/aws/dynamo_db/client.rb +494 -509
  106. data/lib/aws/dynamo_db/client_base.rb +91 -0
  107. data/lib/aws/dynamo_db/client_v2.rb +825 -0
  108. data/lib/aws/dynamo_db/config.rb +1 -1
  109. data/lib/aws/dynamo_db/item.rb +10 -10
  110. data/lib/aws/dynamo_db/item_collection.rb +75 -75
  111. data/lib/aws/dynamo_db/table.rb +85 -85
  112. data/lib/aws/dynamo_db/table_collection.rb +13 -13
  113. data/lib/aws/ec2.rb +132 -142
  114. data/lib/aws/ec2/attachment.rb +31 -36
  115. data/lib/aws/ec2/attachment_collection.rb +1 -1
  116. data/lib/aws/ec2/availability_zone.rb +4 -4
  117. data/lib/aws/ec2/client.rb +2272 -2125
  118. data/lib/aws/ec2/config.rb +1 -1
  119. data/lib/aws/ec2/customer_gateway.rb +6 -6
  120. data/lib/aws/ec2/customer_gateway_collection.rb +6 -6
  121. data/lib/aws/ec2/dhcp_options.rb +3 -3
  122. data/lib/aws/ec2/dhcp_options_collection.rb +10 -10
  123. data/lib/aws/ec2/elastic_ip.rb +15 -15
  124. data/lib/aws/ec2/elastic_ip_collection.rb +11 -15
  125. data/lib/aws/ec2/export_task.rb +4 -4
  126. data/lib/aws/ec2/export_task_collection.rb +11 -11
  127. data/lib/aws/ec2/filtered_collection.rb +6 -8
  128. data/lib/aws/ec2/image.rb +46 -40
  129. data/lib/aws/ec2/image_collection.rb +44 -52
  130. data/lib/aws/ec2/instance.rb +64 -62
  131. data/lib/aws/ec2/instance_collection.rb +47 -50
  132. data/lib/aws/ec2/internet_gateway.rb +6 -6
  133. data/lib/aws/ec2/internet_gateway/attachment.rb +13 -13
  134. data/lib/aws/ec2/internet_gateway_collection.rb +3 -3
  135. data/lib/aws/ec2/key_pair.rb +3 -3
  136. data/lib/aws/ec2/key_pair_collection.rb +12 -12
  137. data/lib/aws/ec2/network_acl.rb +39 -39
  138. data/lib/aws/ec2/network_acl/association.rb +2 -2
  139. data/lib/aws/ec2/network_acl/entry.rb +22 -22
  140. data/lib/aws/ec2/network_acl_collection.rb +2 -2
  141. data/lib/aws/ec2/network_interface.rb +13 -4
  142. data/lib/aws/ec2/network_interface/attachment.rb +3 -3
  143. data/lib/aws/ec2/network_interface_collection.rb +5 -5
  144. data/lib/aws/ec2/permission_collection.rb +1 -1
  145. data/lib/aws/ec2/region.rb +6 -6
  146. data/lib/aws/ec2/region_collection.rb +1 -1
  147. data/lib/aws/ec2/reserved_instances_collection.rb +2 -2
  148. data/lib/aws/ec2/reserved_instances_offering_collection.rb +2 -2
  149. data/lib/aws/ec2/resource_tag_collection.rb +5 -5
  150. data/lib/aws/ec2/route_table.rb +14 -14
  151. data/lib/aws/ec2/route_table/association.rb +22 -22
  152. data/lib/aws/ec2/route_table/route.rb +8 -8
  153. data/lib/aws/ec2/route_table_collection.rb +3 -3
  154. data/lib/aws/ec2/security_group.rb +39 -41
  155. data/lib/aws/ec2/security_group_collection.rb +19 -21
  156. data/lib/aws/ec2/snapshot.rb +3 -3
  157. data/lib/aws/ec2/snapshot_collection.rb +11 -12
  158. data/lib/aws/ec2/subnet.rb +2 -2
  159. data/lib/aws/ec2/subnet_collection.rb +17 -17
  160. data/lib/aws/ec2/tag_collection.rb +1 -1
  161. data/lib/aws/ec2/tagged_collection.rb +7 -7
  162. data/lib/aws/ec2/tagged_item.rb +10 -10
  163. data/lib/aws/ec2/volume.rb +16 -16
  164. data/lib/aws/ec2/volume_collection.rb +9 -12
  165. data/lib/aws/ec2/vpc.rb +6 -6
  166. data/lib/aws/ec2/vpc_collection.rb +10 -10
  167. data/lib/aws/ec2/vpn_connection.rb +4 -4
  168. data/lib/aws/ec2/vpn_connection/telemetry.rb +1 -1
  169. data/lib/aws/ec2/vpn_connection_collection.rb +6 -6
  170. data/lib/aws/ec2/vpn_gateway.rb +2 -2
  171. data/lib/aws/ec2/vpn_gateway_collection.rb +5 -5
  172. data/lib/aws/elastic_beanstalk.rb +12 -12
  173. data/lib/aws/elastic_beanstalk/client.rb +376 -368
  174. data/lib/aws/elastic_beanstalk/config.rb +1 -1
  175. data/lib/aws/elastic_transcoder.rb +5 -5
  176. data/lib/aws/elastic_transcoder/client.rb +283 -283
  177. data/lib/aws/elastic_transcoder/config.rb +1 -1
  178. data/lib/aws/elasticache.rb +12 -12
  179. data/lib/aws/elasticache/client.rb +484 -479
  180. data/lib/aws/elasticache/config.rb +1 -1
  181. data/lib/aws/elb.rb +23 -23
  182. data/lib/aws/elb/availability_zone_collection.rb +34 -34
  183. data/lib/aws/elb/backend_server_policy_collection.rb +24 -24
  184. data/lib/aws/elb/client.rb +153 -153
  185. data/lib/aws/elb/config.rb +1 -1
  186. data/lib/aws/elb/errors.rb +1 -1
  187. data/lib/aws/elb/instance_collection.rb +20 -25
  188. data/lib/aws/elb/listener.rb +3 -3
  189. data/lib/aws/elb/listener_collection.rb +8 -8
  190. data/lib/aws/elb/load_balancer.rb +15 -16
  191. data/lib/aws/elb/load_balancer_collection.rb +36 -24
  192. data/lib/aws/elb/load_balancer_policy.rb +1 -1
  193. data/lib/aws/elb/load_balancer_policy_collection.rb +5 -5
  194. data/lib/aws/emr.rb +28 -26
  195. data/lib/aws/emr/client.rb +165 -149
  196. data/lib/aws/emr/config.rb +1 -1
  197. data/lib/aws/emr/instance_group.rb +1 -1
  198. data/lib/aws/emr/instance_group_collection.rb +1 -1
  199. data/lib/aws/emr/job_flow.rb +27 -26
  200. data/lib/aws/emr/job_flow_collection.rb +34 -34
  201. data/lib/aws/errors.rb +7 -7
  202. data/lib/aws/glacier.rb +21 -21
  203. data/lib/aws/glacier/archive_collection.rb +2 -2
  204. data/lib/aws/glacier/client.rb +139 -140
  205. data/lib/aws/glacier/config.rb +1 -1
  206. data/lib/aws/glacier/vault.rb +2 -2
  207. data/lib/aws/glacier/vault_collection.rb +1 -1
  208. data/lib/aws/iam.rb +133 -144
  209. data/lib/aws/iam/access_key.rb +17 -17
  210. data/lib/aws/iam/access_key_collection.rb +22 -22
  211. data/lib/aws/iam/account_alias_collection.rb +2 -2
  212. data/lib/aws/iam/client.rb +429 -420
  213. data/lib/aws/iam/collection.rb +1 -1
  214. data/lib/aws/iam/config.rb +2 -2
  215. data/lib/aws/iam/group.rb +8 -8
  216. data/lib/aws/iam/group_collection.rb +16 -16
  217. data/lib/aws/iam/group_policy_collection.rb +6 -6
  218. data/lib/aws/iam/group_user_collection.rb +3 -3
  219. data/lib/aws/iam/mfa_device.rb +1 -1
  220. data/lib/aws/iam/mfa_device_collection.rb +9 -9
  221. data/lib/aws/iam/policy_collection.rb +4 -4
  222. data/lib/aws/iam/resource.rb +2 -2
  223. data/lib/aws/iam/server_certificate.rb +1 -1
  224. data/lib/aws/iam/server_certificate_collection.rb +15 -15
  225. data/lib/aws/iam/signing_certificate.rb +29 -29
  226. data/lib/aws/iam/signing_certificate_collection.rb +23 -23
  227. data/lib/aws/iam/user.rb +33 -38
  228. data/lib/aws/iam/user_collection.rb +27 -27
  229. data/lib/aws/iam/user_group_collection.rb +3 -3
  230. data/lib/aws/iam/user_policy_collection.rb +6 -6
  231. data/lib/aws/iam/virtual_mfa_device.rb +12 -12
  232. data/lib/aws/iam/virtual_mfa_device_collection.rb +4 -4
  233. data/lib/aws/import_export.rb +22 -21
  234. data/lib/aws/import_export/client.rb +47 -43
  235. data/lib/aws/ops_works.rb +5 -5
  236. data/lib/aws/ops_works/client.rb +484 -438
  237. data/lib/aws/ops_works/config.rb +1 -1
  238. data/lib/aws/rails.rb +34 -34
  239. data/lib/aws/rds.rb +18 -18
  240. data/lib/aws/rds/client.rb +1286 -1277
  241. data/lib/aws/rds/config.rb +1 -1
  242. data/lib/aws/rds/db_instance.rb +15 -4
  243. data/lib/aws/rds/db_snapshot.rb +1 -1
  244. data/lib/aws/record.rb +50 -24
  245. data/lib/aws/record/abstract_base.rb +52 -60
  246. data/lib/aws/record/attributes.rb +79 -79
  247. data/lib/aws/record/conversion.rb +1 -1
  248. data/lib/aws/record/dirty_tracking.rb +69 -67
  249. data/lib/aws/record/errors.rb +21 -21
  250. data/lib/aws/record/exceptions.rb +2 -2
  251. data/lib/aws/record/hash_model.rb +20 -21
  252. data/lib/aws/record/hash_model/attributes.rb +13 -15
  253. data/lib/aws/record/hash_model/finder_methods.rb +46 -46
  254. data/lib/aws/record/hash_model/scope.rb +31 -31
  255. data/lib/aws/record/model.rb +136 -136
  256. data/lib/aws/record/model/attributes.rb +57 -59
  257. data/lib/aws/record/model/finder_methods.rb +67 -67
  258. data/lib/aws/record/model/scope.rb +48 -49
  259. data/lib/aws/record/naming.rb +1 -1
  260. data/lib/aws/record/scope.rb +23 -19
  261. data/lib/aws/record/validations.rb +253 -271
  262. data/lib/aws/record/validator.rb +3 -3
  263. data/lib/aws/record/validators/acceptance.rb +1 -3
  264. data/lib/aws/record/validators/block.rb +1 -3
  265. data/lib/aws/record/validators/confirmation.rb +1 -3
  266. data/lib/aws/record/validators/count.rb +2 -4
  267. data/lib/aws/record/validators/exclusion.rb +2 -4
  268. data/lib/aws/record/validators/format.rb +2 -4
  269. data/lib/aws/record/validators/inclusion.rb +1 -3
  270. data/lib/aws/record/validators/length.rb +5 -7
  271. data/lib/aws/record/validators/method.rb +1 -3
  272. data/lib/aws/record/validators/numericality.rb +6 -8
  273. data/lib/aws/record/validators/presence.rb +1 -3
  274. data/lib/aws/redshift.rb +14 -14
  275. data/lib/aws/redshift/client.rb +596 -592
  276. data/lib/aws/redshift/config.rb +1 -1
  277. data/lib/aws/route_53.rb +30 -30
  278. data/lib/aws/route_53/change_batch.rb +7 -7
  279. data/lib/aws/route_53/client.rb +188 -152
  280. data/lib/aws/route_53/hosted_zone.rb +4 -4
  281. data/lib/aws/route_53/hosted_zone_collection.rb +7 -7
  282. data/lib/aws/route_53/resource_record_set.rb +10 -10
  283. data/lib/aws/route_53/resource_record_set_collection.rb +6 -6
  284. data/lib/aws/s3.rb +79 -79
  285. data/lib/aws/s3/access_control_list.rb +44 -36
  286. data/lib/aws/s3/acl_options.rb +51 -51
  287. data/lib/aws/s3/bucket.rb +146 -146
  288. data/lib/aws/s3/bucket_collection.rb +21 -21
  289. data/lib/aws/s3/bucket_lifecycle_configuration.rb +81 -82
  290. data/lib/aws/s3/bucket_tag_collection.rb +4 -2
  291. data/lib/aws/s3/cipher_io.rb +5 -4
  292. data/lib/aws/s3/client.rb +89 -84
  293. data/lib/aws/s3/client/xml.rb +1 -1
  294. data/lib/aws/s3/config.rb +7 -1
  295. data/lib/aws/s3/cors_rule.rb +2 -0
  296. data/lib/aws/s3/cors_rule_collection.rb +42 -40
  297. data/lib/aws/s3/data_options.rb +16 -11
  298. data/lib/aws/s3/encryption_utils.rb +2 -2
  299. data/lib/aws/s3/errors.rb +7 -7
  300. data/lib/aws/s3/multipart_upload.rb +30 -33
  301. data/lib/aws/s3/multipart_upload_collection.rb +8 -6
  302. data/lib/aws/s3/object_collection.rb +35 -35
  303. data/lib/aws/s3/object_metadata.rb +6 -6
  304. data/lib/aws/s3/object_version.rb +4 -4
  305. data/lib/aws/s3/object_version_collection.rb +15 -15
  306. data/lib/aws/s3/policy.rb +2 -2
  307. data/lib/aws/s3/prefixed_collection.rb +9 -5
  308. data/lib/aws/s3/presigned_post.rb +39 -37
  309. data/lib/aws/s3/request.rb +11 -11
  310. data/lib/aws/s3/s3_object.rb +210 -200
  311. data/lib/aws/s3/tree.rb +25 -27
  312. data/lib/aws/s3/tree/child_collection.rb +3 -3
  313. data/lib/aws/s3/tree/leaf_node.rb +2 -2
  314. data/lib/aws/s3/tree/parent.rb +1 -1
  315. data/lib/aws/s3/website_configuration.rb +13 -13
  316. data/lib/aws/simple_db.rb +83 -83
  317. data/lib/aws/simple_db/attribute.rb +9 -7
  318. data/lib/aws/simple_db/attribute_collection.rb +22 -13
  319. data/lib/aws/simple_db/client.rb +107 -107
  320. data/lib/aws/simple_db/config.rb +7 -1
  321. data/lib/aws/simple_db/consistent_read_option.rb +5 -5
  322. data/lib/aws/simple_db/domain.rb +4 -2
  323. data/lib/aws/simple_db/domain_collection.rb +4 -4
  324. data/lib/aws/simple_db/domain_metadata.rb +5 -5
  325. data/lib/aws/simple_db/errors.rb +9 -9
  326. data/lib/aws/simple_db/item.rb +5 -5
  327. data/lib/aws/simple_db/item_collection.rb +83 -81
  328. data/lib/aws/simple_db/item_data.rb +4 -4
  329. data/lib/aws/simple_db/put_attributes.rb +3 -3
  330. data/lib/aws/simple_email_service.rb +140 -140
  331. data/lib/aws/simple_email_service/client.rb +82 -76
  332. data/lib/aws/simple_email_service/config.rb +1 -2
  333. data/lib/aws/simple_email_service/email_address_collection.rb +3 -3
  334. data/lib/aws/simple_email_service/identity.rb +8 -8
  335. data/lib/aws/simple_email_service/quotas.rb +8 -6
  336. data/lib/aws/simple_workflow.rb +106 -106
  337. data/lib/aws/simple_workflow/activity_task.rb +15 -22
  338. data/lib/aws/simple_workflow/activity_task_collection.rb +15 -15
  339. data/lib/aws/simple_workflow/activity_type.rb +23 -23
  340. data/lib/aws/simple_workflow/activity_type_collection.rb +23 -23
  341. data/lib/aws/simple_workflow/client.rb +1004 -956
  342. data/lib/aws/simple_workflow/config.rb +1 -1
  343. data/lib/aws/simple_workflow/count.rb +5 -5
  344. data/lib/aws/simple_workflow/decision_task.rb +129 -129
  345. data/lib/aws/simple_workflow/decision_task_collection.rb +59 -59
  346. data/lib/aws/simple_workflow/domain.rb +11 -11
  347. data/lib/aws/simple_workflow/domain_collection.rb +26 -26
  348. data/lib/aws/simple_workflow/history_event.rb +32 -32
  349. data/lib/aws/simple_workflow/history_event_collection.rb +3 -3
  350. data/lib/aws/simple_workflow/option_formatters.rb +5 -5
  351. data/lib/aws/simple_workflow/request.rb +1 -1
  352. data/lib/aws/simple_workflow/resource.rb +1 -1
  353. data/lib/aws/simple_workflow/type.rb +8 -8
  354. data/lib/aws/simple_workflow/type_collection.rb +15 -15
  355. data/lib/aws/simple_workflow/workflow_execution.rb +70 -72
  356. data/lib/aws/simple_workflow/workflow_execution_collection.rb +130 -130
  357. data/lib/aws/simple_workflow/workflow_type.rb +27 -25
  358. data/lib/aws/simple_workflow/workflow_type_collection.rb +20 -20
  359. data/lib/aws/sns.rb +25 -25
  360. data/lib/aws/sns/client.rb +55 -55
  361. data/lib/aws/sns/config.rb +1 -1
  362. data/lib/aws/sns/policy.rb +1 -1
  363. data/lib/aws/sns/subscription.rb +7 -7
  364. data/lib/aws/sns/subscription_collection.rb +5 -5
  365. data/lib/aws/sns/topic.rb +49 -49
  366. data/lib/aws/sns/topic_collection.rb +2 -2
  367. data/lib/aws/sns/topic_subscription_collection.rb +5 -5
  368. data/lib/aws/sqs.rb +20 -20
  369. data/lib/aws/sqs/client.rb +78 -78
  370. data/lib/aws/sqs/config.rb +1 -1
  371. data/lib/aws/sqs/errors.rb +12 -12
  372. data/lib/aws/sqs/queue.rb +66 -67
  373. data/lib/aws/sqs/queue_collection.rb +16 -8
  374. data/lib/aws/sqs/received_message.rb +7 -6
  375. data/lib/aws/storage_gateway.rb +21 -21
  376. data/lib/aws/storage_gateway/client.rb +269 -202
  377. data/lib/aws/storage_gateway/config.rb +1 -1
  378. data/lib/aws/sts.rb +10 -8
  379. data/lib/aws/sts/client.rb +35 -35
  380. data/lib/aws/sts/session.rb +3 -3
  381. data/lib/aws/version.rb +1 -2
  382. metadata +23 -21
  383. data/lib/aws/core/autoloader.rb +0 -64
  384. data/lib/net/http/connection_pool.rb +0 -226
  385. data/lib/net/http/connection_pool/connection.rb +0 -189
  386. data/lib/net/http/connection_pool/session.rb +0 -126
@@ -11,8 +11,6 @@
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/attributes.rb'
15
-
16
14
  module AWS
17
15
  module Record
18
16
  class HashModel
@@ -29,7 +27,7 @@ module AWS
29
27
  # recipe = Recipe.new(:name => "Buttermilk Pancakes")
30
28
  # recipe.name #=> 'Buttermilk Pancakes'
31
29
  #
32
- # @example A string attribute with +:set+ set to true
30
+ # @example A string attribute with `:set` set to true
33
31
  #
34
32
  # class Recipe < AWS::Record::HashModel
35
33
  # string_attr :tags, :set => true
@@ -48,12 +46,12 @@ module AWS
48
46
 
49
47
  # Adds an integer attribute to this class.
50
48
  #
51
- # class Recipe < AWS::Record::HashModel
52
- # integer_attr :servings
53
- # end
49
+ # class Recipe < AWS::Record::HashModel
50
+ # integer_attr :servings
51
+ # end
54
52
  #
55
- # recipe = Recipe.new(:servings => '10')
56
- # recipe.servings #=> 10
53
+ # recipe = Recipe.new(:servings => '10')
54
+ # recipe.servings #=> 10
57
55
  #
58
56
  # @param [Symbol] name The name of the attribute.
59
57
  # @param [Hash] options
@@ -65,12 +63,12 @@ module AWS
65
63
 
66
64
  # Adds a float attribute to this class.
67
65
  #
68
- # class Listing < AWS::Record::HashModel
69
- # float_attr :score
70
- # end
66
+ # class Listing < AWS::Record::HashModel
67
+ # float_attr :score
68
+ # end
71
69
  #
72
- # listing = Listing.new(:score => '123.456')
73
- # listing.score # => 123.456
70
+ # listing = Listing.new(:score => '123.456')
71
+ # listing.score # => 123.456
74
72
  #
75
73
  # @param [Symbol] name The name of the attribute.
76
74
  # @param [Hash] options
@@ -119,7 +117,7 @@ module AWS
119
117
  # recipe = Recipe.new(:invented => Time.now)
120
118
  # recipe.invented #=> <DateTime ...>
121
119
  #
122
- # If you add a datetime_attr for +:created_at+ and/or +:updated_at+ those
120
+ # If you add a datetime_attr for `:created_at` and/or `:updated_at` those
123
121
  # will be automanaged.
124
122
  #
125
123
  # @param [Symbol] name The name of the attribute.
@@ -172,7 +170,7 @@ module AWS
172
170
  end
173
171
 
174
172
  # A convenience method for adding the standard two datetime attributes
175
- # +:created_at+ and +:updated_at+.
173
+ # `:created_at` and `:updated_at`.
176
174
  #
177
175
  # @example
178
176
  #
@@ -24,65 +24,65 @@ module AWS
24
24
  # was no data found for the given id.
25
25
  # @return [Record::HashModel] Returns the record with the given id.
26
26
  def find_by_id id, options = {}
27
-
27
+
28
28
  table = dynamo_db_table(options[:shard])
29
29
 
30
30
  data = table.items[id].attributes.to_h
31
-
31
+
32
32
  raise RecordNotFound, "no data found for id: #{id}" if data.empty?
33
-
33
+
34
34
  obj = self.new(:shard => table)
35
35
  obj.send(:hydrate, id, data)
36
36
  obj
37
-
37
+
38
38
  end
39
39
  alias_method :[], :find_by_id
40
-
41
- # Finds records in Amazon DynamoDB and returns them as objects of
40
+
41
+ # Finds records in Amazon DynamoDB and returns them as objects of
42
42
  # the current class.
43
43
  #
44
- # Finding +:all+ returns an enumerable scope object
44
+ # Finding `:all` returns an enumerable scope object
45
45
  #
46
- # People.find(:all, :limit => 10).each do |person|
47
- # puts person.name
48
- # end
46
+ # People.find(:all, :limit => 10).each do |person|
47
+ # puts person.name
48
+ # end
49
49
  #
50
- # Finding +:first+ returns a single record (or nil)
50
+ # Finding `:first` returns a single record (or nil)
51
51
  #
52
- # boss = People.find(:first)
52
+ # boss = People.find(:first)
53
53
  #
54
- # Find accepts a hash of find modifiers (+:shard+ and +:limit+).
54
+ # Find accepts a hash of find modifiers (`:shard` and `:limit`).
55
55
  # You can also choose to omit these modifiers and
56
56
  # chain them on the scope object returned. In the following
57
57
  # example only one request is made to SimpleDB (when #each is
58
58
  # called)
59
59
  #
60
- # people = People.find(:all, :limit => 10)
60
+ # people = People.find(:all, :limit => 10)
61
61
  #
62
- # people = people.limit(10).find(:all)
62
+ # people = people.limit(10).find(:all)
63
63
  #
64
64
  # @overload find(id)
65
65
  # @param id The record to find, raises an exception if the record is
66
66
  # not found.
67
67
  #
68
68
  # @overload find(mode, options = {})
69
- # @param [:all,:first] mode (:all) When finding +:all+ matching records
70
- # and array is returned of records. When finding +:first+ then
71
- # +nil+ or a single record will be returned.
69
+ # @param [:all,:first] mode (:all) When finding `:all` matching records
70
+ # and array is returned of records. When finding `:first` then
71
+ # `nil` or a single record will be returned.
72
72
  # @param [Hash] options
73
- # @option options [Integer] :shard The shard name of the Amazon
73
+ # @option options [Integer] :shard The shard name of the Amazon
74
74
  # DynamoDB table to search.
75
75
  # @option options [Integer] :limit The max number of records to fetch.
76
76
  def find *args
77
77
  new_scope.find(*args)
78
78
  end
79
-
79
+
80
80
  # Returns a chainable scope object that restricts further scopes to a
81
81
  # particular table.
82
82
  #
83
- # Book.shard('books-2').each do |book|
84
- # # ...
85
- # end
83
+ # Book.shard('books-2').each do |book|
84
+ # # ...
85
+ # end
86
86
  #
87
87
  # @param [String] shard_name
88
88
  # @return [Scope] Returns a scope for restricting the table searched.
@@ -90,19 +90,19 @@ module AWS
90
90
  new_scope.shard(shard_name)
91
91
  end
92
92
  alias_method :domain, :shard # backwards compat
93
-
93
+
94
94
  # Returns an enumerable scope object represents all records.
95
95
  #
96
- # Book.all.each do |book|
97
- # # ...
98
- # end
96
+ # Book.all.each do |book|
97
+ # # ...
98
+ # end
99
99
  #
100
- # This method is equivalent to +find(:all)+, and therefore you can also
100
+ # This method is equivalent to `find(:all)`, and therefore you can also
101
101
  # pass aditional options.
102
102
  #
103
- # Book.all(:where => { :author' => 'me' }).each do |my_book|
104
- # # ...
105
- # end
103
+ # Book.all(:where => { :author' => 'me' }).each do |my_book|
104
+ # # ...
105
+ # end
106
106
  #
107
107
  # @return [Scope] Returns an enumerable scope object.
108
108
  #
@@ -114,53 +114,53 @@ module AWS
114
114
  def each &block
115
115
  all.each(&block)
116
116
  end
117
-
117
+
118
118
  # Counts records Amazon DynamoDB.
119
119
  #
120
- # class Product < AWS::Record::HashModel
121
- # end
120
+ # class Product < AWS::Record::HashModel
121
+ # end
122
122
  #
123
- # # returns the count of records in the 'Product' table
124
- # Product.count
123
+ # # returns the count of records in the 'Product' table
124
+ # Product.count
125
125
  #
126
126
  # You can specify the table via #shard
127
127
  #
128
- # # returns the count of records in the 'products-1' table
129
- # Product.shard('products-1').count
128
+ # # returns the count of records in the 'products-1' table
129
+ # Product.shard('products-1').count
130
130
  #
131
131
  # You can also specify the shard as an option to #count.
132
132
  #
133
- # Product.count(:shard => 'table-name')
133
+ # Product.count(:shard => 'table-name')
134
134
  #
135
135
  # Chaining #count with #limit has no effect on the count.
136
136
  #
137
- # Product.limit(10).count # same as Product.count, limit ignored
137
+ # Product.limit(10).count # same as Product.count, limit ignored
138
138
  #
139
139
  # @param [Hash] options
140
140
  #
141
141
  # @option [String] :shard Which shard to count records in.
142
- #
142
+ #
143
143
  # @return [Integer] The count of records in the table.
144
144
  #
145
145
  def count options = {}
146
146
  new_scope.count(options)
147
147
  end
148
148
  alias_method :size, :count
149
-
149
+
150
150
  # @return [Object,nil] Returns the first record found. If there were
151
151
  # no records found, nil is returned.
152
152
  def first options = {}
153
153
  new_scope.first(options)
154
154
  end
155
-
155
+
156
156
  # The maximum number of records to return. By default, all records
157
157
  # matching the where conditions will be returned from a find.
158
- #
159
- # People.limit(10).each {|person| ... }
158
+ #
159
+ # People.limit(10).each {|person| ... }
160
160
  #
161
161
  # Limit can be chained with other scope modifiers:
162
162
  #
163
- # People.where(:age => 40).limit(10).each {|person| ... }
163
+ # People.where(:age => 40).limit(10).each {|person| ... }
164
164
  #
165
165
  def limit limit
166
166
  new_scope.limit(limit)
@@ -10,73 +10,73 @@
10
10
  # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
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
14
  module AWS
15
15
  module Record
16
16
  class HashModel
17
17
 
18
18
  # The primary interface for finding records with {AWS::Record::HashModel}.
19
19
  #
20
- # == Getting a Scope Object
20
+ # ## Getting a Scope Object
21
21
  #
22
22
  # You should normally never need to construct a Scope object directly.
23
- # Scope objects are returned from the AWS::Record::HashModel finder
24
- # methods # (e.g. +shard+ and +limit+).
23
+ # Scope objects are returned from the AWS::Record::HashModel finder
24
+ # methods # (e.g. `shard` and `limit`).
25
25
  #
26
- # books = Book.limit(100)
27
- # books.class #=> AWS::Record::HashModel::Scope
26
+ # books = Book.limit(100)
27
+ # books.class #=> AWS::Record::HashModel::Scope
28
28
  #
29
- # Scopes are also returned from methods defined with the +scope+ method.
29
+ # Scopes are also returned from methods defined with the `scope` method.
30
30
  #
31
- # class Book < AWS::Record::HashModel
32
- # scope :sampling, limit(10)
33
- # end
31
+ # class Book < AWS::Record::HashModel
32
+ # scope :sampling, limit(10)
33
+ # end
34
34
  #
35
- # Book.sampling #=> returns a scope that limits to 10
35
+ # Book.sampling #=> returns a scope that limits to 10
36
36
  #
37
- # == Chaining Scopes
37
+ # ## Chaining Scopes
38
38
  #
39
39
  # Scope objects represent a request, but do not actualy make a request
40
40
  # until required. This allows you to chain requests
41
41
  #
42
- # # no request made by the following 2 statements
43
- # books = Book.shard('books-1') # what table to search
44
- # books = books.limit(10) # how many records to fetch
42
+ # # no request made by the following 2 statements
43
+ # books = Book.shard('books-1') # what table to search
44
+ # books = books.limit(10) # how many records to fetch
45
45
  #
46
- # books.each do |book|
47
- # # yields up to 10 books from the table 'books-1'
48
- # end
46
+ # books.each do |book|
47
+ # # yields up to 10 books from the table 'books-1'
48
+ # end
49
49
  #
50
50
  # The following methods returns a scope that can be chained.
51
51
  #
52
52
  # * {#shard}
53
53
  # * {#limit}
54
54
  #
55
- # == Terminating Scopes
55
+ # ## Terminating Scopes
56
56
  #
57
57
  # To terminate a scope you can enumerate it or call #first.
58
58
  #
59
- # # terminate a scope by enumerating
60
- # Book.limit(10).each {|book| ... }
59
+ # # terminate a scope by enumerating
60
+ # Book.limit(10).each {|book| ... }
61
61
  #
62
- # # terminate a scope by getting the first record
63
- # Book.shard('books-1').first
62
+ # # terminate a scope by getting the first record
63
+ # Book.shard('books-1').first
64
64
  #
65
65
  class Scope < Record::Scope
66
-
66
+
67
67
  private
68
68
  def _each_object &block
69
-
69
+
70
70
  items = _item_collection
71
-
71
+
72
72
  items.select(:limit => @options[:limit]).each do |item_data|
73
73
  obj = base_class.new(:shard => _shard)
74
74
  obj.send(:hydrate, item_data.attributes['id'], item_data.attributes)
75
75
  yield(obj)
76
76
  end
77
-
77
+
78
78
  end
79
-
79
+
80
80
  private
81
81
  def _merge_scope scope
82
82
  merged = self
@@ -87,7 +87,7 @@ module AWS
87
87
  end
88
88
  merged
89
89
  end
90
-
90
+
91
91
  private
92
92
  def _handle_options options
93
93
  scope = self
@@ -96,12 +96,12 @@ module AWS
96
96
  end
97
97
  scope
98
98
  end
99
-
99
+
100
100
  private
101
101
  def _item_collection
102
102
  base_class.dynamo_db_table(_shard).items
103
103
  end
104
-
104
+
105
105
  end
106
106
  end
107
107
  end
@@ -13,94 +13,90 @@
13
13
 
14
14
  # todo move these to included modules (like validations and naming)
15
15
 
16
- require 'aws/record/abstract_base'
17
- require 'aws/record/model/scope'
18
- require 'aws/record/model/attributes'
19
- require 'aws/record/model/finder_methods'
20
16
 
21
17
  module AWS
22
18
  module Record
23
19
 
24
20
  # An ActiveRecord-like interface built ontop of Amazon SimpleDB.
25
21
  #
26
- # class Book < AWS::Record::Model
22
+ # class Book < AWS::Record::Model
27
23
  #
28
- # string_attr :title
29
- # string_attr :author
30
- # integer_attr :number_of_pages
24
+ # string_attr :title
25
+ # string_attr :author
26
+ # integer_attr :number_of_pages
31
27
  #
32
- # timestamps # adds a :created_at and :updated_at pair of timestamps
28
+ # timestamps # adds a :created_at and :updated_at pair of timestamps
33
29
  #
34
- # end
30
+ # end
35
31
  #
36
- # b = Book.new(:title => 'My Book', :author => 'Me', :pages => 1)
37
- # b.save
32
+ # b = Book.new(:title => 'My Book', :author => 'Me', :pages => 1)
33
+ # b.save
38
34
  #
39
- # = Attribute Macros
35
+ # # Attribute Macros
40
36
  #
41
37
  # When extending AWS::Record::Model you should first consider what
42
38
  # attributes your class should have. Unlike ActiveRecord, AWS::Record
43
39
  # models are not backed by a database table/schema. You must choose what
44
- # attributes (and what types) you need.
40
+ # attributes (and what types) you need.
45
41
  #
46
- # * +string_attr+
47
- # * +boolean_attr+
48
- # * +integer_attr+
49
- # * +float_attr+
50
- # * +datetime_attr+
51
- # * +date_attr+
42
+ # * `string_attr`
43
+ # * `boolean_attr`
44
+ # * `integer_attr`
45
+ # * `float_attr`
46
+ # * `datetime_attr`
47
+ # * `date_attr`
52
48
  #
53
- # === Usage
49
+ # ### Usage
54
50
  #
55
51
  # Normally you just call these methods inside your model class definition:
56
52
  #
57
- # class Book < AWS::Record::Model
58
- # string_attr :title
59
- # boolean_attr :has_been_read
60
- # integer_attr :number_of_pages
61
- # float_attr :weight_in_pounds
62
- # datetime_attr :published_at
63
- # end
53
+ # class Book < AWS::Record::Model
54
+ # string_attr :title
55
+ # boolean_attr :has_been_read
56
+ # integer_attr :number_of_pages
57
+ # float_attr :weight_in_pounds
58
+ # datetime_attr :published_at
59
+ # end
64
60
  #
65
61
  # For each attribute macro a pair of setter/getter methods are added #
66
62
  # to your class (and a few other useful methods).
67
63
  #
68
- # b = Book.new
69
- # b.title = "My Book"
70
- # b.has_been_read = true
71
- # b.number_of_pages = 1000
72
- # b.weight_in_pounds = 1.1
73
- # b.published_at = Time.now
74
- # b.save
64
+ # b = Book.new
65
+ # b.title = "My Book"
66
+ # b.has_been_read = true
67
+ # b.number_of_pages = 1000
68
+ # b.weight_in_pounds = 1.1
69
+ # b.published_at = Time.now
70
+ # b.save
75
71
  #
76
- # b.id #=> "0aa894ca-8223-4d34-831e-e5134b2bb71c"
77
- # b.attributes
78
- # #=> { 'title' => 'My Book', 'has_been_read' => true, ... }
72
+ # b.id #=> "0aa894ca-8223-4d34-831e-e5134b2bb71c"
73
+ # b.attributes
74
+ # #=> { 'title' => 'My Book', 'has_been_read' => true, ... }
79
75
  #
80
- # === Default Values
76
+ # ### Default Values
81
77
  #
82
- # All attribute macros accept the +:default_value+ option. This sets
78
+ # All attribute macros accept the `:default_value` option. This sets
83
79
  # a value that is populated onto all new instnaces of the class.
84
80
  #
85
- # class Book < AWS::Record::Model
86
- # string_attr :author, :default_value => 'Me'
87
- # end
81
+ # class Book < AWS::Record::Model
82
+ # string_attr :author, :default_value => 'Me'
83
+ # end
88
84
  #
89
- # Book.new.author #=> 'Me'
85
+ # Book.new.author #=> 'Me'
90
86
  #
91
- # === Multi-Valued (Set) Attributes
87
+ # ### Multi-Valued (Set) Attributes
92
88
  #
93
89
  # AWS::Record permits storing multiple values with a single attribute.
94
90
  #
95
- # class Book < AWS::Record::Model
96
- # string_attr :tags, :set => true
97
- # end
91
+ # class Book < AWS::Record::Model
92
+ # string_attr :tags, :set => true
93
+ # end
98
94
  #
99
- # b = Book.new
100
- # b.tags #=> #<Set: {}>
95
+ # b = Book.new
96
+ # b.tags #=> #<Set: {}>
101
97
  #
102
- # b.tags = ['fiction', 'fantasy']
103
- # b.tags #=> #<Set: {'fiction', 'fantasy'}>
98
+ # b.tags = ['fiction', 'fantasy']
99
+ # b.tags #=> #<Set: {'fiction', 'fantasy'}>
104
100
  #
105
101
  # These multi-valued attributes are treated as sets, not arrays. This
106
102
  # means:
@@ -108,153 +104,153 @@ module AWS
108
104
  # * values are unordered
109
105
  # * duplicate values are automatically omitted
110
106
  #
111
- # Please consider these limitations when you choose to use the +:set+
107
+ # Please consider these limitations when you choose to use the `:set`
112
108
  # option with the attribute macros.
113
- #
114
- # = Validations
109
+ #
110
+ # # Validations
115
111
  #
116
112
  # It's important to validate models before there are persisted to keep
117
113
  # your data clean. AWS::Record supports most of the ActiveRecord style
118
114
  # validators.
119
115
  #
120
- # class Book < AWS::Record::Model
121
- # string_attr :title
122
- # validates_presence_of :title
123
- # end
116
+ # class Book < AWS::Record::Model
117
+ # string_attr :title
118
+ # validates_presence_of :title
119
+ # end
124
120
  #
125
- # b = Book.new
126
- # b.valid? #=> false
127
- # b.errors.full_messages #=> ['Title may not be blank']
121
+ # b = Book.new
122
+ # b.valid? #=> false
123
+ # b.errors.full_messages #=> ['Title may not be blank']
128
124
  #
129
125
  # Validations are checked before saving a record. If any of the validators
130
126
  # adds an error, the the save will fail.
131
127
  #
132
128
  # For more information about the available validation methods see
133
129
  # {Validations}.
134
- #
135
- # = Finder Methods
130
+ #
131
+ # # Finder Methods
136
132
  #
137
133
  # You can find records by their ID. Each record gets a UUID when it
138
134
  # is saved for the first time. You can use this ID to fetch the record
139
135
  # at a latter time:
140
136
  #
141
- # b = Book["0aa894ca-8223-4d34-831e-e5134b2bb71c"]
137
+ # b = Book["0aa894ca-8223-4d34-831e-e5134b2bb71c"]
142
138
  #
143
- # b = Book.find("0aa894ca-8223-4d34-831e-e5134b2bb71c")
139
+ # b = Book.find("0aa894ca-8223-4d34-831e-e5134b2bb71c")
144
140
  #
145
141
  # If you try to find a record by ID that has no data an error will
146
142
  # be raised.
147
143
  #
148
- # === All
144
+ # ### All
149
145
  #
150
- # You can enumerate all of your records using +all+.
146
+ # You can enumerate all of your records using `all`.
151
147
  #
152
- # Book.all.each do |book|
153
- # puts book.id
154
- # end
148
+ # Book.all.each do |book|
149
+ # puts book.id
150
+ # end
155
151
  #
156
- # Book.find(:all) do |book|
157
- # puts book.id
158
- # end
152
+ # Book.find(:all) do |book|
153
+ # puts book.id
154
+ # end
159
155
  #
160
156
  # Be careful when enumerating all. Depending on the number of records
161
- # and number of attributes each record has, this can take a while,
157
+ # and number of attributes each record has, this can take a while,
162
158
  # causing quite a few requests.
163
159
  #
164
- # === First
160
+ # ### First
165
161
  #
166
- # If you only want a single record, you should use +first+.
162
+ # If you only want a single record, you should use `first`.
167
163
  #
168
- # b = Book.first
164
+ # b = Book.first
169
165
  #
170
- # === Modifiers
166
+ # ### Modifiers
171
167
  #
172
168
  # Frequently you do not want ALL records or the very first record. You
173
- # can pass options to +find+, +all+ and +first+.
169
+ # can pass options to `find`, `all` and `first`.
174
170
  #
175
- # my_books = Book.find(:all, :where => 'owner = "Me"')
171
+ # my_books = Book.find(:all, :where => 'owner = "Me"')
176
172
  #
177
- # book = Book.first(:where => { :has_been_read => false })
173
+ # book = Book.first(:where => { :has_been_read => false })
178
174
  #
179
175
  # You can pass as find options:
180
- #
181
- # * +:where+ - Conditions that must be met to be returned
182
- # * +:order+ - The order to sort matched records by
183
- # * +:limit+ - The maximum number of records to return
184
176
  #
185
- # = Scopes
177
+ # * `:where` - Conditions that must be met to be returned
178
+ # * `:order` - The order to sort matched records by
179
+ # * `:limit` - The maximum number of records to return
180
+ #
181
+ # # Scopes
186
182
  #
187
183
  # More useful than writing query fragments all over the place is to
188
184
  # name your most common conditions for reuse.
189
185
  #
190
- # class Book < AWS::Record::Model
186
+ # class Book < AWS::Record::Model
191
187
  #
192
- # scope :mine, where(:owner => 'Me')
193
- #
194
- # scope :unread, where(:has_been_read => false)
188
+ # scope :mine, where(:owner => 'Me')
195
189
  #
196
- # scope :by_popularity, order(:score, :desc)
190
+ # scope :unread, where(:has_been_read => false)
197
191
  #
198
- # scope :top_10, by_popularity.limit(10)
192
+ # scope :by_popularity, order(:score, :desc)
199
193
  #
200
- # end
194
+ # scope :top_10, by_popularity.limit(10)
201
195
  #
202
- # # The following expression returns 10 books that belong
203
- # # to me, that are unread sorted by popularity.
204
- # next_good_reads = Book.mine.unread.top_10
196
+ # end
197
+ #
198
+ # # The following expression returns 10 books that belong
199
+ # # to me, that are unread sorted by popularity.
200
+ # next_good_reads = Book.mine.unread.top_10
205
201
  #
206
202
  # There are 3 standard scope methods:
207
203
  #
208
- # * +where+
209
- # * +order+
210
- # * +limit+
204
+ # * `where`
205
+ # * `order`
206
+ # * `limit`
211
207
  #
212
- # === Conditions (where)
208
+ # ### Conditions (where)
213
209
  #
214
210
  # Where accepts aruments in a number of forms:
215
211
  #
216
- # 1. As an sql-like fragment. If you need to escape values this form is
212
+ # 1. As an sql-like fragment. If you need to escape values this form is
217
213
  # not suggested.
218
214
  #
219
- # Book.where('title = "My Book"')
215
+ # Book.where('title = "My Book"')
220
216
  #
221
217
  # 2. An sql-like fragment, with placeholders. This escapes quoted
222
218
  # arguments properly to avoid injection.
223
219
  #
224
- # Book.where('title = ?', 'My Book')
220
+ # Book.where('title = ?', 'My Book')
225
221
  #
226
- # 3. A hash of key-value pairs. This is the simplest form, but also the
227
- # least flexible. You can not use this form if you need more complex
222
+ # 3. A hash of key-value pairs. This is the simplest form, but also the
223
+ # least flexible. You can not use this form if you need more complex
228
224
  # expressions that use or.
229
225
  #
230
- # Book.where(:title => 'My Book')
226
+ # Book.where(:title => 'My Book')
231
227
  #
232
- # === Order
228
+ # ### Order
233
229
  #
234
230
  # This orders the records as returned by AWS. Default ordering is ascending.
235
231
  # Pass the value :desc as a second argument to sort in reverse ordering.
236
232
  #
237
- # Book.order(:title) # alphabetical ordering
238
- # Book.order(:title, :desc) # reverse alphabetical ordering
233
+ # Book.order(:title) # alphabetical ordering
234
+ # Book.order(:title, :desc) # reverse alphabetical ordering
239
235
  #
240
- # You may only order by a single attribute. If you call order twice in the
236
+ # You may only order by a single attribute. If you call order twice in the
241
237
  # chain, the last call gets presedence:
242
238
  #
243
- # Book.order(:title).order(:price)
239
+ # Book.order(:title).order(:price)
244
240
  #
245
241
  # In this example the books will be ordered by :price and the order(:title)
246
242
  # is lost.
247
243
  #
248
- # === Limit
244
+ # ### Limit
249
245
  #
250
- # Just call +limit+ with an integer argument. This sets the maximum
246
+ # Just call `limit` with an integer argument. This sets the maximum
251
247
  # number of records to retrieve:
252
248
  #
253
- # Book.limit(2)
249
+ # Book.limit(2)
254
250
  #
255
- # === Delayed Execution
251
+ # ### Delayed Execution
256
252
  #
257
- # It should be noted that all finds are lazy (except +first+). This
253
+ # It should be noted that all finds are lazy (except `first`). This
258
254
  # means the value returned is not an array of records, rather a handle
259
255
  # to a {Scope} object that will return records when you enumerate over them.
260
256
  #
@@ -262,49 +258,53 @@ module AWS
262
258
  # In the following example no request is made until the call to
263
259
  # each_with_index.
264
260
  #
265
- # all_books = Books.all
266
- # ten_books = all_books.limit(10)
261
+ # all_books = Books.all
262
+ # ten_books = all_books.limit(10)
267
263
  #
268
- # ten_books.each_with_index do |book,n|
269
- # puts "#{n + 1} : #{book.title}"
270
- # end
264
+ # ten_books.each_with_index do |book,n|
265
+ # puts "#{n + 1} : #{book.title}"
266
+ # end
271
267
  #
272
268
  class Model
273
269
 
270
+ require 'aws/record/model/attributes'
271
+ require 'aws/record/model/finder_methods'
272
+ require 'aws/record/model/scope'
273
+
274
274
  extend AbstractBase
275
275
 
276
276
  class << self
277
277
 
278
278
  # Creates the SimpleDB domain that is configured for this class.
279
279
  #
280
- # class Product < AWS::Record::Model
281
- # end
280
+ # class Product < AWS::Record::Model
281
+ # end
282
282
  #
283
- # Product.create_table #=> 'Product'
283
+ # Product.create_table #=> 'Product'
284
284
  #
285
285
  # If you share a single AWS account with multiple applications, you
286
286
  # can provide a domain prefix for your model classes.
287
287
  #
288
- # AWS::Record.domain_prefix = 'myapp-'
288
+ # AWS::Record.domain_prefix = 'myapp-'
289
289
  #
290
- # Product.create_table #=> 'myapp-Product'
290
+ # Product.create_table #=> 'myapp-Product'
291
291
  #
292
292
  # If you have set a model shard name, this is used in place of the
293
293
  # class name.
294
294
  #
295
- # AWS::Record.domain_prefix = 'prod-'
296
- # class Product < AWS::Record::Model
297
- # set_shard_name 'products'
298
- # end
295
+ # AWS::Record.domain_prefix = 'prod-'
296
+ # class Product < AWS::Record::Model
297
+ # set_shard_name 'products'
298
+ # end
299
299
  #
300
- # Product.create_table #=> 'prod-products'
300
+ # Product.create_table #=> 'prod-products'
301
301
  #
302
302
  # If you shard you data across multiple domains, you can specify the
303
303
  # shard name:
304
304
  #
305
- # # create two domains, with the given names
306
- # Product.create_domain 'products-1'
307
- # Product.create_domain 'products-2'
305
+ # # create two domains, with the given names
306
+ # Product.create_domain 'products-1'
307
+ # Product.create_domain 'products-2'
308
308
  #
309
309
  # @param [optional,String] shard_name Defaults to the class name.
310
310
  #
@@ -332,7 +332,7 @@ module AWS
332
332
 
333
333
  end
334
334
 
335
- # @return [SimpleDB::Item] Returns a reference to the item as stored in
335
+ # @return [SimpleDB::Item] Returns a reference to the item as stored in
336
336
  # simple db.
337
337
  # @private
338
338
  private