update with support for Spree 0.70.x release

This commit is contained in:
Josh Nussbaum 2011-10-23 20:18:40 -04:00
parent bd4f963bf1
commit 9cf59f5a42
13 changed files with 380 additions and 76 deletions

1
.gitignore vendored
View File

@ -5,3 +5,4 @@
tmp tmp
*.swp *.swp
spec/test_app spec/test_app
pkg

25
Gemfile Normal file
View File

@ -0,0 +1,25 @@
source 'http://rubygems.org'
gem 'sqlite3'
group :test do
gem 'autotest'
gem 'rspec-rails', '= 2.6.1'
gem 'factory_girl'
gem 'faker'
end
group :cucumber do
gem 'cucumber-rails', '1.0.0'
gem 'database_cleaner', '= 0.6.7'
gem 'nokogiri'
gem 'capybara', '1.0.1'
end
if RUBY_VERSION < "1.9"
gem "ruby-debug"
else
gem "ruby-debug19"
end
gemspec

243
Gemfile.lock Normal file
View File

@ -0,0 +1,243 @@
PATH
remote: .
specs:
spree_logins (0.70.0)
spree_auth (>= 0.70.0)
spree_core (>= 0.70.0)
GEM
remote: http://rubygems.org/
specs:
ZenTest (4.6.2)
actionmailer (3.1.1)
actionpack (= 3.1.1)
mail (~> 2.3.0)
actionpack (3.1.1)
activemodel (= 3.1.1)
activesupport (= 3.1.1)
builder (~> 3.0.0)
erubis (~> 2.7.0)
i18n (~> 0.6)
rack (~> 1.3.2)
rack-cache (~> 1.1)
rack-mount (~> 0.8.2)
rack-test (~> 0.6.1)
sprockets (~> 2.0.2)
activemerchant (1.17.0)
activesupport (>= 2.3.11)
braintree (>= 2.0.0)
builder (>= 2.0.0)
json (>= 1.5.1)
activemodel (3.1.1)
activesupport (= 3.1.1)
builder (~> 3.0.0)
i18n (~> 0.6)
activerecord (3.1.1)
activemodel (= 3.1.1)
activesupport (= 3.1.1)
arel (~> 2.2.1)
tzinfo (~> 0.3.29)
activeresource (3.1.1)
activemodel (= 3.1.1)
activesupport (= 3.1.1)
activesupport (3.1.1)
multi_json (~> 1.0)
acts_as_list (0.1.4)
archive-tar-minitar (0.5.2)
arel (2.2.1)
autotest (4.4.6)
ZenTest (>= 4.4.1)
bcrypt-ruby (3.0.1)
braintree (2.12.0)
builder (>= 2.0.0)
builder (3.0.0)
cancan (1.6.5)
capybara (1.0.1)
mime-types (>= 1.16)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
rack-test (>= 0.5.4)
selenium-webdriver (~> 2.0)
xpath (~> 0.1.4)
childprocess (0.2.2)
ffi (~> 1.0.6)
cocaine (0.2.0)
columnize (0.3.4)
cucumber (1.0.6)
builder (>= 2.1.2)
diff-lcs (>= 1.1.2)
gherkin (~> 2.4.18)
json (>= 1.4.6)
term-ansicolor (>= 1.0.6)
cucumber-rails (1.0.0)
capybara (>= 1.0.0)
cucumber (~> 1.0.0)
nokogiri (>= 1.4.4)
rack-test (>= 0.5.7)
database_cleaner (0.6.7)
deface (0.7.0)
nokogiri (~> 1.5.0)
rails (>= 3.0.9)
devise (1.4.7)
bcrypt-ruby (~> 3.0)
orm_adapter (~> 0.0.3)
warden (~> 1.0.3)
diff-lcs (1.1.3)
erubis (2.7.0)
factory_girl (2.1.2)
activesupport
faker (1.0.0)
i18n (~> 0.4)
ffi (1.0.9)
gherkin (2.4.21)
json (>= 1.4.6)
highline (1.5.1)
hike (1.2.1)
i18n (0.6.0)
jquery-rails (1.0.14)
railties (~> 3.0)
thor (~> 0.14)
json (1.6.1)
json_pure (1.6.1)
kaminari (0.12.4)
rails (>= 3.0.0)
linecache19 (0.5.12)
ruby_core_source (>= 0.1.4)
mail (2.3.0)
i18n (>= 0.4.0)
mime-types (~> 1.16)
treetop (~> 1.4.8)
meta_search (1.1.1)
actionpack (~> 3.1.0)
activerecord (~> 3.1.0)
activesupport (~> 3.1.0)
polyamorous (~> 0.5.0)
mime-types (1.16)
multi_json (1.0.3)
nested_set (1.6.8)
activerecord (>= 3.0.0)
railties (>= 3.0.0)
nokogiri (1.5.0)
orm_adapter (0.0.5)
paperclip (2.4.1)
activerecord (>= 2.3.0)
activesupport (>= 2.3.2)
cocaine (>= 0.0.2)
mime-types
polyamorous (0.5.0)
activerecord (~> 3.0)
polyglot (0.3.2)
rack (1.3.4)
rack-cache (1.1)
rack (>= 0.4)
rack-mount (0.8.3)
rack (>= 1.0.0)
rack-ssl (1.3.2)
rack
rack-test (0.6.1)
rack (>= 1.0)
rails (3.1.1)
actionmailer (= 3.1.1)
actionpack (= 3.1.1)
activerecord (= 3.1.1)
activeresource (= 3.1.1)
activesupport (= 3.1.1)
bundler (~> 1.0)
railties (= 3.1.1)
railties (3.1.1)
actionpack (= 3.1.1)
activesupport (= 3.1.1)
rack-ssl (~> 1.3.2)
rake (>= 0.8.7)
rdoc (~> 3.4)
thor (~> 0.14.6)
rake (0.9.2)
rd_find_by_param (0.1.1)
activerecord (~> 3.0)
activesupport (~> 3.0)
rd_resource_controller (1.0.1)
rdoc (3.10)
json (~> 1.4)
rspec (2.6.0)
rspec-core (~> 2.6.0)
rspec-expectations (~> 2.6.0)
rspec-mocks (~> 2.6.0)
rspec-core (2.6.4)
rspec-expectations (2.6.0)
diff-lcs (~> 1.1.2)
rspec-mocks (2.6.0)
rspec-rails (2.6.1)
actionpack (~> 3.0)
activesupport (~> 3.0)
railties (~> 3.0)
rspec (~> 2.6.0)
ruby-debug-base19 (0.11.25)
columnize (>= 0.3.1)
linecache19 (>= 0.5.11)
ruby_core_source (>= 0.1.4)
ruby-debug19 (0.11.6)
columnize (>= 0.3.1)
linecache19 (>= 0.5.11)
ruby-debug-base19 (>= 0.11.19)
ruby_core_source (0.1.5)
archive-tar-minitar (>= 0.5.2)
rubyzip (0.9.4)
selenium-webdriver (2.8.0)
childprocess (>= 0.2.1)
ffi (>= 1.0.7)
json_pure
rubyzip
spree_auth (0.70.0)
cancan (= 1.6.5)
devise (= 1.4.7)
spree_core (= 0.70.0)
spree_core (0.70.0)
activemerchant (= 1.17.0)
acts_as_list (= 0.1.4)
deface (>= 0.6.1)
faker (= 1.0.0)
highline (= 1.5.1)
jquery-rails (>= 1.0.14)
kaminari (>= 0.12.4)
meta_search (= 1.1.1)
nested_set (= 1.6.8)
paperclip (= 2.4.1)
rails (= 3.1.1)
rd_find_by_param (= 0.1.1)
rd_resource_controller
state_machine (= 1.0.1)
stringex (= 1.0.3)
sprockets (2.0.2)
hike (~> 1.2)
rack (~> 1.0)
tilt (!= 1.3.0, ~> 1.1)
sqlite3 (1.3.4)
state_machine (1.0.1)
stringex (1.0.3)
term-ansicolor (1.0.6)
thor (0.14.6)
tilt (1.3.3)
treetop (1.4.10)
polyglot
polyglot (>= 0.3.1)
tzinfo (0.3.30)
warden (1.0.6)
rack (>= 1.0)
xpath (0.1.4)
nokogiri (~> 1.3)
PLATFORMS
ruby
DEPENDENCIES
autotest
capybara (= 1.0.1)
cucumber-rails (= 1.0.0)
database_cleaner (= 0.6.7)
factory_girl
faker
nokogiri
rspec-rails (= 2.6.1)
ruby-debug19
spree_logins!
sqlite3

19
LICENSE
View File

@ -1,14 +1,17 @@
Redistribution and use in source and binary forms, with or without modification, Copyright (c) 2011 Joshua Nussbaum
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met: are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, * Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer. this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, * Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution. and/or other materials provided with the distribution.
* Neither the name of the Rails Dog LLC nor the names of its * Neither the name Spree nor the names of its contributors may be used to
contributors may be used to endorse or promote products derived from this endorse or promote products derived from this software without specific
software without specific prior written permission. prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
@ -20,4 +23,4 @@ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,7 +1,7 @@
Spree Sitemap Generator Spree Sitemap Generator
===================== =====================
Spree sitemap generator is a sitemap generator based on the sitemap_generator gem [http://github.com/kjvarga/sitemap_generator]. It adheres to the Sitemap 0.9 protocol specification. Spree sitemap generator is a sitemap generator based on the sitemap_generator gem http://github.com/kjvarga/sitemap_generator. It adheres to the Sitemap 0.9 protocol specification.
Installation Installation
======= =======
@ -14,23 +14,49 @@ Installation
`bundle install` `bundle install`
3) add sitemap to your `.gitignore` 3) run the installer, it will create a `config/sitemap.rb` file with some sane defaults
`echo "public/sitemap*" >> .gitignore` `rails generate spree_sitemap_generator:install`
4) BOOM you're done! 4) add sitemap to your `.gitignore`
`echo "public/sitemap*" >> .gitignore`
5) setup a daily job to regenrate your sitemap via the `rake sitemap:refresh` task. If you use the Whenever gem, add this to your `config/schedule.rb`
```
every 1.day, :at => '5:00 am' do
rake "-s sitemap:refresh"
end
```
6) add the following line to your `robots.txt` with your correct domain name
`echo "Sitemap: http://www.example.com/sitemap_index.xml.gz" >> public/robots.txt`
7) BOOM you're done!
More Configuration Options
==========================
Check out the README for the sitemap_generator gem at:
http://github.com/kjvarga/sitemap_generator
Features Features
===== =====
- Notifies search engine of new sitemaps (Google, Yahoo, Ask, Bing) - Notifies search engine of new sitemaps (Google, Yahoo, Ask, Bing)
- Supports large huge product catalogs
- Adheres to 0.9 Sitemap protocol specification
- Compresses sitemaps with gzip - Compresses sitemaps with gzip
- Provides basic sitemap of a Spree site - Provides basic sitemap of a Spree site (products, taxons, login page, signup page)
- Allows you to easily add additional sitemaps for pages you add to your site - Easily add additional sitemaps for pages you add to your spree site
- Supports Amazon S3 and other hosting services
- Thin wrapper over battle tested sitemap generator
Special Thanks Special Thanks
===== =====
- The creators of the rails sitemap gem - The creators of the sitemap_generator gem
- To all who have provided pull requests, its is much appreciated - To all who have provided pull requests, its is much appreciated
Copyright (c) 2011 Joshua Nussbaum, released under the New BSD License Copyright (c) 2011 Joshua Nussbaum, released under the New BSD License

View File

@ -1,12 +1,19 @@
require 'rubygems'
require 'rake' require 'rake'
require 'rake/testtask' require 'rake/testtask'
require 'rake/packagetask' require 'rake/packagetask'
require 'rake/gempackagetask' require 'rubygems/package_task'
require 'rspec/core/rake_task'
require 'cucumber/rake/task'
require 'spree_core/testing_support/common_rake'
RSpec::Core::RakeTask.new
Cucumber::Rake::Task.new
task :default => [:spec, :cucumber ]
spec = eval(File.read('spree_sitemap_generator.gemspec')) spec = eval(File.read('spree_sitemap_generator.gemspec'))
Rake::GemPackageTask.new(spec) do |p| Gem::PackageTask.new(spec) do |p|
p.gem_spec = spec p.gem_spec = spec
end end
@ -17,13 +24,8 @@ task :release => :package do
Rake::Task['gem:push'].invoke Rake::Task['gem:push'].invoke
end end
desc "Default Task" desc "Generates a dummy app for testing"
task :default => [ :spec ] task :test_app do
ENV['LIB_NAME'] = 'spree_logins'
require 'rspec/core/rake_task' Rake::Task['common:test_app'].invoke
RSpec::Core::RakeTask.new end
# require 'cucumber/rake/task'
# Cucumber::Rake::Task.new do |t|
# t.cucumber_opts = %w{--format pretty}
# end

View File

@ -1,3 +1,5 @@
SitemapGenerator::Sitemap.default_host = "http://#{Spree::Config[:site_url]}"
SitemapGenerator::Sitemap.add_links do |sitemap| SitemapGenerator::Sitemap.add_links do |sitemap|
# Put links creation logic here. # Put links creation logic here.
# #

View File

@ -1,37 +1,3 @@
require 'spree_core' require 'spree_core'
require 'spree_sitemap_generator_hooks'
require 'sitemap_generator' require 'sitemap_generator'
require 'spree_sitemap_generator/engine'
module SpreeSitemapGenerator
class Engine < Rails::Engine
config.autoload_paths += %W(#{config.root}/lib)
def self.activate
ActiveRecord::Relation.class_eval do
def last_updated
last_update = order('updated_at DESC').first
last_update.try(:updated_at)
end
end
ActiveRecord::Base.class_eval do
def self.last_updated
scoped.last_updated
end
end
SitemapGenerator::Sitemap.default_host = "http://#{Spree::Config[:site_url]}"
require 'spree_sitemap_generator/spree_defaults'
SitemapGenerator::Interpreter.send :include, SpreeSitemapGenerator::SpreeDefaults
Dir.glob(File.join(File.dirname(__FILE__), "../app/**/*_decorator*.rb")) do |c|
Rails.env.production? ? require(c) : load(c)
end
end
config.to_prepare &method(:activate).to_proc
end
end

View File

@ -0,0 +1,40 @@
module SpreeSitemapGenerator
class Engine < Rails::Engine
engine_name 'spree_sitemap_generator'
config.autoload_paths += %W(#{config.root}/lib)
# use rspec for tests
config.generators do |g|
g.test_framework :rspec
end
def self.activate
ActiveRecord::Relation.class_eval do
def last_updated
last_update = order('updated_at DESC').first
last_update.try(:updated_at)
end
end
ActiveRecord::Base.class_eval do
def self.last_updated
scoped.last_updated
end
end
require 'spree_sitemap_generator/spree_defaults'
SitemapGenerator::Interpreter.send :include, SpreeSitemapGenerator::SpreeDefaults
Dir.glob(File.join(File.dirname(__FILE__), "../../app/**/*_decorator*.rb")) do |c|
Rails.application.config.cache_classes ? require(c) : load(c)
end
Dir.glob(File.join(File.dirname(__FILE__), "../../app/overrides/*.rb")) do |c|
Rails.application.config.cache_classes ? require(c) : load(c)
end
end
config.to_prepare &method(:activate).to_proc
end
end

View File

@ -1,6 +1,6 @@
module SpreeSitemapGenerator::SpreeDefaults module SpreeSitemapGenerator::SpreeDefaults
def default_url_options def default_url_options
{:host => "http://" + Spree::Config[:site_url]} {:host => SitemapGenerator::Sitemap.default_host}
end end
include ::Rails.application.routes.url_helpers include ::Rails.application.routes.url_helpers
@ -17,7 +17,7 @@ module SpreeSitemapGenerator::SpreeDefaults
end end
def add_password_reset(options={}) def add_password_reset(options={})
add(new_password_reset_path, options) add(new_user_password_path, options)
end end
def add_products(options={}) def add_products(options={})

View File

@ -1,3 +0,0 @@
class SpreeSitemapGeneratorHooks < Spree::ThemeSupport::HookListener
# custom hooks go here
end

View File

@ -1,13 +1,13 @@
Gem::Specification.new do |s| Gem::Specification.new do |s|
s.platform = Gem::Platform::RUBY s.platform = Gem::Platform::RUBY
s.name = 'spree_sitemap_generator' s.name = 'spree_sitemap_generator'
s.version = '3.0.2' s.version = '3.0.3'
s.summary = 'Add gem summary here' s.summary = 'Provides a sitemap file for Spree'
#s.description = 'Add (optional) gem description here' #s.description = 'Add (optional) gem description here'
s.required_ruby_version = '>= 1.8.7' s.required_ruby_version = '>= 1.8.7'
# s.author = 'David Heinemeier Hansson' s.author = 'Joshua Nussbaum'
# s.email = 'david@loudthinking.com' s.email = 'joshnuss@gmail.com'
# s.homepage = 'http://www.rubyonrails.org' # s.homepage = 'http://www.rubyonrails.org'
# s.rubyforge_project = 'actionmailer' # s.rubyforge_project = 'actionmailer'
@ -15,7 +15,6 @@ Gem::Specification.new do |s|
s.require_path = 'lib' s.require_path = 'lib'
s.requirements << 'none' s.requirements << 'none'
s.add_dependency('spree_core', '>= 0.70.0')
s.add_dependency('spree_core', '>= 0.30.1') s.add_dependency('sitemap_generator', '>= 2.0.1')
s.add_dependency('sitemap_generator', '= 2.0.1')
end end