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.
@@ -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
@@ -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