outpost-aggregator 1.0.0

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.
Files changed (35) hide show
  1. data/.gitignore +17 -0
  2. data/CHANGELOG.md +16 -0
  3. data/Gemfile +4 -0
  4. data/MIT-LICENSE +20 -0
  5. data/README.md +117 -0
  6. data/Rakefile +14 -0
  7. data/config.ru +7 -0
  8. data/lib/assets/javascripts/outpost/aggregator/aggregator.js.coffee +796 -0
  9. data/lib/assets/javascripts/outpost/aggregator/templates/_pagination.jst.eco +12 -0
  10. data/lib/assets/javascripts/outpost/aggregator/templates/base.jst.eco +90 -0
  11. data/lib/assets/javascripts/outpost/aggregator/templates/content_full.jst.eco +19 -0
  12. data/lib/assets/javascripts/outpost/aggregator/templates/content_small.jst.eco +15 -0
  13. data/lib/assets/javascripts/outpost/aggregator/templates/drop_zone.jst.eco +1 -0
  14. data/lib/assets/javascripts/outpost/aggregator/templates/error.jst.eco +4 -0
  15. data/lib/assets/javascripts/outpost/aggregator/templates/recent_content.jst.eco +2 -0
  16. data/lib/assets/javascripts/outpost/aggregator/templates/search.jst.eco +6 -0
  17. data/lib/assets/javascripts/outpost/aggregator/templates/url.jst.eco +5 -0
  18. data/lib/assets/javascripts/outpost/aggregator.js +2 -0
  19. data/lib/assets/stylesheets/outpost/aggregator.css.scss +93 -0
  20. data/lib/outpost/aggregator/json_input.rb +75 -0
  21. data/lib/outpost/aggregator/simple_json.rb +12 -0
  22. data/lib/outpost/aggregator/version.rb +5 -0
  23. data/lib/outpost/aggregator.rb +21 -0
  24. data/outpost-aggregator.gemspec +28 -0
  25. data/spec/factories.rb +2 -0
  26. data/spec/internal/config/database.yml +3 -0
  27. data/spec/internal/config/routes.rb +3 -0
  28. data/spec/internal/db/combustion_test.sqlite +0 -0
  29. data/spec/internal/db/schema.rb +3 -0
  30. data/spec/internal/log/.gitignore +1 -0
  31. data/spec/internal/public/favicon.ico +0 -0
  32. data/spec/lib/outpost/aggregator/json_input_spec.rb +4 -0
  33. data/spec/lib/outpost/aggregator/simple_json_spec.rb +4 -0
  34. data/spec/spec_helper.rb +23 -0
  35. metadata +204 -0
@@ -0,0 +1,12 @@
1
+ <div class="pagination pagination-mini pagination-centered">
2
+ <ul>
3
+ <li class="<%= 'disabled' if !@prev %>">
4
+ <a href="#" data-page="<%=@prev%>">&laquo; Back</a>
5
+ </li>
6
+ <li>
7
+ <a href="#" data-page="<%=@current%>"><i data-page="<%=@current%>" class="icon-refresh" style="vertical-align:sub"></i></a>
8
+ <li class="<%= 'disabled' if !@next %>">
9
+ <a href="#" data-page="<%=@next%>">More &raquo;</a>
10
+ </li>
11
+ </ul>
12
+ </div>
@@ -0,0 +1,90 @@
1
+ <div class="row">
2
+ <div id="aggregator-dropzone" class="content-bucket span5">
3
+ Loading content...
4
+ </div>
5
+
6
+ <div class="span4">
7
+ <ul class="nav nav-tabs">
8
+ <li class="<%= 'active' if @active is 'recent' %>">
9
+ <a href="#aggregator-recent-content" data-toggle="tab">Recent</a>
10
+ </li>
11
+
12
+ <li class="<%= 'active' if @active is 'search' %>">
13
+ <a href="#aggregator-search" data-toggle="tab">Search</a>
14
+ </li>
15
+
16
+ <li class"<%= 'active' if @active is 'url' %>">
17
+ <a href="#aggregator-url" data-toggle="tab">URL</a>
18
+ </li>
19
+
20
+ <li class="<%= 'active' if @active is 'help' %>">
21
+ <a href="#aggregator-help" data-toggle="tab">Help</a>
22
+ </li>
23
+ </ul>
24
+
25
+ <div class="tab-content">
26
+ <!-- Recent Content Tab -->
27
+ <div class="tab-pane<%= ' active' if @active is 'recent' %>" id="aggregator-recent-content">
28
+ Loading Recent Content...
29
+ </div>
30
+
31
+ <!-- Search Tab -->
32
+ <div class="tab-pane<%= ' active' if @active is 'search' %>" id="aggregator-search">
33
+ Loading Search...
34
+ </div>
35
+
36
+ <!-- URL Import Tab -->
37
+ <div class="tab-pane<%= ' active' if @active is 'url' %>" id="aggregator-url">
38
+ Loading URL Import...
39
+ </div>
40
+
41
+ <!-- Help Tab -->
42
+ <div class="tab-pane<%= ' active' if @active is 'help' %>" id="aggregator-help">
43
+ <ul class="help-content">
44
+ <li>The gray area on the left is referred to as the "<strong>Drop Zone</strong>".</li>
45
+ <hr />
46
+
47
+ <h4>Finding content</h4>
48
+ <li>
49
+ The "Recent" tab loads the most recent articles when the page loads.
50
+ They will usually be ordered by reverse publish date.
51
+ </li>
52
+ <li>
53
+ The "Search" tab allows you to search across the available content types.
54
+ </li>
55
+ <li>
56
+ <strong>Pagination:</strong>
57
+ <ul>
58
+ <li>"Back" shows the previous page of stories if available</li>
59
+ <li>"Next" shows the next page stories if available</li>
60
+ <li>
61
+ The "Refresh" icon (<i class="icon-refresh"></i>) refreshes the current page.
62
+ This is is useful if you have been moving content out of the list and want to get it all back.
63
+ </li>
64
+ </ul>
65
+ </li>
66
+ <hr />
67
+
68
+ <h4>Importing content</h4>
69
+ <li><strong>Recent Tab</strong>: Drag content from the "Recent" tab into the Drop Zone</strong</li>
70
+ <li>
71
+ <strong>Search Tab</strong>:
72
+ Use the "Search" tab to find older content.
73
+ Dragging from the Search panel works the same as from the Recent panel.
74
+ </li>
75
+ <li>
76
+ <strong>Via URL</strong>:
77
+ Drag any Content URL into the Drop Zone.
78
+ Alternatively, you can paste a URL into the form in the "URL" tab and click "Import".<br />
79
+ </li>
80
+ <hr />
81
+
82
+ <h4>Managing content</h4>
83
+ <li><strong>Ordering</strong>: Drag content vertically within the Drop Zone to re-order it.</li>
84
+ <li><strong>Removing</strong>: Drag and release content outside of the Drop Zone to remove it from the collection.</li>
85
+ <hr />
86
+ </ul>
87
+ </div>
88
+ </div>
89
+ </div>
90
+ </div>
@@ -0,0 +1,19 @@
1
+ <div class="content-full">
2
+ <a href="<%= @content.public_url or @content.edit_url %>" target="_blank">
3
+ <%- @content.thumbnail %><%= @content.title %>
4
+ </a> <small>(<strong><%=@content.title?.length %></strong>)</small>
5
+
6
+ <div style="font-size:11px">
7
+ <strong><%= @content.byline %></strong> - <% if @content.public_datetime?: %>
8
+ <%= moment(@content.public_datetime).format("YYYY-MM-DD, h:mma") %>
9
+ <% else: %>
10
+ <span class="text-error"><strong>UNPUBLISHED</strong></span>
11
+ <% end %><br />
12
+
13
+ <% if !_.isEmpty(@content.teaser)?: %>
14
+ <%= @content.teaser %> (<strong><%= @content.teaser?.length %></strong>)<br />
15
+ <% end %>
16
+
17
+ (<a href="<%=@content.edit_url%>" target="_blank"><%= @content.id %></a>)
18
+ </div>
19
+ </div>
@@ -0,0 +1,15 @@
1
+ <div class="content-small">
2
+ <a href="<%= @content.public_url or @content.edit_url %>" target="_blank">
3
+ <%- @content.thumbnail %><%= @content.title %>
4
+ </a>
5
+
6
+ <div style="font-size:11px;">
7
+ <% if @content.public_datetime?: %>
8
+ <%= moment(@content.public_datetime).format("YYYY-MM-DD, h:mma") %>
9
+ <% else: %>
10
+ <span class="text-error"><strong>UNPUBLISHED</strong></span>
11
+ <% end %>
12
+
13
+ (<a href="<%=@content.edit_url%>" target="_blank"><%= @content.id %></a>)
14
+ </div>
15
+ </div>
@@ -0,0 +1 @@
1
+ <h4>Current Content</h4>
@@ -0,0 +1,4 @@
1
+ <strong>There has been an error</strong><br />
2
+ Try dragging in URLs to the drop zone until we can fix this problem.<br /><br />
3
+
4
+ <small><%=@xhr.statusText%> (<%=@xhr.status%>)</small>
@@ -0,0 +1,2 @@
1
+ <div class="aggregator-pagination"></div>
2
+ <ul id="aggregator-recent-content-results" class="content-list"></ul>
@@ -0,0 +1,6 @@
1
+ <input type="text" id="aggregator-search-input" placeholder="Search Query" />
2
+ <a class="btn">Go</a>
3
+ <hr />
4
+
5
+ <div class="aggregator-pagination"></div>
6
+ <ul id="aggregator-search-results" class="content-list"></ul>
@@ -0,0 +1,5 @@
1
+ <input type="text" id="aggregator-url-input" placeholder="URL" />
2
+ <a class="btn">Import</a>
3
+ <hr />
4
+
5
+ <ul id="aggregator-url-results" class="content-list"></ul>
@@ -0,0 +1,2 @@
1
+ //= require_tree ./aggregator/templates/
2
+ //= require outpost/aggregator/aggregator
@@ -0,0 +1,93 @@
1
+ .aggregator {
2
+ // Fancy UI things
3
+ .dim {
4
+ @include opacity(30);
5
+ @include transition(opacity 0.1s linear)
6
+ }
7
+
8
+ // Override the Twitter pagination
9
+ // To reduce the padding
10
+ .pagination {
11
+ margin: 0 0 10px 0;
12
+ }
13
+
14
+ input {
15
+ max-width: 250px;
16
+ }
17
+
18
+ .drop-zone.empty {
19
+ position: relative;
20
+ color: $grayLight;
21
+ h1 {
22
+ position: absolute;
23
+ top: 60px;
24
+ left: 50px;
25
+ }
26
+ }
27
+
28
+ .drop-zone {
29
+ max-height: 500px;
30
+ overflow: auto;
31
+ }
32
+
33
+ .content-list, .help-content {
34
+ max-height: 455px;
35
+ overflow: auto;
36
+ }
37
+
38
+ .help-content {
39
+ padding-right: 10px;
40
+ }
41
+
42
+ .drop-zone, .content-list {
43
+ min-height: 200px;
44
+ @extend .unstyled;
45
+
46
+ li {
47
+ @extend .clearfix;
48
+
49
+ background: #fff;
50
+ border: 1px solid $grayLight;
51
+ margin: 5px 0;
52
+ padding: 5px;
53
+ cursor: move;
54
+
55
+ @include box-shadow(2px 2px 6px #ccc);
56
+ @include border-radius(3px);
57
+
58
+ // Dragging any content
59
+ &.dragging {
60
+ @include box-shadow(2px 2px 10px #ccc);
61
+ }
62
+
63
+ // Adding content from the right panel
64
+ &.adding {
65
+ border-color: #0f0;
66
+ }
67
+
68
+ // Removing content from drop zone
69
+ &.removing {
70
+ background-color: #f2dede;
71
+ border-color: #f00;
72
+ &>div { @include opacity(30); }
73
+ }
74
+
75
+ img {
76
+ float: left;
77
+ margin-right: 5px;
78
+ }
79
+ }
80
+ }
81
+
82
+ .content-full {
83
+ img {
84
+ max-width: 120px;
85
+ }
86
+ }
87
+
88
+ .content-minimal {
89
+ img {
90
+ max-width: 60px;
91
+ }
92
+ }
93
+ }
@@ -0,0 +1,75 @@
1
+ module Outpost
2
+ module Aggregator
3
+ module JsonInput
4
+ extend ActiveSupport::Concern
5
+
6
+ module ClassMethods
7
+ def accepts_json_input_for(name)
8
+ include InstanceMethodsOnActivation
9
+
10
+ # The current collection as simple_json
11
+ define_method "current_#{name}_json" do
12
+ current_json_for(name)
13
+ end
14
+
15
+ # The current collection as simple_json and then
16
+ # converted to real JSON.
17
+ define_method "#{name}_json" do
18
+ current_json_for(name).to_json
19
+ end
20
+
21
+ define_method "#{name}_json=" do |json|
22
+ process_json_input_for(name.to_s, json)
23
+ end
24
+ end
25
+ end
26
+
27
+
28
+ module InstanceMethodsOnActivation
29
+ def current_json_for(name)
30
+ Aggregator.array_to_simple_json(self.send(name))
31
+ end
32
+
33
+ def process_json_input_for(name, json)
34
+ return if json.empty?
35
+ name = name.to_s
36
+
37
+ json = Array(JSON.parse(json)).sort_by { |c| c["position"].to_i }
38
+ loaded = []
39
+
40
+ json.each do |object_hash|
41
+ if object = Outpost.obj_by_key(object_hash["id"])
42
+ new_object = build_association_for(name, object_hash, object)
43
+ loaded.push(new_object) if new_object
44
+ end
45
+ end
46
+
47
+ loaded_json = Aggregator.array_to_simple_json(loaded)
48
+ current_json = current_json_for(name)
49
+
50
+ if current_json != loaded_json
51
+ # Outpost::Version hook
52
+ if self.respond_to?(:custom_changes)
53
+ self.custom_changes[name] = [current_json, loaded_json]
54
+ end
55
+
56
+ self.changed_attributes[name] = current_json
57
+
58
+ # This actually opens a DB transaction and saves stuff.
59
+ # This is Rails behavior.
60
+ self.send("#{name}=", loaded)
61
+ end
62
+
63
+ self.send(name)
64
+ end
65
+
66
+
67
+ private
68
+
69
+ def build_association_for(name, object_hash, object)
70
+ self.send("build_#{name.singularize}_association", object_hash, object)
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,12 @@
1
+ module Outpost
2
+ module Aggregator
3
+ module SimpleJson
4
+ def simple_json
5
+ @simple_json ||= {
6
+ "id" => self.content.try(:obj_key),
7
+ "position" => self.position.to_i
8
+ }
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,5 @@
1
+ module Outpost
2
+ module Aggregator
3
+ VERSION = "1.0.0"
4
+ end
5
+ end
@@ -0,0 +1,21 @@
1
+ require "outpost/aggregator/version"
2
+ require "outpost/aggregator/json_input"
3
+ require "outpost/aggregator/simple_json"
4
+
5
+ module Outpost
6
+ module Aggregator
7
+ module Rails
8
+ class Engine < ::Rails::Engine
9
+ config.to_prepare do
10
+ ActiveSupport.on_load(:active_record) do
11
+ ActiveRecord::Base.send :include, Outpost::Aggregator::JsonInput
12
+ end
13
+ end
14
+ end
15
+ end # Rails
16
+
17
+ def self.array_to_simple_json(array)
18
+ Array(array).map(&:simple_json)
19
+ end
20
+ end # Aggregator
21
+ end # Outpost
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'outpost/aggregator/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "outpost-aggregator"
8
+ spec.version = Outpost::Aggregator::VERSION
9
+ spec.authors = ["Bryan Ricker"]
10
+ spec.email = ["bricker88@gmail.com"]
11
+ spec.description = %q{Content aggregator for Outpost}
12
+ spec.summary = %q{A simple UI and server-side integration to help aggregate content using an API.}
13
+ spec.homepage = "https://github.com/SCPR/outpost-aggregator"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec-rails"
24
+ spec.add_development_dependency "combustion"
25
+ spec.add_development_dependency 'activerecord'
26
+ spec.add_development_dependency "sqlite3", "~> 1.3"
27
+ spec.add_development_dependency "factory_girl", "~> 4.2"
28
+ end
data/spec/factories.rb ADDED
@@ -0,0 +1,2 @@
1
+ FactoryGirl.define do
2
+ end
@@ -0,0 +1,3 @@
1
+ test:
2
+ adapter: sqlite3
3
+ database: db/combustion_test.sqlite
@@ -0,0 +1,3 @@
1
+ Rails.application.routes.draw do
2
+ #
3
+ end
@@ -0,0 +1,3 @@
1
+ ActiveRecord::Schema.define do
2
+ #
3
+ end
@@ -0,0 +1 @@
1
+ *.log
File without changes
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe Outpost::Aggregator::JsonInput do
4
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe Outpost::Aggregator::SimpleJson do
4
+ end
@@ -0,0 +1,23 @@
1
+ require 'combustion'
2
+
3
+ unless defined?(RAKED)
4
+ Bundler.require :default, :test
5
+ Combustion.initialize! :active_record
6
+ end
7
+
8
+ require 'rspec/rails'
9
+ require 'factory_girl'
10
+ load 'factories.rb'
11
+
12
+ Rails.backtrace_cleaner.remove_silencers!
13
+
14
+
15
+ Dir[File.expand_path("spec/support/**/*.rb")].each { |f| require f }
16
+
17
+ RSpec.configure do |config|
18
+ config.mock_with :rspec
19
+ config.order = "random"
20
+ config.infer_base_class_for_anonymous_controllers = false
21
+ config.filter_run focus: true
22
+ config.run_all_when_everything_filtered = true
23
+ end
metadata ADDED
@@ -0,0 +1,204 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: outpost-aggregator
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Bryan Ricker
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-09-12 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.3'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.3'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec-rails
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: combustion
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: activerecord
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: sqlite3
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: '1.3'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: '1.3'
110
+ - !ruby/object:Gem::Dependency
111
+ name: factory_girl
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: '4.2'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: '4.2'
126
+ description: Content aggregator for Outpost
127
+ email:
128
+ - bricker88@gmail.com
129
+ executables: []
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - .gitignore
134
+ - CHANGELOG.md
135
+ - Gemfile
136
+ - MIT-LICENSE
137
+ - README.md
138
+ - Rakefile
139
+ - config.ru
140
+ - lib/assets/javascripts/outpost/aggregator.js
141
+ - lib/assets/javascripts/outpost/aggregator/aggregator.js.coffee
142
+ - lib/assets/javascripts/outpost/aggregator/templates/_pagination.jst.eco
143
+ - lib/assets/javascripts/outpost/aggregator/templates/base.jst.eco
144
+ - lib/assets/javascripts/outpost/aggregator/templates/content_full.jst.eco
145
+ - lib/assets/javascripts/outpost/aggregator/templates/content_small.jst.eco
146
+ - lib/assets/javascripts/outpost/aggregator/templates/drop_zone.jst.eco
147
+ - lib/assets/javascripts/outpost/aggregator/templates/error.jst.eco
148
+ - lib/assets/javascripts/outpost/aggregator/templates/recent_content.jst.eco
149
+ - lib/assets/javascripts/outpost/aggregator/templates/search.jst.eco
150
+ - lib/assets/javascripts/outpost/aggregator/templates/url.jst.eco
151
+ - lib/assets/stylesheets/outpost/aggregator.css.scss
152
+ - lib/outpost/aggregator.rb
153
+ - lib/outpost/aggregator/json_input.rb
154
+ - lib/outpost/aggregator/simple_json.rb
155
+ - lib/outpost/aggregator/version.rb
156
+ - outpost-aggregator.gemspec
157
+ - spec/factories.rb
158
+ - spec/internal/config/database.yml
159
+ - spec/internal/config/routes.rb
160
+ - spec/internal/db/combustion_test.sqlite
161
+ - spec/internal/db/schema.rb
162
+ - spec/internal/log/.gitignore
163
+ - spec/internal/public/favicon.ico
164
+ - spec/lib/outpost/aggregator/json_input_spec.rb
165
+ - spec/lib/outpost/aggregator/simple_json_spec.rb
166
+ - spec/spec_helper.rb
167
+ homepage: https://github.com/SCPR/outpost-aggregator
168
+ licenses:
169
+ - MIT
170
+ post_install_message:
171
+ rdoc_options: []
172
+ require_paths:
173
+ - lib
174
+ required_ruby_version: !ruby/object:Gem::Requirement
175
+ none: false
176
+ requirements:
177
+ - - ! '>='
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ required_rubygems_version: !ruby/object:Gem::Requirement
181
+ none: false
182
+ requirements:
183
+ - - ! '>='
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ requirements: []
187
+ rubyforge_project:
188
+ rubygems_version: 1.8.25
189
+ signing_key:
190
+ specification_version: 3
191
+ summary: A simple UI and server-side integration to help aggregate content using an
192
+ API.
193
+ test_files:
194
+ - spec/factories.rb
195
+ - spec/internal/config/database.yml
196
+ - spec/internal/config/routes.rb
197
+ - spec/internal/db/combustion_test.sqlite
198
+ - spec/internal/db/schema.rb
199
+ - spec/internal/log/.gitignore
200
+ - spec/internal/public/favicon.ico
201
+ - spec/lib/outpost/aggregator/json_input_spec.rb
202
+ - spec/lib/outpost/aggregator/simple_json_spec.rb
203
+ - spec/spec_helper.rb
204
+ has_rdoc: