sitemap_generator 6.1.2 → 6.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 07d190381c5aae66acc3b6eaa43d61444f3280e1ff76fd0dadf49d6c730d9b7a
4
- data.tar.gz: dc61f7ff02926247d30ead18d71b16068e14a01ed36bb0694f0615febef6000a
3
+ metadata.gz: bd65e97e0a574eb1d124988e20c38312968548bf8ef8d381e648c54d6766d049
4
+ data.tar.gz: b9cbf014555cbdfb293c6e780a3e9ab4349db02f8fddbcddc28ab8c743f24657
5
5
  SHA512:
6
- metadata.gz: ee8f86311c174e2b9b01514d48325f6d824bcabfaf8e5a711ff7e83442bc9f5adf4bbbe1ddc990d292c8ffc73138e7244b840a38aaeccef6f26bb55adee8cae6
7
- data.tar.gz: 1049e27acaa1dafee38153d4faa1b51de61e67162a792a525269090e51f85e1c5c919c9755cc301543e6cd97dd8f18f5d914685cc7e3a23c49a494d3abdb21d9
6
+ metadata.gz: 1ec50b44415503a1d3bce5859cf6b397592212c19827f6dc45019df221f3c08131a04f7e89db98d21172982d6ca212c901638c30882c9b4b08adc107fff67d95
7
+ data.tar.gz: 3afc709b82309f5c052fb00e8c467554c44cc974d7dc122ae45938d9b80c574236639c74b85058a1251c7fc5a2fd2fe827d8478619612f8c6ee0a5ef514d780f
data/CHANGES.md CHANGED
@@ -1,3 +1,23 @@
1
+ ### 6.3.0
2
+
3
+ * Remove Bing's deprecated sitemap submission [#400](https://github.com/kjvarga/sitemap_generator/pull/400).
4
+ * `SitemapGenerator::AwsSdkAdapter`: Support configuring ACL and caching on the uploaded files [#409](https://github.com/kjvarga/sitemap_generator/pull/409).
5
+ * `SitemapGenerator::GoogleStorageAdapter`: Support configuring ACL on the uploaded files [#410](https://github.com/kjvarga/sitemap_generator/pull/410).
6
+ * Fix CircleCI specs for Ruby 3 [#407](https://github.com/kjvarga/sitemap_generator/pull/407).
7
+
8
+ ### 6.2.1
9
+
10
+ * Bugfix: Improve handling of deprecated options in `AwsSdkAdapter`. Fixes bug where `:region` was being set to `nil`. [#390](https://github.com/kjvarga/sitemap_generator/pull/390).
11
+
12
+ ### 6.2.0
13
+
14
+ * Raise `LoadError` when an adapter's dependency is missing to better support Sorbet [#387](https://github.com/kjvarga/sitemap_generator/pull/387).
15
+ * Update the Bing notification URL [#386](https://github.com/kjvarga/sitemap_generator/pull/386).
16
+ * Setup integration testing against a matrix of Ruby and Rails versions; test against Ruby 3.1 and Rails 7.
17
+ * Change default `changefreq` of the root URL from `always` to `weekly` [#376](https://github.com/kjvarga/sitemap_generator/pull/376).
18
+ * `SitemapGenerator::GoogleStorageAdapter`: Support ruby 3 kwarg changes [#375](https://github.com/kjvarga/sitemap_generator/pull/375).
19
+ * `SitemapGenerator::S3Adapter`: Allow Fog `public` option to be Configurable [#359](https://github.com/kjvarga/sitemap_generator/pull/359).
20
+
1
21
  ### 6.1.2
2
22
 
3
23
  * Resolve NoMethodError using URI#open for Ruby less than 2.5.0 [#353](https://github.com/kjvarga/sitemap_generator/pull/353)
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # SitemapGenerator
2
2
 
3
+ [![CircleCI](https://circleci.com/gh/kjvarga/sitemap_generator/tree/master.svg?style=shield)](https://circleci.com/gh/kjvarga/sitemap_generator/tree/master)
4
+
3
5
  SitemapGenerator is the easiest way to generate Sitemaps in Ruby. Rails integration provides access to the Rails route helpers within your sitemap config file and automatically makes the rake tasks available to you. Or if you prefer to use another framework, you can! You can use the rake tasks provided or run your sitemap configs as plain ruby scripts.
4
6
 
5
7
  Sitemaps adhere to the [Sitemap 0.9 protocol][sitemap_protocol] specification.
@@ -13,7 +15,7 @@ Sitemaps adhere to the [Sitemap 0.9 protocol][sitemap_protocol] specification.
13
15
  * Adheres to the [Sitemap 0.9 protocol][sitemap_protocol]
14
16
  * Handles millions of links
15
17
  * Customizable sitemap compression
16
- * Notifies search engines (Google, Bing) of new sitemaps
18
+ * Notifies search engines (Google) of new sitemaps
17
19
  * Ensures your old sitemaps stay in place if the new sitemap fails to generate
18
20
  * Gives you complete control over your sitemap contents and naming scheme
19
21
  * Intelligent sitemap indexing
@@ -56,71 +58,72 @@ In /Users/karl/projects/sitemap_generator-test/public/
56
58
  Sitemap stats: 3 links / 1 sitemaps / 0m00s
57
59
 
58
60
  Successful ping of Google
59
- Successful ping of Bing
60
61
  ```
61
62
 
62
63
  ## Contents
63
64
 
64
- * [Features](#features)
65
- + [Show Me](#show-me)
66
- * [Contents](#contents)
67
- * [Contribute](#contribute)
68
- * [Foreword](#foreword)
69
- * [Installation](#installation)
70
- + [Ruby](#ruby)
71
- + [Rails](#rails)
72
- * [Getting Started](#getting-started)
73
- + [Preventing Output](#preventing-output)
74
- + [Rake Tasks](#rake-tasks)
75
- + [Pinging Search Engines](#pinging-search-engines)
76
- + [Crontab](#crontab)
77
- + [Robots.txt](#robotstxt)
78
- + [Ruby Modules](#ruby-modules)
79
- + [Deployments & Capistrano](#deployments--capistrano)
80
- + [Sitemaps with no Index File](#sitemaps-with-no-index-file)
81
- + [Upload Sitemaps to a Remote Host using Adapters](#upload-sitemaps-to-a-remote-host-using-adapters)
82
- - [Supported Adapters](#supported-adapters)
83
- * [`SitemapGenerator::FileAdapter`](#sitemapgeneratorfileadapter)
84
- * [`SitemapGenerator::FogAdapter`](#sitemapgeneratorfogadapter)
85
- * [`SitemapGenerator::S3Adapter`](#sitemapgenerators3adapter)
86
- * [`SitemapGenerator::AwsSdkAdapter`](#sitemapgeneratorawssdkadapter)
87
- * [`SitemapGenerator::WaveAdapter`](#sitemapgeneratorwaveadapter)
88
- * [`SitemapGenerator::GoogleStorageAdapter`](#sitemapgeneratorgooglestorageadapter)
89
- - [An Example of Using an Adapter](#an-example-of-using-an-adapter)
90
- + [Generating Multiple Sitemaps](#generating-multiple-sitemaps)
91
- * [Sitemap Configuration](#sitemap-configuration)
92
- + [A Simple Example](#a-simple-example)
93
- + [Adding Links](#adding-links)
94
- + [Supported Options to `add`](#supported-options-to-add)
95
- + [Adding Links to the Sitemap Index](#adding-links-to-the-sitemap-index)
96
- + [Accessing the LinkSet instance](#accessing-the-linkset-instance)
97
- + [Speeding Things Up](#speeding-things-up)
98
- * [Customizing your Sitemaps](#customizing-your-sitemaps)
99
- + [Sitemap Options](#sitemap-options)
100
- * [Sitemap Groups](#sitemap-groups)
101
- + [A Groups Example](#a-groups-example)
102
- + [Using `group` without a block](#using-group-without-a-block)
103
- * [Sitemap Extensions](#sitemap-extensions)
104
- + [News Sitemaps](#news-sitemaps)
105
- - [Example](#example)
106
- - [Supported options](#supported-options)
107
- + [Image Sitemaps](#image-sitemaps)
108
- - [Example](#example-1)
109
- - [Supported options](#supported-options-1)
110
- + [Video Sitemaps](#video-sitemaps)
111
- - [Example](#example-2)
112
- - [Supported options](#supported-options-2)
113
- + [PageMap Sitemaps](#pagemap-sitemaps)
114
- - [Supported options](#supported-options-3)
115
- - [Example:](#example)
116
- + [Alternate Links](#alternate-links)
117
- - [Example](#example-3)
118
- - [Supported options](#supported-options-4)
119
- + [Mobile Sitemaps](#-mobile-sitemaps)
120
- - [Example](#example-4)
121
- - [Supported options](#supported-options-5)
122
- * [Compatibility](#compatibility)
123
- * [Licence](#licence)
65
+ - [SitemapGenerator](#sitemapgenerator)
66
+ - [Features](#features)
67
+ - [Show Me](#show-me)
68
+ - [Contents](#contents)
69
+ - [Contribute](#contribute)
70
+ - [Foreword](#foreword)
71
+ - [Installation](#installation)
72
+ - [Ruby](#ruby)
73
+ - [Rails](#rails)
74
+ - [Getting Started](#getting-started)
75
+ - [Preventing Output](#preventing-output)
76
+ - [Rake Tasks](#rake-tasks)
77
+ - [Pinging Search Engines](#pinging-search-engines)
78
+ - [Crontab](#crontab)
79
+ - [Robots.txt](#robotstxt)
80
+ - [Ruby Modules](#ruby-modules)
81
+ - [Deployments & Capistrano](#deployments--capistrano)
82
+ - [Sitemaps with no Index File](#sitemaps-with-no-index-file)
83
+ - [Upload Sitemaps to a Remote Host using Adapters](#upload-sitemaps-to-a-remote-host-using-adapters)
84
+ - [Supported Adapters](#supported-adapters)
85
+ - [`SitemapGenerator::FileAdapter`](#sitemapgeneratorfileadapter)
86
+ - [`SitemapGenerator::FogAdapter`](#sitemapgeneratorfogadapter)
87
+ - [`SitemapGenerator::S3Adapter`](#sitemapgenerators3adapter)
88
+ - [`SitemapGenerator::AwsSdkAdapter`](#sitemapgeneratorawssdkadapter)
89
+ - [`SitemapGenerator::WaveAdapter`](#sitemapgeneratorwaveadapter)
90
+ - [`SitemapGenerator::GoogleStorageAdapter`](#sitemapgeneratorgooglestorageadapter)
91
+ - [An Example of Using an Adapter](#an-example-of-using-an-adapter)
92
+ - [Generating Multiple Sitemaps](#generating-multiple-sitemaps)
93
+ - [Sitemap Configuration](#sitemap-configuration)
94
+ - [A Simple Example](#a-simple-example)
95
+ - [Adding Links](#adding-links)
96
+ - [Supported Options to `add`](#supported-options-to-add)
97
+ - [Adding Links to the Sitemap Index](#adding-links-to-the-sitemap-index)
98
+ - [Accessing the LinkSet instance](#accessing-the-linkset-instance)
99
+ - [Speeding Things Up](#speeding-things-up)
100
+ - [Customizing your Sitemaps](#customizing-your-sitemaps)
101
+ - [Sitemap Options](#sitemap-options)
102
+ - [Sitemap Groups](#sitemap-groups)
103
+ - [A Groups Example](#a-groups-example)
104
+ - [Using `group` without a block](#using-group-without-a-block)
105
+ - [Sitemap Extensions](#sitemap-extensions)
106
+ - [News Sitemaps](#news-sitemaps)
107
+ - [Example](#example)
108
+ - [Supported options](#supported-options)
109
+ - [Image Sitemaps](#image-sitemaps)
110
+ - [Example](#example-1)
111
+ - [Supported options](#supported-options-1)
112
+ - [Video Sitemaps](#video-sitemaps)
113
+ - [Example](#example-2)
114
+ - [Supported options](#supported-options-2)
115
+ - [PageMap Sitemaps](#pagemap-sitemaps)
116
+ - [Supported options](#supported-options-3)
117
+ - [Example:](#example-3)
118
+ - [Alternate Links](#alternate-links)
119
+ - [Example](#example-4)
120
+ - [Supported options](#supported-options-4)
121
+ - [Alternates Example](#alternates-example)
122
+ - [Mobile Sitemaps](#mobile-sitemaps)
123
+ - [Example](#example-5)
124
+ - [Supported options](#supported-options-5)
125
+ - [Compatibility](#compatibility)
126
+ - [Licence](#licence)
124
127
 
125
128
  ## Contribute
126
129
 
@@ -201,7 +204,7 @@ SitemapGenerator.verbose = false
201
204
 
202
205
  ### Pinging Search Engines
203
206
 
204
- Using `rake sitemap:refresh` will notify Google and Bing to let them know that a new sitemap
207
+ Using `rake sitemap:refresh` will notify Google to let them know that a new sitemap
205
208
  is available. To generate new sitemaps without notifying search engines, use `rake sitemap:refresh:no_ping`.
206
209
 
207
210
  If you want to customize the hash of search engines you can access it at:
@@ -352,28 +355,29 @@ directory.
352
355
 
353
356
  You must `require 'fog-aws'` in your sitemap config before using this adapter.
354
357
 
355
- ##### `SitemapGenerator::AwsSdkAdapter`
356
-
357
- Uses `Aws::S3::Resource` to upload to Amazon S3 storage. Includes automatic detection of your AWS
358
- credentials using `Aws::Credentials`.
359
-
360
- You must `require 'aws-sdk-s3'` in your sitemap config before using this adapter,
361
- or `require` another library that defines `Aws::S3::Resource` and `Aws::Credentials`.
362
-
363
358
  An example of using this adapter in your sitemap configuration:
364
359
 
365
360
  ```ruby
366
- SitemapGenerator::Sitemap.adapter = SitemapGenerator::AwsSdkAdapter.new('s3_bucket',
367
- aws_access_key_id: 'AKIAI3SW5CRAZBL4WSTA',
368
- aws_secret_access_key: 'asdfadsfdsafsadf',
369
- aws_region: 'us-east-1'
370
- )
361
+ SitemapGenerator::Sitemap.adapter = SitemapGenerator::S3Adapter.new(options)
371
362
  ```
372
363
 
373
- ##### `SitemapGenerator::AwsSdkAdapter (DigitalOcean Spaces)`
364
+ Where `options` is a Hash with any of the following keys:
365
+ * `aws_access_key_id` [String] Your AWS access key id
366
+ * `aws_secret_access_key` [String] Your AWS secret access key
367
+ * `fog_provider` [String]
368
+ * `fog_directory` [String]
369
+ * `fog_region` [String]
370
+ * `fog_path_style` [String]
371
+ * `fog_storage_options` [Hash] Other options to pass to `Fog::Storage`
372
+ * `fog_public` [Boolean] Whether the file is publicly accessible
373
+
374
+ Alternatively you can use an environment variable to configure each option (except `fog_storage_options`). The environment variables have the same
375
+ name but capitalized, e.g. `FOG_PATH_STYLE`.
376
+
377
+ ##### `SitemapGenerator::AwsSdkAdapter`
374
378
 
375
379
  Uses `Aws::S3::Resource` to upload to Amazon S3 storage. Includes automatic detection of your AWS
376
- credentials using `Aws::Credentials`.
380
+ credentials and region.
377
381
 
378
382
  You must `require 'aws-sdk-s3'` in your sitemap config before using this adapter,
379
383
  or `require` another library that defines `Aws::S3::Resource` and `Aws::Credentials`.
@@ -382,13 +386,19 @@ directory.
382
386
 
383
387
  ```ruby
384
388
  SitemapGenerator::Sitemap.adapter = SitemapGenerator::AwsSdkAdapter.new('s3_bucket',
385
- aws_access_key_id: 'AKIAI3SW5CRAZBL4WSTA',
386
- aws_secret_access_key: 'asdfadsfdsafsadf',
387
- aws_region: 'sfo2',
388
- aws_endpoint: 'https://sfo2.digitaloceanspaces.com'
389
+ acl: 'public-read', # Optional. This is the default.
390
+ cache_control: 'private, max-age=0, no-cache', # Optional. This is the default.
391
+ access_key_id: 'AKIAI3SW5CRAZBL4WSTA',
392
+ secret_access_key: 'asdfadsfdsafsadf',
393
+ region: 'us-east-1',
394
+ endpoint: 'https://sfo2.digitaloceanspaces.com'
389
395
  )
390
396
  ```
391
397
 
398
+ Where the first argument is the S3 bucket name, and the rest are keyword argument options. Options `:acl` and `:cache_control` configure access and caching of the uploaded files; all other options are passed directly to the AWS client.
399
+
400
+ See [the `SitemapGenerator::AwsSdkAdapter` docs](https://github.com/kjvarga/sitemap_generator/blob/master/lib/sitemap_generator/adapters/aws_sdk_adapter.rb), and [https://docs.aws.amazon.com/sdk-for-ruby/v2/api/Aws/S3/Client.html#initialize-instance_method](https://docs.aws.amazon.com/sdk-for-ruby/v2/api/Aws/S3/Client.html#initialize-instance_method) for the full list of supported options.
401
+
392
402
  ##### `SitemapGenerator::WaveAdapter`
393
403
 
394
404
  Uses `CarrierWave::Uploader::Base` to upload to any service supported by CarrierWave, for example,
@@ -409,9 +419,10 @@ directory.
409
419
 
410
420
  ```ruby
411
421
  SitemapGenerator::Sitemap.adapter = SitemapGenerator::GoogleStorageAdapter.new(
422
+ acl: 'public', # Optional. This is the default value.
423
+ bucket: 'name_of_bucket'
412
424
  credentials: 'path/to/keyfile.json',
413
425
  project_id: 'google_account_project_id',
414
- bucket: 'name_of_bucket'
415
426
  )
416
427
  ```
417
428
  Also, inline with Google Authentication options, it can also pick credentials from environment variables. All [supported environment variables][google_cloud_storage_authentication] can be used, for example: `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_CREDENTIALS`. An example of using this adapter with the environment variables is:
@@ -422,7 +433,7 @@ directory.
422
433
  )
423
434
  ```
424
435
 
425
- All options other than the `:bucket` option are passed to the `Google::Cloud::Storage.new` initializer giving you maximum configurability. See the [Google Cloud Storage initializer][google_cloud_storage_initializer] for supported options.
436
+ All options other than the `:bucket` and `:acl` options are passed to the `Google::Cloud::Storage.new` initializer giving you maximum configurability. See the [Google Cloud Storage initializer][google_cloud_storage_initializer] for supported options.
426
437
 
427
438
  #### An Example of Using an Adapter
428
439
 
@@ -460,8 +471,7 @@ directory.
460
471
  Note that SitemapGenerator will automatically turn off `include_index` in this case because
461
472
  the `sitemaps_host` does not match the `default_host`. The link to the sitemap index file
462
473
  that would otherwise be included would point to a different host than the rest of the links
463
- in the sitemap, something that the sitemap rules forbid. (Since version 3.2 this is no
464
- longer an issue because [`include_index` is off by default][include_index_change].)
474
+ in the sitemap, something that the sitemap rules forbid.
465
475
 
466
476
  4. Verify to Google that you own the S3 url
467
477
 
@@ -571,7 +581,7 @@ In /Users/karl/projects/sitemap_generator-test/public/
571
581
  Sitemap stats: 2 links / 1 sitemaps / 0m00s
572
582
  ```
573
583
 
574
- Weird! The sitemap has two links, even though we only added one! This is because SitemapGenerator adds the root URL `/` for you by default. (Note that prior to version 3.2 the URL of the sitemap index file was also added to the sitemap by default but [this behaviour has been changed][include_index_change] because of Google complaining about nested indexing. This also doesn't make sense anymore because indexes are not always needed.) You can change the default behaviour by setting the `include_root` or `include_index` option.
584
+ Weird! The sitemap has two links, even though we only added one! This is because SitemapGenerator adds the root URL `/` for you by default. You can change the default behaviour by setting the `include_root` or `include_index` option.
575
585
 
576
586
  Now let's take a look at the file that was created. After uncompressing and XML-tidying the contents we have:
577
587
 
@@ -584,7 +594,7 @@ Now let's take a look at the file that was created. After uncompressing and XML
584
594
  <url>
585
595
  <loc>http://www.example.com/</loc>
586
596
  <lastmod>2011-05-21T00:03:38+00:00</lastmod>
587
- <changefreq>always</changefreq>
597
+ <changefreq>weekly</changefreq>
588
598
  <priority>1.0</priority>
589
599
  </url>
590
600
  <url>
@@ -1116,7 +1126,27 @@ end
1116
1126
  * `:nofollow` - Optional, boolean. Used to mark link as "nofollow".
1117
1127
  * `:media` - Optional, string. Specify [media targets for responsive design pages][media].
1118
1128
 
1119
- ### <a name="internal_mobile"></a> Mobile Sitemaps
1129
+ #### Alternates Example
1130
+
1131
+ ```ruby
1132
+ SitemapGenerator::Sitemap.default_host = "http://www.example.com"
1133
+ SitemapGenerator::Sitemap.create do
1134
+ add('/index.html', :alternates => [
1135
+ {
1136
+ :href => 'http://www.example.de/index.html',
1137
+ :lang => 'de',
1138
+ :nofollow => true
1139
+ },
1140
+ {
1141
+ :href => 'http://www.example.es/index.html',
1142
+ :lang => 'es',
1143
+ :nofollow => true
1144
+ }
1145
+ ])
1146
+ end
1147
+ ```
1148
+
1149
+ ### Mobile Sitemaps
1120
1150
 
1121
1151
  Mobile sitemaps include a specific `<mobile:mobile/>` tag.
1122
1152
 
@@ -1137,8 +1167,8 @@ end
1137
1167
 
1138
1168
  ## Compatibility
1139
1169
 
1140
- Compatible with all versions of Rails and Ruby.
1141
- Ruby 1.9.3 support was dropped in Version 6.0.0 of this gem.
1170
+ Compatible with all versions of Rails and Ruby. Tested up to Ruby 3.1 and Rails 7.0.
1171
+ Ruby 1.9.3 support was dropped in Version 6.0.0.
1142
1172
 
1143
1173
  ## Licence
1144
1174
 
@@ -1149,10 +1179,6 @@ MIT. See the LICENSE.md file.
1149
1179
  Copyright (c) Karl Varga released under the MIT license
1150
1180
 
1151
1181
  [canonical_repo]:http://github.com/kjvarga/sitemap_generator
1152
- [enterprise_class]:https://twitter.com/dhh/status/1631034662 "I use enterprise in the same sense the Phusion guys do - i.e. Enterprise Ruby. Please don't look down on my use of the word 'enterprise' to represent being a cut above. It doesn't mean you ever have to work for a company the size of IBM. Or constantly fight inertia, writing crappy software, adhering to change management practices and spending hours in meetings... Not that there's anything wrong with that - Wait, what?"
1153
- [sitemaps_org]:http://www.sitemaps.org/protocol.html "http://www.sitemaps.org/protocol.html"
1154
- [sitemaps_xml]:http://www.sitemaps.org/protocol.html#xmlTagDefinitions "XML Tag Definitions"
1155
- [sitemap_generator_usage]:http://wiki.github.com/adamsalter/sitemap_generator/sitemapgenerator-usage "http://wiki.github.com/adamsalter/sitemap_generator/sitemapgenerator-usage"
1156
1182
  [sitemap_images]:http://www.google.com/support/webmasters/bin/answer.py?answer=178636
1157
1183
  [sitemap_video]:https://support.google.com/webmasters/answer/80471?hl=en&ref_topic=4581190
1158
1184
  [sitemap_news]:https://support.google.com/news/publisher/topic/2527688?hl=en&ref_topic=4359874
@@ -1163,8 +1189,6 @@ Copyright (c) Karl Varga released under the MIT license
1163
1189
  [image_tags]:http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=178636
1164
1190
  [news_tags]:http://www.google.com/support/news_pub/bin/answer.py?answer=74288
1165
1191
  [remote_hosts]:https://github.com/kjvarga/sitemap_generator/wiki/Generate-Sitemaps-on-read-only-filesystems-like-Heroku
1166
- [include_index_change]:https://github.com/kjvarga/sitemap_generator/issues/70
1167
- [ehoch]:https://github.com/ehoch
1168
1192
  [alternate_links]:http://support.google.com/webmasters/bin/answer.py?hl=en&answer=2620865
1169
1193
  [using_pagemaps]:https://developers.google.com/custom-search/docs/structured_data#pagemaps
1170
1194
  [iso_4217]:http://en.wikipedia.org/wiki/ISO_4217
data/VERSION CHANGED
@@ -1 +1 @@
1
- 6.1.2
1
+ 6.3.0
@@ -1,5 +1,5 @@
1
1
  if !defined?(Aws::S3::Resource) or !defined?(Aws::Credentials)
2
- raise "Error: `Aws::S3::Resource` and/or `Aws::Credentials` are not defined.\n\n"\
2
+ raise LoadError, "Error: `Aws::S3::Resource` and/or `Aws::Credentials` are not defined.\n\n"\
3
3
  "Please `require 'aws-sdk'` - or another library that defines these classes."
4
4
  end
5
5
 
@@ -8,53 +8,56 @@ module SitemapGenerator
8
8
  class AwsSdkAdapter
9
9
  # Specify your AWS bucket name, credentials, and/or region. By default
10
10
  # the AWS SDK will auto-detect your credentials and region, but you can use
11
- # the following options to configure - or override - them manually:
12
- #
13
- # Options:
14
- # :aws_access_key_id [String] Your AWS access key id
15
- # :aws_secret_access_key [String] Your AWS secret access key
16
- # :aws_region [String] Your AWS region
11
+ # the options to configure them manually.
17
12
  #
18
13
  # Requires Aws::S3::Resource and Aws::Credentials to be defined.
19
14
  #
20
- # @param [String] bucket Name of the S3 bucket
21
- # @param [Hash] options AWS credential overrides, see above
22
- def initialize(bucket, options = {})
15
+ # @param bucket [String] Name of the S3 bucket
16
+ # @param options [Hash] Options passed directly to AWS to control the Resource created. See Options below.
17
+ #
18
+ # Options:
19
+ # **Deprecated, use :endpoint instead** :aws_endpoint [String] The object storage endpoint,
20
+ # if not AWS, e.g. 'https://sfo2.digitaloceanspaces.com'
21
+ # **Deprecated, use :access_key_id instead** :aws_access_key_id [String] Your AWS access key id
22
+ # **Deprecated, use :secret_access_key instead** :aws_secret_access_key [String] Your AWS secret access key
23
+ # **Deprecated, use :region instead** :aws_region [String] Your AWS region
24
+ # :acl [String] The ACL to apply to the uploaded files. Defaults to 'public-read'.
25
+ # :cache_control [String] The cache control headder to apply to the uploaded files. Defaults to 'private, max-age=0, no-cache'.
26
+ #
27
+ # All other options you provide are passed directly to the AWS client.
28
+ # See https://docs.aws.amazon.com/sdk-for-ruby/v2/api/Aws/S3/Client.html#initialize-instance_method
29
+ # for a full list of supported options.
30
+ def initialize(bucket, aws_access_key_id: nil, aws_secret_access_key: nil, aws_region: nil, aws_endpoint: nil, acl: 'public-read', cache_control: 'private, max-age=0, no-cache', **options)
23
31
  @bucket = bucket
24
- @aws_access_key_id = options[:aws_access_key_id]
25
- @aws_secret_access_key = options[:aws_secret_access_key]
26
- @aws_region = options[:aws_region]
27
- @aws_endpoint = options[:aws_endpoint]
32
+ @acl = acl
33
+ @cache_control = cache_control
34
+ @options = options
35
+ set_option_unless_set(:access_key_id, aws_access_key_id)
36
+ set_option_unless_set(:secret_access_key, aws_secret_access_key)
37
+ set_option_unless_set(:region, aws_region)
38
+ set_option_unless_set(:endpoint, aws_endpoint)
28
39
  end
29
40
 
41
+
30
42
  # Call with a SitemapLocation and string data
31
43
  def write(location, raw_data)
32
44
  SitemapGenerator::FileAdapter.new.write(location, raw_data)
33
45
  s3_object = s3_resource.bucket(@bucket).object(location.path_in_public)
34
- s3_object.upload_file(location.path,
35
- acl: 'public-read',
36
- cache_control: 'private, max-age=0, no-cache',
46
+ s3_object.upload_file(location.path, {
47
+ acl: @acl,
48
+ cache_control: @cache_control,
37
49
  content_type: location[:compress] ? 'application/x-gzip' : 'application/xml'
38
- )
50
+ }.compact)
39
51
  end
40
52
 
41
53
  private
42
54
 
43
- def s3_resource
44
- @s3_resource ||= Aws::S3::Resource.new(s3_resource_options)
55
+ def set_option_unless_set(key, value)
56
+ @options[key] = value if @options[key].nil? && !value.nil?
45
57
  end
46
58
 
47
- def s3_resource_options
48
- options = {}
49
- options[:region] = @aws_region if !@aws_region.nil?
50
- options[:endpoint] = @aws_endpoint if !@aws_endpoint.nil?
51
- if !@aws_access_key_id.nil? && !@aws_secret_access_key.nil?
52
- options[:credentials] = Aws::Credentials.new(
53
- @aws_access_key_id,
54
- @aws_secret_access_key
55
- )
56
- end
57
- options
59
+ def s3_resource
60
+ @s3_resource ||= Aws::S3::Resource.new(@options)
58
61
  end
59
62
  end
60
63
  end
@@ -1,5 +1,5 @@
1
1
  if !defined?(Fog::Storage)
2
- raise "Error: `Fog::Storage` is not defined.\n\n"\
2
+ raise LoadError, "Error: `Fog::Storage` is not defined.\n\n"\
3
3
  "Please `require 'fog'` - or another library that defines this class."
4
4
  end
5
5
 
@@ -1,5 +1,5 @@
1
1
  if !defined?(Google::Cloud::Storage)
2
- raise "Error: `Google::Cloud::Storage` is not defined.\n\n"\
2
+ raise LoadError, "Error: `Google::Cloud::Storage` is not defined.\n\n"\
3
3
  "Please `require 'google/cloud/storage'` - or another library that defines this class."
4
4
  end
5
5
 
@@ -10,8 +10,9 @@ module SitemapGenerator
10
10
  #
11
11
  # @param [Hash] opts Google::Cloud::Storage configuration options.
12
12
  # @option :bucket [String] Required. Name of Google Storage Bucket where the file is to be uploaded.
13
+ # @option :acl [String] Optional. Access control which is applied to the uploaded file(s). Default value is 'public'.
13
14
  #
14
- # All options other than the `:bucket` option are passed to the `Google::Cloud::Storage.new`
15
+ # All options other than the `:bucket` and `:acl` options are passed to the `Google::Cloud::Storage.new`
15
16
  # initializer. See https://googleapis.dev/ruby/google-cloud-storage/latest/file.AUTHENTICATION.html
16
17
  # for all the supported environment variables and https://github.com/googleapis/google-cloud-ruby/blob/master/google-cloud-storage/lib/google/cloud/storage.rb
17
18
  # for supported options.
@@ -22,6 +23,7 @@ module SitemapGenerator
22
23
  def initialize(opts = {})
23
24
  opts = opts.clone
24
25
  @bucket = opts.delete(:bucket)
26
+ @acl = opts.has_key?(:acl) ? opts.delete(:acl) : 'public'
25
27
  @storage_options = opts
26
28
  end
27
29
 
@@ -29,9 +31,9 @@ module SitemapGenerator
29
31
  def write(location, raw_data)
30
32
  SitemapGenerator::FileAdapter.new.write(location, raw_data)
31
33
 
32
- storage = Google::Cloud::Storage.new(@storage_options)
34
+ storage = Google::Cloud::Storage.new(**@storage_options)
33
35
  bucket = storage.bucket(@bucket)
34
- bucket.create_file(location.path, location.path_in_public, acl: 'public')
36
+ bucket.create_file(location.path, location.path_in_public, acl: @acl)
35
37
  end
36
38
  end
37
39
  end
@@ -1,5 +1,5 @@
1
1
  if !defined?(Fog::Storage)
2
- raise "Error: `Fog::Storage` is not defined.\n\n"\
2
+ raise LoadError, "Error: `Fog::Storage` is not defined.\n\n"\
3
3
  "Please `require 'fog-aws'` - or another library that defines this class."
4
4
  end
5
5
 
@@ -16,6 +16,10 @@ module SitemapGenerator
16
16
  # @option :fog_region [String]
17
17
  # @option :fog_path_style [String]
18
18
  # @option :fog_storage_options [Hash] Other options to pass to `Fog::Storage`
19
+ # @option :fog_public [Boolean] Whether the file is publicly accessible
20
+ #
21
+ # Alternatively you can use an environment variable to configure each option (except `fog_storage_options`).
22
+ # The environment variables have the same name but capitalized, e.g. `FOG_PATH_STYLE`.
19
23
  def initialize(opts = {})
20
24
  @aws_access_key_id = opts[:aws_access_key_id] || ENV['AWS_ACCESS_KEY_ID']
21
25
  @aws_secret_access_key = opts[:aws_secret_access_key] || ENV['AWS_SECRET_ACCESS_KEY']
@@ -24,6 +28,8 @@ module SitemapGenerator
24
28
  @fog_region = opts[:fog_region] || ENV['FOG_REGION']
25
29
  @fog_path_style = opts[:fog_path_style] || ENV['FOG_PATH_STYLE']
26
30
  @fog_storage_options = opts[:fog_storage_options] || {}
31
+ fog_public = opts[:fog_public].nil? ? ENV['FOG_PUBLIC'] : opts[:fog_public]
32
+ @fog_public = SitemapGenerator::Utilities.falsy?(fog_public) ? false : true
27
33
  end
28
34
 
29
35
  # Call with a SitemapLocation and string data
@@ -47,7 +53,7 @@ module SitemapGenerator
47
53
  directory.files.create(
48
54
  :key => location.path_in_public,
49
55
  :body => File.open(location.path),
50
- :public => true
56
+ :public => @fog_public
51
57
  )
52
58
  end
53
59
  end
@@ -1,5 +1,5 @@
1
1
  if !defined?(::CarrierWave::Uploader::Base)
2
- raise "Error: `CarrierWave::Uploader::Base` is not defined.\n\n"\
2
+ raise LoadError, "Error: `CarrierWave::Uploader::Base` is not defined.\n\n"\
3
3
  "Please `require 'carrierwave'` - or another library that defines this class."
4
4
  end
5
5
 
@@ -6,7 +6,7 @@ module SitemapGenerator
6
6
 
7
7
  def initialize(path, options={})
8
8
  if index = path.is_a?(SitemapGenerator::Builder::SitemapIndexFile) && path
9
- options = SitemapGenerator::Utilities.reverse_merge(options, :host => index.location.host, :lastmod => Time.now, :changefreq => 'always', :priority => 1.0)
9
+ options = SitemapGenerator::Utilities.reverse_merge(options, :host => index.location.host, :lastmod => Time.now, :priority => 1.0)
10
10
  path = index.location.path_in_public
11
11
  super(path, options)
12
12
  else
@@ -25,4 +25,4 @@ module SitemapGenerator
25
25
  end
26
26
  end
27
27
  end
28
- end
28
+ end
@@ -32,12 +32,29 @@ module SitemapGenerator
32
32
  def initialize(path, options={})
33
33
  options = SitemapGenerator::Utilities.symbolize_keys(options)
34
34
  if sitemap = path.is_a?(SitemapGenerator::Builder::SitemapFile) && path
35
- SitemapGenerator::Utilities.reverse_merge!(options, :host => sitemap.location.host, :lastmod => sitemap.lastmod)
35
+ SitemapGenerator::Utilities.reverse_merge!(
36
+ options,
37
+ :host => sitemap.location.host,
38
+ :lastmod => sitemap.lastmod
39
+ )
36
40
  path = sitemap.location.path_in_public
37
41
  end
38
42
 
39
- SitemapGenerator::Utilities.assert_valid_keys(options, :priority, :changefreq, :lastmod, :expires, :host, :images, :video, :news, :videos, :mobile, :alternate, :alternates, :pagemap)
40
- SitemapGenerator::Utilities.reverse_merge!(options, :priority => 0.5, :changefreq => 'weekly', :lastmod => Time.now, :images => [], :news => {}, :videos => [], :mobile => false, :alternates => [])
43
+ SitemapGenerator::Utilities.assert_valid_keys(
44
+ options,
45
+ :priority, :changefreq, :lastmod, :expires, :host, :images, :video, :news, :videos, :mobile, :alternate, :alternates, :pagemap
46
+ )
47
+ SitemapGenerator::Utilities.reverse_merge!(
48
+ options,
49
+ :priority => 0.5,
50
+ :changefreq => 'weekly',
51
+ :lastmod => Time.now,
52
+ :images => [],
53
+ :news => {},
54
+ :videos => [],
55
+ :mobile => false,
56
+ :alternates => []
57
+ )
41
58
  raise "Cannot generate a url without a host" unless SitemapGenerator::Utilities.present?(options[:host])
42
59
 
43
60
  if video = options.delete(:video)
@@ -125,8 +125,7 @@ module SitemapGenerator
125
125
  :include_index => false,
126
126
  :filename => :sitemap,
127
127
  :search_engines => {
128
- :google => "http://www.google.com/webmasters/tools/ping?sitemap=%s",
129
- :bing => "http://www.bing.com/ping?sitemap=%s"
128
+ :google => "http://www.google.com/webmasters/tools/ping?sitemap=%s"
130
129
  },
131
130
  :create_index => :auto,
132
131
  :compress => true,
@@ -438,7 +437,7 @@ module SitemapGenerator
438
437
  # in an instance variable.
439
438
  def add_default_links
440
439
  @added_default_links = true
441
- link_options = { :lastmod => Time.now, :changefreq => 'always', :priority => 1.0 }
440
+ link_options = { :lastmod => Time.now, :priority => 1.0 }
442
441
  if include_root?
443
442
  add('/', link_options)
444
443
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sitemap_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.2
4
+ version: 6.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karl Varga
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-03 00:00:00.000000000 Z
11
+ date: 2022-08-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: builder
@@ -25,7 +25,7 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: fog-aws
28
+ name: aws-sdk-core
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: nokogiri
42
+ name: aws-sdk-s3
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rspec
56
+ name: fog-aws
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,7 +67,21 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: webmock
70
+ name: google-cloud-storage
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: nokogiri
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - ">="
@@ -95,7 +109,7 @@ dependencies:
95
109
  - !ruby/object:Gem::Version
96
110
  version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
- name: aws-sdk-core
112
+ name: rspec_junit_formatter
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - ">="
@@ -109,7 +123,7 @@ dependencies:
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
111
125
  - !ruby/object:Gem::Dependency
112
- name: aws-sdk-s3
126
+ name: rspec
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - ">="
@@ -123,7 +137,7 @@ dependencies:
123
137
  - !ruby/object:Gem::Version
124
138
  version: '0'
125
139
  - !ruby/object:Gem::Dependency
126
- name: google-cloud-storage
140
+ name: webmock
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
143
  - - ">="
@@ -180,11 +194,11 @@ files:
180
194
  - rails/install.rb
181
195
  - rails/uninstall.rb
182
196
  - templates/sitemap.rb
183
- homepage: http://github.com/kjvarga/sitemap_generator
197
+ homepage: https://github.com/kjvarga/sitemap_generator
184
198
  licenses:
185
199
  - MIT
186
200
  metadata: {}
187
- post_install_message:
201
+ post_install_message:
188
202
  rdoc_options: []
189
203
  require_paths:
190
204
  - lib
@@ -199,8 +213,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
199
213
  - !ruby/object:Gem::Version
200
214
  version: '0'
201
215
  requirements: []
202
- rubygems_version: 3.1.2
203
- signing_key:
216
+ rubygems_version: 3.3.3
217
+ signing_key:
204
218
  specification_version: 4
205
219
  summary: Easily generate XML Sitemaps
206
220
  test_files: []