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 +4 -4
- data/CHANGES.md +20 -0
- data/README.md +121 -97
- data/VERSION +1 -1
- data/lib/sitemap_generator/adapters/aws_sdk_adapter.rb +34 -31
- data/lib/sitemap_generator/adapters/fog_adapter.rb +1 -1
- data/lib/sitemap_generator/adapters/google_storage_adapter.rb +6 -4
- data/lib/sitemap_generator/adapters/s3_adapter.rb +8 -2
- data/lib/sitemap_generator/adapters/wave_adapter.rb +1 -1
- data/lib/sitemap_generator/builder/sitemap_index_url.rb +2 -2
- data/lib/sitemap_generator/builder/sitemap_url.rb +20 -3
- data/lib/sitemap_generator/link_set.rb +2 -3
- metadata +28 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd65e97e0a574eb1d124988e20c38312968548bf8ef8d381e648c54d6766d049
|
4
|
+
data.tar.gz: b9cbf014555cbdfb293c6e780a3e9ab4349db02f8fddbcddc28ab8c743f24657
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
- [
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
- [
|
106
|
-
|
107
|
-
|
108
|
-
- [
|
109
|
-
|
110
|
-
|
111
|
-
- [
|
112
|
-
|
113
|
-
|
114
|
-
- [
|
115
|
-
|
116
|
-
|
117
|
-
- [
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
- [
|
122
|
-
|
123
|
-
|
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
|
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::
|
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
|
-
|
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
|
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
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
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`
|
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.
|
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.
|
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>
|
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
|
-
|
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
|
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
|
+
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
|
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]
|
21
|
-
# @param [Hash]
|
22
|
-
|
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
|
-
@
|
25
|
-
@
|
26
|
-
@
|
27
|
-
|
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:
|
36
|
-
cache_control:
|
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
|
44
|
-
@
|
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
|
48
|
-
|
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?(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`
|
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(
|
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:
|
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 =>
|
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, :
|
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!(
|
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(
|
40
|
-
|
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, :
|
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.
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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.
|
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: []
|