sc-big_sitemap 0.8.3.4
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.
- data/Gemfile +4 -0
- data/Gemfile.lock +23 -0
- data/History.txt +88 -0
- data/LICENSE +22 -0
- data/README.rdoc +179 -0
- data/Rakefile +69 -0
- data/VERSION +1 -0
- data/lib/big_sitemap.rb +367 -0
- data/lib/big_sitemap/builder.rb +184 -0
- data/sc-big_sitemap.gemspec +22 -0
- data/test/big_sitemap_test.rb +485 -0
- data/test/fixtures/test_model.rb +48 -0
- data/test/test_helper.rb +117 -0
- metadata +114 -0
@@ -0,0 +1,48 @@
|
|
1
|
+
class TestModel
|
2
|
+
def to_param
|
3
|
+
id #|| object_id
|
4
|
+
end
|
5
|
+
|
6
|
+
def id
|
7
|
+
@id ||= TestModel.current_id += 1
|
8
|
+
end
|
9
|
+
|
10
|
+
def change_frequency
|
11
|
+
'monthly'
|
12
|
+
end
|
13
|
+
|
14
|
+
def priority
|
15
|
+
0.8
|
16
|
+
end
|
17
|
+
|
18
|
+
def updated_at
|
19
|
+
Time.at(1000000000)
|
20
|
+
end
|
21
|
+
|
22
|
+
class << self
|
23
|
+
def table_name
|
24
|
+
'test_models'
|
25
|
+
end
|
26
|
+
|
27
|
+
def count_for_sitemap
|
28
|
+
self.find_for_sitemap.size
|
29
|
+
end
|
30
|
+
|
31
|
+
def num_items
|
32
|
+
10
|
33
|
+
end
|
34
|
+
|
35
|
+
def find_for_sitemap(options={})
|
36
|
+
instances = []
|
37
|
+
num_times = options.delete(:limit) || self.num_items
|
38
|
+
num_times.times { instances.push(self.new) }
|
39
|
+
instances
|
40
|
+
end
|
41
|
+
|
42
|
+
attr_writer :current_id
|
43
|
+
|
44
|
+
def current_id
|
45
|
+
@current_id ||= 0
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
4
|
+
require 'test/unit'
|
5
|
+
require 'shoulda'
|
6
|
+
require 'mocha'
|
7
|
+
require 'test/fixtures/test_model'
|
8
|
+
|
9
|
+
require 'big_sitemap'
|
10
|
+
|
11
|
+
class Test::Unit::TestCase
|
12
|
+
|
13
|
+
def delete_tmp_files
|
14
|
+
FileUtils.rm_rf(sitemaps_dir)
|
15
|
+
end
|
16
|
+
|
17
|
+
def create_files(*files)
|
18
|
+
files.each do |filename|
|
19
|
+
File.open(filename, 'w')
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def create_sitemap(options={})
|
24
|
+
@sitemap = BigSitemap.new({
|
25
|
+
:base_url => 'http://example.com',
|
26
|
+
:document_root => tmp_dir,
|
27
|
+
:ping_google => false
|
28
|
+
}.update(options))
|
29
|
+
end
|
30
|
+
|
31
|
+
def generate_sitemap_files(options={})
|
32
|
+
create_sitemap(options)
|
33
|
+
add_model
|
34
|
+
@sitemap.generate
|
35
|
+
end
|
36
|
+
|
37
|
+
def generate_one_sitemap_model_file(options={})
|
38
|
+
change_frequency = options.delete(:change_frequency)
|
39
|
+
priority = options.delete(:priority)
|
40
|
+
create_sitemap(options.merge(:max_per_sitemap => default_num_items, :batch_size => default_num_items))
|
41
|
+
add_model(:change_frequency => change_frequency, :priority => priority)
|
42
|
+
@sitemap.generate
|
43
|
+
end
|
44
|
+
|
45
|
+
def generate_two_model_sitemap_files(options={})
|
46
|
+
change_frequency = options.delete(:change_frequency)
|
47
|
+
priority = options.delete(:priority)
|
48
|
+
create_sitemap(options.merge(:max_per_sitemap => 2, :batch_size => 1))
|
49
|
+
add_model(:num_items => 4, :change_frequency => change_frequency, :priority => priority)
|
50
|
+
@sitemap.generate
|
51
|
+
end
|
52
|
+
|
53
|
+
def add_model(options={})
|
54
|
+
num_items = options.delete(:num_items) || default_num_items
|
55
|
+
TestModel.stubs(:count_for_sitemap).returns(num_items)
|
56
|
+
@sitemap.add(TestModel, options)
|
57
|
+
end
|
58
|
+
|
59
|
+
def default_num_items
|
60
|
+
10
|
61
|
+
end
|
62
|
+
|
63
|
+
def sitemaps_index_file
|
64
|
+
"#{unzipped_sitemaps_index_file}.gz"
|
65
|
+
end
|
66
|
+
|
67
|
+
def unzipped_sitemaps_index_file
|
68
|
+
"#{sitemaps_dir}/sitemap_index.xml"
|
69
|
+
end
|
70
|
+
|
71
|
+
def unzipped_first_sitemaps_model_file
|
72
|
+
"#{sitemaps_dir}/sitemap_test_models.xml"
|
73
|
+
end
|
74
|
+
|
75
|
+
def first_sitemaps_model_file
|
76
|
+
"#{sitemaps_dir}/sitemap_test_models.xml.gz"
|
77
|
+
end
|
78
|
+
|
79
|
+
def static_sitemaps_file
|
80
|
+
"#{sitemaps_dir}/sitemap_static.xml.gz"
|
81
|
+
end
|
82
|
+
|
83
|
+
def second_sitemaps_model_file
|
84
|
+
"#{sitemaps_dir}/sitemap_test_models_1.xml.gz"
|
85
|
+
end
|
86
|
+
|
87
|
+
def third_sitemaps_model_file
|
88
|
+
"#{sitemaps_dir}/sitemap_test_models_2.xml.gz"
|
89
|
+
end
|
90
|
+
|
91
|
+
def sitemaps_dir
|
92
|
+
"#{tmp_dir}/sitemaps"
|
93
|
+
end
|
94
|
+
|
95
|
+
def tmp_dir
|
96
|
+
'/tmp'
|
97
|
+
end
|
98
|
+
|
99
|
+
def ns
|
100
|
+
{'s' => 'http://www.sitemaps.org/schemas/sitemap/0.9',
|
101
|
+
'mobile' => 'http://www.google.com/schemas/sitemap-mobile/1.0'}
|
102
|
+
end
|
103
|
+
|
104
|
+
def elements(filename, el, nsp = 's')
|
105
|
+
file_class = filename.include?('.gz') ? Zlib::GzipReader : File
|
106
|
+
data = Nokogiri::XML.parse(file_class.open(filename).read)
|
107
|
+
data.search("//#{nsp}:#{el}", ns)
|
108
|
+
end
|
109
|
+
|
110
|
+
def mobile_elements(filename, el)
|
111
|
+
elements(filename, el, nsp = 'mobile')
|
112
|
+
end
|
113
|
+
|
114
|
+
def num_elements(filename, el)
|
115
|
+
elements(filename, el).size
|
116
|
+
end
|
117
|
+
end
|
metadata
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sc-big_sitemap
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.8.3.4
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Alex Rabarts
|
9
|
+
- Tobias Bielohlawek
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
|
14
|
+
date: 2011-09-05 00:00:00 Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: bundler
|
18
|
+
prerelease: false
|
19
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: "0"
|
25
|
+
type: :development
|
26
|
+
version_requirements: *id001
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: shoulda
|
29
|
+
prerelease: false
|
30
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
31
|
+
none: false
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: "0"
|
36
|
+
type: :development
|
37
|
+
version_requirements: *id002
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: mocha
|
40
|
+
prerelease: false
|
41
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: "0"
|
47
|
+
type: :development
|
48
|
+
version_requirements: *id003
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: nokogiri
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: "0"
|
58
|
+
type: :development
|
59
|
+
version_requirements: *id004
|
60
|
+
description: BigSitemap is a Sitemapgenerator suitable for applications with greater than 50,000 URLs. It splits large Sitemaps into multiple files, gzips the files to minimize bandwidth usage, batches database queries to minimize memory usage, supports increment updates, can be set up with just a few lines of code and is compatible with just about any framework.
|
61
|
+
email:
|
62
|
+
- alexrabarts@gmail.com
|
63
|
+
- tobi@soundcloud.com
|
64
|
+
executables: []
|
65
|
+
|
66
|
+
extensions: []
|
67
|
+
|
68
|
+
extra_rdoc_files: []
|
69
|
+
|
70
|
+
files:
|
71
|
+
- Gemfile
|
72
|
+
- Gemfile.lock
|
73
|
+
- History.txt
|
74
|
+
- LICENSE
|
75
|
+
- README.rdoc
|
76
|
+
- Rakefile
|
77
|
+
- VERSION
|
78
|
+
- lib/big_sitemap.rb
|
79
|
+
- lib/big_sitemap/builder.rb
|
80
|
+
- sc-big_sitemap.gemspec
|
81
|
+
- test/big_sitemap_test.rb
|
82
|
+
- test/fixtures/test_model.rb
|
83
|
+
- test/test_helper.rb
|
84
|
+
homepage: http://github.com/alexrabarts/big_sitemap
|
85
|
+
licenses: []
|
86
|
+
|
87
|
+
post_install_message:
|
88
|
+
rdoc_options: []
|
89
|
+
|
90
|
+
require_paths:
|
91
|
+
- lib
|
92
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
93
|
+
none: false
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: "0"
|
98
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: "0"
|
104
|
+
requirements: []
|
105
|
+
|
106
|
+
rubyforge_project:
|
107
|
+
rubygems_version: 1.8.4
|
108
|
+
signing_key:
|
109
|
+
specification_version: 3
|
110
|
+
summary: A Sitemap generator specifically designed for large sites (although it works equally well with small sites)
|
111
|
+
test_files:
|
112
|
+
- test/big_sitemap_test.rb
|
113
|
+
- test/fixtures/test_model.rb
|
114
|
+
- test/test_helper.rb
|