power_reviews 0.1.1

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