power_reviews 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ pkg/*
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 [name of plugin creator]
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README ADDED
@@ -0,0 +1,13 @@
1
+ PowerReviews
2
+ ============
3
+
4
+ Introduction goes here.
5
+
6
+
7
+ Example
8
+ =======
9
+
10
+ Example goes here.
11
+
12
+
13
+ Copyright (c) 2009 [name of plugin creator], released under the MIT license
data/Rakefile ADDED
@@ -0,0 +1,72 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+ # require 'rake/gempackagetask'
5
+
6
+ begin
7
+ require 'jeweler'
8
+ Jeweler::Tasks.new do |gemspec|
9
+ gemspec.name = "power_reviews"
10
+ gemspec.summary = "Helps integrate Power Reviews into a rails site"
11
+ gemspec.description = "Tools and library for integrating Power Reviews into a rails website."
12
+ gemspec.email = "beaucollins@gmail.com"
13
+ gemspec.homepage = "http://github.com/beaucollins/power_reviews"
14
+ gemspec.authors = ["Beau Collins"]
15
+ gemspec.add_runtime_dependency 'javan-whenever'
16
+ gemspec.add_runtime_dependency 'fastercsv'
17
+ end
18
+ rescue LoadError
19
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
20
+ end
21
+
22
+
23
+ desc 'Default: run unit tests.'
24
+ task :default => :test
25
+
26
+ desc 'Test the power_reviews plugin.'
27
+ Rake::TestTask.new(:test) do |t|
28
+ t.libs << 'lib'
29
+ t.libs << 'test'
30
+ t.pattern = 'test/**/*_test.rb'
31
+ t.verbose = true
32
+ end
33
+
34
+ desc 'Generate documentation for the power_reviews plugin.'
35
+ Rake::RDocTask.new(:rdoc) do |rdoc|
36
+ rdoc.rdoc_dir = 'rdoc'
37
+ rdoc.title = 'PowerReviews'
38
+ rdoc.options << '--line-numbers' << '--inline-source'
39
+ rdoc.rdoc_files.include('README')
40
+ rdoc.rdoc_files.include('lib/**/*.rb')
41
+ end
42
+
43
+
44
+
45
+ # PKG_FILES = FileList[
46
+ # '[a-zA-Z]*',
47
+ # 'generators/**/*',
48
+ # 'lib/**/*',
49
+ # 'rails/**/*',
50
+ # 'test/**/*'
51
+ # ]
52
+ #
53
+ # spec = Gem::Specification.new do |s|
54
+ # s.name = 'power_reviews'
55
+ # s.version = "0.0.1"
56
+ # s.author = 'Beau Collins'
57
+ # s.email = 'beau_collins@k2sports.com'
58
+ # s.homepage = 'http://k2sports.com'
59
+ # s.platform = Gem::Platform::RUBY
60
+ # s.summary = s.description = "Helps integrate Power Reviews into a rails site"
61
+ # s.files = PKG_FILES.to_a
62
+ # s.require_path = "lib"
63
+ # s.has_rdoc = false
64
+ # s.extra_rdoc_files = ['README']
65
+ # s.add_runtime_dependency 'javan-whenever' # this is a github gem
66
+ # s.add_runtime_dependency 'fastercsv'
67
+ # end
68
+
69
+ # desc "Turn this plugin into a a gem."
70
+ # Rake::GemPackageTask.new(spec) do |pkg|
71
+ # pkg.gem_spec = spec
72
+ # end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.1
@@ -0,0 +1,16 @@
1
+ Description:
2
+ For integrating power reviews into your Rails site. Handles the downloading of PowerReviews
3
+ zip files via FTP and provides helpers to display power reviews data in your site.
4
+
5
+ Also provides an interface for creating a product data feed in CSV format to help making data
6
+ feeds easier.
7
+
8
+ Uses whenever [http://github.com/javan/whenever] to provide a cron schedule.
9
+
10
+ Example:
11
+ ./script/generate power_reviews
12
+
13
+ This will create:
14
+ config/power_reviews.yml
15
+ config/schedule.rb
16
+ config/initializer/power_reviews.rb
@@ -0,0 +1,15 @@
1
+ class PowerReviewsGenerator < Rails::Generator::Base
2
+ def manifest
3
+ record do |m|
4
+ m.directory "lib/tasks"
5
+ m.file 'lib/tasks/power_reviews_tasks.rake', 'lib/tasks/power_reviews_tasks.rake'
6
+
7
+ m.directory "config/initializers"
8
+
9
+ m.file 'config/power_reviews.yml', 'config/power_reviews.yml', :collision => :skip
10
+ m.file 'config/initializers/power_reviews.rb', 'config/initializers/power_reviews.rb', :collision => :skip
11
+ m.file 'config/schedule.rb', 'config/schedule.rb'
12
+
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,20 @@
1
+ # Unique for each merchant. Your merchant_group_id is located in the PowerReviews Dashboard > Merchant
2
+ # Group Properties section.
3
+
4
+ # PowerReviews::Config.merchant_group_id = 0
5
+
6
+ # ID representing your website (default value is "1"). If you have multiple websites and would like to
7
+ # integrate PowerReviews onto each site, we can set your account as a Master Merchant. This enables
8
+ # review sharing and consolidated management among your different websites. When using the “Master
9
+ # Merchant” configuration, you assign a different Site ID to each site that will have reviews. This ID
10
+ # can be your own internal ID for the site or an ID assigned by PowerReviews. If you are implementing
11
+ # a single merchant, please leave the default Site ID set to "1". The Site ID is configurable in the
12
+ # Dashboard in the Merchant Properties section.
13
+
14
+ # PowerReviews::Config.site_id = 1
15
+
16
+ # Supply the Power Reviews feed processor with items to produce. Feed is an
17
+ # instance of PowerReviews::Feed.
18
+ #
19
+ #
20
+ # PowerReviews::Feed.processor = lambda { |feed| }
@@ -0,0 +1,16 @@
1
+ # For retrieving the zip file from PowerReviews
2
+ #
3
+ #
4
+
5
+ development:
6
+ protocol: cp
7
+ zip: test/k2skis.zip
8
+ done: test/k2skis_done.txt
9
+
10
+ production:
11
+ protocol: ftp
12
+ zip: k2skis.zip
13
+ done: k2skis_done.txt
14
+ # host: partners.powerreviews.com
15
+ # username: user
16
+ # password: passy
@@ -0,0 +1,3 @@
1
+ every 1.day, :at => '4:30 am' do
2
+ rake 'power_reviews:sync'
3
+ end
@@ -0,0 +1,21 @@
1
+ # desc "Explaining what the task does"
2
+ # task :power_reviews do
3
+ # # Task goes here
4
+ # end
5
+ namespace :power_reviews do
6
+
7
+ desc "Generates the product data feed in csv format"
8
+ task :feed => :environment do
9
+ puts "Generating Power Reviews product feed"
10
+ PowerReviews::Feed.process
11
+ puts "Completed"
12
+ end
13
+
14
+ desc "Copy the zip file from the ftp and unpack it"
15
+ task :sync => :environment do
16
+ puts "Fetching power review data"
17
+ PowerReviews::Sync.execute
18
+ puts "Completed"
19
+ end
20
+
21
+ end
@@ -0,0 +1,21 @@
1
+ module PowerReviews
2
+ class Config
3
+
4
+ def self.merchant_group_id
5
+ @@merchant_group_id
6
+ end
7
+
8
+ def self.merchant_group_id=id
9
+ @@merchant_group_id = id
10
+ end
11
+
12
+ def self.site_id
13
+ @@site_id
14
+ end
15
+
16
+ def self.site_id=id
17
+ @@site_id = id
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,42 @@
1
+ module PowerReviews
2
+
3
+ # Collects the feed data then outputs to CSV file for delivery to the power review peeps
4
+ # Requires a proc that will find the data and populate
5
+ class Feed
6
+
7
+ @@processor = nil
8
+ attr_reader :items
9
+
10
+ def initialize
11
+ @items = Array.new
12
+ end
13
+
14
+ # add an item to the feed
15
+ def << item
16
+ raise ArgumentError unless item.is_a?(FeedItem)
17
+ @items << item
18
+ end
19
+
20
+ def self.processor=blk
21
+ @@processor = blk
22
+ end
23
+
24
+ def self.process
25
+ feed = self.new
26
+ @@processor[feed] unless @@processor.nil?
27
+ feed.to_csv
28
+ end
29
+
30
+ def to_csv
31
+ require 'fastercsv'
32
+ FasterCSV.open("#{RAILS_ROOT}/tmp/power_reviews.csv", 'w') do |csv|
33
+ csv << FeedItem.field_names
34
+ @items.each do |item|
35
+ csv << item.values
36
+ end
37
+ end
38
+ end
39
+
40
+ end
41
+
42
+ end
@@ -0,0 +1,36 @@
1
+ module PowerReviews
2
+
3
+ class FeedItem
4
+
5
+ CATEGORY_SEPARATOR = " > "
6
+
7
+ REQUIRED_FIELDS = [:product_url, :name, :description, :price, :image_url, :category, :page_id]
8
+ OPTIONAL_FIELDS = [:manufacturer_id, :shipping, :brand, :upc, :specifications, :in_stock,
9
+ :affiliate_id, :affiliate_url, :add_to_cart_url, :page_id_variant]
10
+
11
+ FIELDS = REQUIRED_FIELDS + OPTIONAL_FIELDS
12
+
13
+ FIELDS.each {|field| attr_accessor field }
14
+
15
+ def initialize(attributes = {})
16
+ attributes ||= {}
17
+ attributes.each do |field, value|
18
+ self.send("#{field.to_s}=".intern, value)
19
+ end
20
+ end
21
+
22
+ def category=cat
23
+ @category = cat.is_a?(Array) ? cat.join(CATEGORY_SEPARATOR) : cat.to_s
24
+ end
25
+
26
+ def values
27
+ FIELDS.collect {|f| self.send(f) }
28
+ end
29
+
30
+ def self.field_names
31
+ FIELDS.collect { |f| f.to_s }
32
+ end
33
+
34
+ end
35
+
36
+ end
@@ -0,0 +1,36 @@
1
+ module PowerReviews
2
+ module Protocols
3
+
4
+ # This should provide the necessary actions for moving the zip
5
+ # and
6
+ class Base
7
+
8
+ def initialize(config={})
9
+ @config = config || {}
10
+ end
11
+
12
+ # Returns true if the done file is missing
13
+ def done?
14
+ true
15
+ end
16
+
17
+ # Delete the done file
18
+ def done!
19
+
20
+ end
21
+
22
+ # Do the copying of the zip file to the preferred destination
23
+ def copy_zip(to)
24
+ puts 'This is the base class'
25
+ end
26
+
27
+
28
+ # do any cleanup necessary
29
+ def cleanup
30
+
31
+ end
32
+
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,21 @@
1
+ module PowerReviews
2
+ module Protocols
3
+ class Cp < Base
4
+
5
+ require 'fileutils'
6
+
7
+ def done?
8
+ !File.exists?(@config['done'])
9
+ end
10
+
11
+ def done!
12
+ File.delete(@config['done'])
13
+ end
14
+
15
+ def copy_zip(to)
16
+ FileUtils.cp(@config['zip'], to)
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,37 @@
1
+
2
+ require "net/ftp"
3
+
4
+ module PowerReviews
5
+ module Protocols
6
+ class Ftp < Base
7
+
8
+ # Returns true if the done file is missing
9
+ def done?
10
+ !client.nlst.include?(@config['done'])
11
+ end
12
+
13
+ # Delete the done file
14
+ def done!
15
+ client.delete(@config['done'])
16
+ end
17
+
18
+ # Do the copying of the zip file to the preferred destination
19
+ def copy_zip(to)
20
+ client.getbinaryfile(@config['zip'], to)
21
+ end
22
+
23
+ # do any cleanup necessary
24
+ def cleanup
25
+ @client.close
26
+ end
27
+
28
+ def client
29
+ return @client unless @client.nil?
30
+ @client = Net::FTP.new(@config['host'])
31
+ @client.login(@config['username'], @config['password'])
32
+ @client
33
+ end
34
+
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,9 @@
1
+ module PowerReviews #:nodoc:
2
+ module Routes
3
+ def power_reviews
4
+ @set.add_route("/reviews", {:controller => "power_reviews_controller", :action => "index"})
5
+ end
6
+ end
7
+ end
8
+
9
+ ActionController::Routing::RouteSet::Mapper.send :include, PowerReviews::Routes
@@ -0,0 +1,43 @@
1
+ require 'power_reviews/protocols/base'
2
+ require 'power_reviews/protocols/cp'
3
+ require 'power_reviews/protocols/ftp'
4
+
5
+ module PowerReviews
6
+ # Downloads the ftp file and stores it in the correct location unzipped
7
+ class Sync
8
+ require 'yaml'
9
+ require 'fileutils'
10
+
11
+ PROTOCOLS = {
12
+ :cp => Protocols::Cp,
13
+ :ftp => Protocols::Ftp
14
+ }
15
+
16
+ # Execute the necessary actions
17
+ def self.execute
18
+ self.start do |client, config|
19
+
20
+ zip_path = "#{RAILS_ROOT}/public/system/reviews.zip"
21
+
22
+ unless client.done?
23
+ FileUtils.mkdir_p(File.dirname(zip_path))
24
+ # we need the correct path to be setup
25
+ client.copy_zip(zip_path)
26
+ `cd #{File.dirname(zip_path)} && unzip -o #{zip_path}`
27
+ client.done!
28
+ end
29
+
30
+ end
31
+ end
32
+
33
+ # Given the environment loads up the yaml file and creates a new instance
34
+ def self.start
35
+ config = YAML::load(File.open("#{RAILS_ROOT}/config/power_reviews.yml"))[RAILS_ENV] || {}
36
+ syncer = PROTOCOLS[config.delete('protocol').intern].new(config)
37
+ yield syncer, config
38
+ syncer.cleanup
39
+ end
40
+
41
+ end
42
+
43
+ end
@@ -0,0 +1,62 @@
1
+ module PowerReviews
2
+ module ViewHelpers
3
+
4
+ def power_reviews_javascript_tag
5
+ javascript_include_tag('/system/pwr/engine/js/full')
6
+ end
7
+
8
+ def power_reviews_javascript_variables(options = {})
9
+ options = {
10
+ :locale => 'en_US',
11
+ :zip_location => '/system/',
12
+ :pr_style_sheet => ''
13
+ }.merge(options)
14
+ javascript_tag do
15
+ options.collect { |key, val| "var pr_#{key} = '#{val}';" unless val.blank? }.compact!.join("\n")
16
+ end
17
+ end
18
+
19
+ def power_reviews_snippet(page_id, write_review_url, review_anchor = '#ReviewHeader')
20
+ javascript_tag do
21
+ <<-eos
22
+ POWERREVIEWS.display.snippet(document, {
23
+ pr_page_id : '#{page_id}',
24
+ pr_write_review : '#{write_review_url}',
25
+ pr_read_review : '#{review_anchor}'
26
+ });
27
+ eos
28
+ end
29
+ end
30
+
31
+ def power_reviews_display(page_id, write_review_url)
32
+ javascript_tag do
33
+ <<-eos
34
+ POWERREVIEWS.display.engine(document, {
35
+ pr_page_id : '#{page_id}',
36
+ pr_write_review : '#{write_review_url}'
37
+ });
38
+ eos
39
+ end
40
+ end
41
+
42
+ def power_reviews_form(page_id, options = {})
43
+ options = {
44
+ :locale => '',
45
+ :site_id => PowerReviews::Config.site_id,
46
+ :merchant_group_id => PowerReviews::Config.merchant_group_id,
47
+ :source => 'web',
48
+ :merchant_user_id => '',
49
+ :merchant_user_email => '',
50
+ :promo_code => '',
51
+ :style_sheet => ''
52
+ }.merge(options)
53
+
54
+ javascript_tag do
55
+ options.collect { |key, val| "var pr_#{key} = '#{val}';" unless val.blank? }.unshift("var pr_page_id = '#{page_id}';").compact!.join("\n")
56
+ end << javascript_include_tag('/system/pwr/engine/js/appLaunch')
57
+
58
+ end
59
+
60
+ end
61
+
62
+ end
@@ -0,0 +1,9 @@
1
+ require 'power_reviews/config'
2
+
3
+ require 'power_reviews/feed_item'
4
+ require 'power_reviews/feed'
5
+
6
+ require 'power_reviews/sync'
7
+ require 'power_reviews/view_helpers'
8
+
9
+ ActionView::Base.send :include, PowerReviews::ViewHelpers if defined? ActionView::Base
@@ -0,0 +1,70 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{power_reviews}
8
+ s.version = "0.1.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Beau Collins"]
12
+ s.date = %q{2009-09-29}
13
+ s.description = %q{Tools and library for integrating Power Reviews into a rails website.}
14
+ s.email = %q{beaucollins@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "README"
17
+ ]
18
+ s.files = [
19
+ ".gitignore",
20
+ "MIT-LICENSE",
21
+ "README",
22
+ "Rakefile",
23
+ "VERSION",
24
+ "generators/power_reviews/USAGE",
25
+ "generators/power_reviews/power_reviews_generator.rb",
26
+ "generators/power_reviews/templates/config/initializers/power_reviews.rb",
27
+ "generators/power_reviews/templates/config/power_reviews.yml",
28
+ "generators/power_reviews/templates/config/schedule.rb",
29
+ "generators/power_reviews/templates/lib/tasks/power_reviews_tasks.rake",
30
+ "lib/power_reviews.rb",
31
+ "lib/power_reviews/config.rb",
32
+ "lib/power_reviews/feed.rb",
33
+ "lib/power_reviews/feed_item.rb",
34
+ "lib/power_reviews/protocols/base.rb",
35
+ "lib/power_reviews/protocols/cp.rb",
36
+ "lib/power_reviews/protocols/ftp.rb",
37
+ "lib/power_reviews/routes.rb",
38
+ "lib/power_reviews/sync.rb",
39
+ "lib/power_reviews/view_helpers.rb",
40
+ "power_reviews.gemspec",
41
+ "rails/init.rb",
42
+ "test/power_reviews_test.rb",
43
+ "test/test_helper.rb"
44
+ ]
45
+ s.homepage = %q{http://github.com/beaucollins/power_reviews}
46
+ s.rdoc_options = ["--charset=UTF-8"]
47
+ s.require_paths = ["lib"]
48
+ s.rubygems_version = %q{1.3.5}
49
+ s.summary = %q{Helps integrate Power Reviews into a rails site}
50
+ s.test_files = [
51
+ "test/power_reviews_test.rb",
52
+ "test/test_helper.rb"
53
+ ]
54
+
55
+ if s.respond_to? :specification_version then
56
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
57
+ s.specification_version = 3
58
+
59
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
60
+ s.add_runtime_dependency(%q<javan-whenever>, [">= 0"])
61
+ s.add_runtime_dependency(%q<fastercsv>, [">= 0"])
62
+ else
63
+ s.add_dependency(%q<javan-whenever>, [">= 0"])
64
+ s.add_dependency(%q<fastercsv>, [">= 0"])
65
+ end
66
+ else
67
+ s.add_dependency(%q<javan-whenever>, [">= 0"])
68
+ s.add_dependency(%q<fastercsv>, [">= 0"])
69
+ end
70
+ end
data/rails/init.rb ADDED
@@ -0,0 +1,2 @@
1
+ # Include hook code here
2
+ require 'power_reviews'
@@ -0,0 +1,11 @@
1
+ require 'test_helper'
2
+ require 'power_reviews'
3
+
4
+ class PowerReviewsTest < ActiveSupport::TestCase
5
+ # Replace this with your real tests.
6
+ should "have itemdata with correct attributes" do
7
+ item = PowerReviews::FeedItem.new
8
+ assert PowerReviews::FeedItem::FIELDS.is_a?(Array)
9
+ PowerReviews::FeedItem::FIELDS.each {|f| assert item.respond_to?(f), "Item did not have attribute #{f}" }
10
+ end
11
+ end
@@ -0,0 +1,4 @@
1
+ require 'rubygems'
2
+ require 'active_support'
3
+ require 'active_support/test_case'
4
+ require 'shoulda'
metadata ADDED
@@ -0,0 +1,99 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: power_reviews
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Beau Collins
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-09-29 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: javan-whenever
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: fastercsv
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ description: Tools and library for integrating Power Reviews into a rails website.
36
+ email: beaucollins@gmail.com
37
+ executables: []
38
+
39
+ extensions: []
40
+
41
+ extra_rdoc_files:
42
+ - README
43
+ files:
44
+ - .gitignore
45
+ - MIT-LICENSE
46
+ - README
47
+ - Rakefile
48
+ - VERSION
49
+ - generators/power_reviews/USAGE
50
+ - generators/power_reviews/power_reviews_generator.rb
51
+ - generators/power_reviews/templates/config/initializers/power_reviews.rb
52
+ - generators/power_reviews/templates/config/power_reviews.yml
53
+ - generators/power_reviews/templates/config/schedule.rb
54
+ - generators/power_reviews/templates/lib/tasks/power_reviews_tasks.rake
55
+ - lib/power_reviews.rb
56
+ - lib/power_reviews/config.rb
57
+ - lib/power_reviews/feed.rb
58
+ - lib/power_reviews/feed_item.rb
59
+ - lib/power_reviews/protocols/base.rb
60
+ - lib/power_reviews/protocols/cp.rb
61
+ - lib/power_reviews/protocols/ftp.rb
62
+ - lib/power_reviews/routes.rb
63
+ - lib/power_reviews/sync.rb
64
+ - lib/power_reviews/view_helpers.rb
65
+ - power_reviews.gemspec
66
+ - rails/init.rb
67
+ - test/power_reviews_test.rb
68
+ - test/test_helper.rb
69
+ has_rdoc: true
70
+ homepage: http://github.com/beaucollins/power_reviews
71
+ licenses: []
72
+
73
+ post_install_message:
74
+ rdoc_options:
75
+ - --charset=UTF-8
76
+ require_paths:
77
+ - lib
78
+ required_ruby_version: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: "0"
83
+ version:
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: "0"
89
+ version:
90
+ requirements: []
91
+
92
+ rubyforge_project:
93
+ rubygems_version: 1.3.5
94
+ signing_key:
95
+ specification_version: 3
96
+ summary: Helps integrate Power Reviews into a rails site
97
+ test_files:
98
+ - test/power_reviews_test.rb
99
+ - test/test_helper.rb