hello_bar 0.0.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.
@@ -0,0 +1,8 @@
1
+ *.swp
2
+ .swo
3
+ *~
4
+ log/
5
+ pkg
6
+ rdoc
7
+ gemfiles/*.lock
8
+ *.gem
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
5
+ gemfile:
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
@@ -0,0 +1,124 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ hello_bar (0.0.1)
5
+ date_validator
6
+ rails (~> 3.0)
7
+
8
+ GEM
9
+ remote: http://rubygems.org/
10
+ specs:
11
+ actionmailer (3.2.9)
12
+ actionpack (= 3.2.9)
13
+ mail (~> 2.4.4)
14
+ actionpack (3.2.9)
15
+ activemodel (= 3.2.9)
16
+ activesupport (= 3.2.9)
17
+ builder (~> 3.0.0)
18
+ erubis (~> 2.7.0)
19
+ journey (~> 1.0.4)
20
+ rack (~> 1.4.0)
21
+ rack-cache (~> 1.2)
22
+ rack-test (~> 0.6.1)
23
+ sprockets (~> 2.2.1)
24
+ activemodel (3.2.9)
25
+ activesupport (= 3.2.9)
26
+ builder (~> 3.0.0)
27
+ activerecord (3.2.9)
28
+ activemodel (= 3.2.9)
29
+ activesupport (= 3.2.9)
30
+ arel (~> 3.0.2)
31
+ tzinfo (~> 0.3.29)
32
+ activeresource (3.2.9)
33
+ activemodel (= 3.2.9)
34
+ activesupport (= 3.2.9)
35
+ activesupport (3.2.9)
36
+ i18n (~> 0.6)
37
+ multi_json (~> 1.0)
38
+ arel (3.0.2)
39
+ builder (3.0.4)
40
+ columnize (0.3.6)
41
+ date_validator (0.6.3)
42
+ activemodel (~> 3.0)
43
+ debugger (1.2.2)
44
+ columnize (>= 0.3.1)
45
+ debugger-linecache (~> 1.1.1)
46
+ debugger-ruby_core_source (~> 1.1.5)
47
+ debugger-linecache (1.1.2)
48
+ debugger-ruby_core_source (>= 1.1.1)
49
+ debugger-ruby_core_source (1.1.5)
50
+ diff-lcs (1.1.3)
51
+ erubis (2.7.0)
52
+ hike (1.2.1)
53
+ i18n (0.6.1)
54
+ journey (1.0.4)
55
+ json (1.7.5)
56
+ mail (2.4.4)
57
+ i18n (>= 0.4.0)
58
+ mime-types (~> 1.16)
59
+ treetop (~> 1.4.8)
60
+ mime-types (1.19)
61
+ multi_json (1.3.7)
62
+ polyglot (0.3.3)
63
+ rack (1.4.1)
64
+ rack-cache (1.2)
65
+ rack (>= 0.4)
66
+ rack-ssl (1.3.2)
67
+ rack
68
+ rack-test (0.6.2)
69
+ rack (>= 1.0)
70
+ rails (3.2.9)
71
+ actionmailer (= 3.2.9)
72
+ actionpack (= 3.2.9)
73
+ activerecord (= 3.2.9)
74
+ activeresource (= 3.2.9)
75
+ activesupport (= 3.2.9)
76
+ bundler (~> 1.0)
77
+ railties (= 3.2.9)
78
+ railties (3.2.9)
79
+ actionpack (= 3.2.9)
80
+ activesupport (= 3.2.9)
81
+ rack-ssl (~> 1.3.2)
82
+ rake (>= 0.8.7)
83
+ rdoc (~> 3.4)
84
+ thor (>= 0.14.6, < 2.0)
85
+ rake (10.0.2)
86
+ rdoc (3.12)
87
+ json (~> 1.4)
88
+ rspec (2.12.0)
89
+ rspec-core (~> 2.12.0)
90
+ rspec-expectations (~> 2.12.0)
91
+ rspec-mocks (~> 2.12.0)
92
+ rspec-core (2.12.0)
93
+ rspec-expectations (2.12.0)
94
+ diff-lcs (~> 1.1.3)
95
+ rspec-mocks (2.12.0)
96
+ rspec-rails (2.12.0)
97
+ actionpack (>= 3.0)
98
+ activesupport (>= 3.0)
99
+ railties (>= 3.0)
100
+ rspec-core (~> 2.12.0)
101
+ rspec-expectations (~> 2.12.0)
102
+ rspec-mocks (~> 2.12.0)
103
+ sprockets (2.2.2)
104
+ hike (~> 1.2)
105
+ multi_json (~> 1.0)
106
+ rack (~> 1.0)
107
+ tilt (~> 1.1, != 1.3.0)
108
+ sqlite3 (1.3.6)
109
+ thor (0.16.0)
110
+ tilt (1.3.3)
111
+ treetop (1.4.12)
112
+ polyglot
113
+ polyglot (>= 0.3.1)
114
+ tzinfo (0.3.35)
115
+
116
+ PLATFORMS
117
+ ruby
118
+
119
+ DEPENDENCIES
120
+ debugger
121
+ hello_bar!
122
+ rspec
123
+ rspec-rails
124
+ sqlite3
@@ -0,0 +1,63 @@
1
+ # HelloBar
2
+
3
+ Announcement plugin to include 'hello bar' into your app, for Ruby on Rails. Based on paul_revere.
4
+
5
+ Install with the asset pipeline (Rails 3.1+, asset pipeline enabled)
6
+ --------------------------------------------------------------------
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ ```ruby
11
+ gem 'hello_bar'
12
+ ```
13
+
14
+ Execute:
15
+
16
+ ```sh
17
+ $ bundle
18
+ ```
19
+
20
+ Run the generator to create the migration and routes:
21
+
22
+ ```sh
23
+ rails generate hello_bar
24
+ ```
25
+
26
+ Add the default announcement CSS to `app/assets/stylesheets/application.css`:
27
+
28
+ ```ruby
29
+ //= require announcements
30
+ ```
31
+
32
+ Add the helper to `app/views/layouts/application.html.erb`:
33
+
34
+ ```ruby
35
+ <%= hello_bar %>
36
+ ```
37
+
38
+ Run the migration:
39
+
40
+ ```sh
41
+ rake db:migrate
42
+ ```
43
+
44
+ ## Usage
45
+
46
+ HelloBar provides...
47
+
48
+ * A model called `Announcement`, which has columns:
49
+ * message (text column)
50
+ * link (string columns, mandtory)
51
+ * starts_at and ends_at (datetime columns, mandatory)
52
+ You can use method "current" announcement.
53
+
54
+ * A helper called `#hello_bar`, which will return current announcement.
55
+ * Tracking into Google Analytics event
56
+
57
+ ## Contributing
58
+
59
+ 1. Fork it
60
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
61
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
62
+ 4. Push to the branch (`git push origin my-new-feature`)
63
+ 5. Create new Pull Request
@@ -0,0 +1,11 @@
1
+ require 'bundler/setup'
2
+ require 'bundler/gem_tasks'
3
+
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
7
+ task :default do |t|
8
+ if ENV['BUNDLE_GEMFILE'] =~ /gemfiles/
9
+ exec 'rake spec'
10
+ end
11
+ end
@@ -0,0 +1,59 @@
1
+ (function() {
2
+
3
+ if (window.module == null) {
4
+ window.module = function(name, fn) {
5
+ if (!(this[name] != null)) {
6
+ this[name] = {};
7
+ }
8
+ if (!(this[name].module != null)) {
9
+ this[name].module = window.module;
10
+ }
11
+ return fn.apply(this[name], []);
12
+ };
13
+ }
14
+
15
+ }).call(this);
16
+ (function() {
17
+ var $,
18
+ __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
19
+
20
+ $ = jQuery;
21
+
22
+ this.module('Util', function() {
23
+ return this.Announcement = (function() {
24
+
25
+ function Announcement(opt) {
26
+ this.opt = opt;
27
+ this.registerLink = __bind(this.registerLink, this);
28
+
29
+ if (!this.opt) {
30
+ this.opt = {};
31
+ }
32
+ this.close_link = $(this.opt['close_link']);
33
+ this.open_link = $(this.opt['open_link']);
34
+ this.link = this.close_link.attr('href');
35
+ }
36
+
37
+ Announcement.prototype.registerLink = function() {
38
+ var _this = this;
39
+ this.close_link.bind("ajax:success", function(data, response, status) {
40
+ $(this).parent().slideUp(280);
41
+ return false;
42
+ }).bind("ajax:error", function(data, xhr) {
43
+ return true;
44
+ });
45
+
46
+ this.open_link.on("click",function(){
47
+ if(typeof(_gaq_) !== 'undefined'){
48
+ _gaq.push(['_trackEvent','Announcement','show']);
49
+ }
50
+ return true;
51
+ });
52
+ };
53
+
54
+ return Announcement;
55
+
56
+ })();
57
+ });
58
+
59
+ }).call(this);
@@ -0,0 +1,25 @@
1
+ .announcement {
2
+ display: block;
3
+ font-size: 14px;
4
+ font-weight: normal;
5
+ z-index: 10;
6
+ width: 100%;
7
+ background-color: #FFF9D7;
8
+ border-bottom: solid 1px #868686;
9
+ color: #00213F;
10
+ padding: 10px 0;
11
+ text-align: center;
12
+ }
13
+ .announcement a {
14
+ font-size: 12px;
15
+ margin-left: 5px;
16
+ color: #6E5910;
17
+ text-decoration: blink;
18
+ }
19
+ .announcement .close{
20
+ height: 25px;
21
+ width: 25px;
22
+ margin: -4px 10px 1px 0;
23
+ float: right;
24
+ background-image: url('/assets/close_small.png');
25
+ }
@@ -0,0 +1,25 @@
1
+ class AnnouncementsController < ApplicationController
2
+
3
+ before_filter :hidden_announcement_ids
4
+
5
+ def hide
6
+ respond_to do |format|
7
+ format.html { redirect_to :back }
8
+ format.js { render json: nil, status: :ok }
9
+ end
10
+ end
11
+
12
+ def show
13
+ @announcement = Announcement.find(params[:id])
14
+ return redirect_to @announcement.link unless @announcement.link.blank?
15
+ redirect_to :back
16
+ end
17
+
18
+ private
19
+
20
+ def hidden_announcement_ids
21
+ ids = [params[:id], *cookies.signed[:hidden_announcement_ids]]
22
+ cookies.permanent.signed[:hidden_announcement_ids] = ids
23
+ end
24
+
25
+ end
@@ -0,0 +1,5 @@
1
+ module AnnouncementsHelper
2
+ def hello_bar
3
+ render 'announcements/index', locals: {announcements: Announcement.current}
4
+ end
5
+ end
@@ -0,0 +1,16 @@
1
+ require "date_validator"
2
+
3
+ class Announcement < ActiveRecord::Base
4
+ attr_accessible :starts_at, :ends_at, :message, :link
5
+
6
+ validates :link, :format => URI::regexp(%w(http https))
7
+ validates :starts_at, :date => { :after => lambda { |*ignores| Time.current } }, :allow_blank => true
8
+ validates :ends_at, :date => { :after => :starts_at }, :allow_blank => true
9
+
10
+ def self.current(hidden_ids = nil)
11
+ result = where("(starts_at <= :now and ends_at >= :now) OR starts_at IS :null", now: Time.current, null: nil)
12
+ result = result.where("id not in (?)", hidden_ids) if hidden_ids.present?
13
+ result
14
+ end
15
+
16
+ end
@@ -0,0 +1,20 @@
1
+ <% Announcement.current(cookies.signed[:hidden_announcement_ids]).each do |announcement| %>
2
+ <%= div_for announcement do %>
3
+ <b>Latest:</b>
4
+ <%= link_to(announcement.message, show_announcement_path(announcement), class: :open) unless announcement.link.blank? %>
5
+ <%= announcement.message if announcement.link.blank? %>
6
+ <%= link_to "", hide_announcement_path(announcement), data: {remote: true}, class: "close new-icons-close_small" %>
7
+ <% end %>
8
+ <% end %>
9
+
10
+ <%= javascript_include_tag 'util.announcements' %>
11
+ <script type="text/javascript">
12
+ $(function() {
13
+ var announcement = new Util.Announcement({
14
+ close_link: ".announcement .close",
15
+ open_link: ".announcement .open"
16
+ });
17
+ announcement.registerLink();
18
+ });
19
+ </script>
20
+
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/hello_bar/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Adam Martinik"]
6
+ gem.email = ["a.martinik@gmail.com"]
7
+ gem.description = %q{}
8
+ gem.summary = %q{Announcement plugin to include 'hello bar' for Ruby on Rails. Based on paul_revere.}
9
+ gem.homepage = "https://github.com/14113/hello_bar"
10
+
11
+ gem.files = `git ls-files`.split($\)
12
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
+ gem.name = "hello_bar"
15
+ gem.require_paths = ["lib"]
16
+ gem.version = HelloBar::VERSION
17
+
18
+ gem.add_dependency("rails", "~> 3.0")
19
+ gem.add_dependency("date_validator")
20
+ gem.add_development_dependency("rspec")
21
+ gem.add_development_dependency("rspec-rails")
22
+ gem.add_development_dependency("sqlite3")
23
+ gem.add_development_dependency("debugger")
24
+ end
@@ -0,0 +1,39 @@
1
+ require 'rails/generators/active_record/migration'
2
+
3
+ class HelloBarGenerator < Rails::Generators::Base
4
+ include Rails::Generators::Migration
5
+ extend ActiveRecord::Generators::Migration
6
+
7
+ desc "Put routes and migration in place"
8
+ source_root File.join(File.dirname(__FILE__), "templates")
9
+
10
+ def install
11
+ create_routes
12
+ begin
13
+ migration_template "migration.rb", "db/migrate/create_announcements.rb"
14
+ rescue
15
+ end
16
+ default_data
17
+ end
18
+
19
+ private
20
+
21
+ def default_data
22
+ announcement = Announcement.new({
23
+ starts_at: 1.day.ago,
24
+ ends_at: 1.day.from_now,
25
+ message: "My first announcement about github.com",
26
+ link: "http://github.com"
27
+ })
28
+ announcement.save!( :validate => false )
29
+ end
30
+
31
+ def create_routes
32
+ routes = File.open(Rails.root.join("config/routes.rb")).try :read
33
+ gsub_file "config/routes.rb", /match "announcements\/:id\/hide", to: "announcements#hide", as: "hide_announcement"/, ''
34
+ gsub_file "config/routes.rb", /match "announcements\/:id\/show", to: "announcements#show", as: "show_announcement"/, ''
35
+ route("match 'announcements/:id/hide', to: 'announcements#hide', as: 'hide_announcement'")
36
+ route("match 'announcements/:id/show', to: 'announcements#show', as: 'show_announcement'")
37
+ end
38
+
39
+ end
@@ -0,0 +1,12 @@
1
+ class CreateAnnouncements < ActiveRecord::Migration
2
+ def change
3
+ create_table :announcements do |t|
4
+ t.text :message
5
+ t.datetime :starts_at
6
+ t.datetime :ends_at
7
+ t.string :link
8
+
9
+ t.timestamps
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,6 @@
1
+ require 'hello_bar/version'
2
+
3
+ module HelloBar
4
+ class Engine < Rails::Engine
5
+ end
6
+ end
@@ -0,0 +1,3 @@
1
+ module HelloBar
2
+ VERSION = '0.0.1'
3
+ end
@@ -0,0 +1,30 @@
1
+ # Create a rails app
2
+ module HelloBar
3
+ class Application < Rails::Application
4
+ end
5
+ end
6
+
7
+ # Run migrations
8
+ project_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
9
+ require File.join project_root, 'lib', 'generators', 'hello_bar', 'templates', 'migration.rb'
10
+
11
+ ActiveRecord::Base.establish_connection(
12
+ :adapter => "sqlite3",
13
+ :database => ":memory:"
14
+ )
15
+
16
+ ActiveSupport.on_load(:active_record) do
17
+ attr_accessible(nil)
18
+ end
19
+
20
+ CreateAnnouncements.suppress_messages { CreateAnnouncements.up }
21
+
22
+ ActiveRecord::Migration.create_table :announcements do |t|
23
+ t.text :message
24
+ t.datetime :starts_at
25
+ t.datetime :ends_at
26
+ t.string :link
27
+
28
+ t.timestamps
29
+ end
30
+
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ require File.join(File.dirname(__FILE__), '..', '..', 'app', 'models', 'announcement')
4
+
5
+ describe Announcement do
6
+ it "has current scope" do
7
+ passed = create_announcement starts_at: 1.day.ago, ends_at: 1.hour.ago
8
+ current = create_announcement starts_at: 1.hour.ago, ends_at: 1.day.from_now
9
+ stable = create_announcement starts_at: nil, ends_at: nil
10
+ upcoming = create_announcement starts_at: 1.hour.from_now, ends_at: 1.day.from_now
11
+ Announcement.current.should eq([current,stable])
12
+ end
13
+
14
+ def create_announcement(attributes)
15
+ announcement = Announcement.new
16
+ attributes.each do |key, value|
17
+ announcement.send("#{key}=", value)
18
+ end
19
+ announcement.save!( :validate => false )
20
+ announcement
21
+ end
22
+
23
+ end
@@ -0,0 +1,24 @@
1
+ # Configure Rails Envinronment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require "rails/all"
5
+ require "rspec/rails"
6
+ require "date_validator"
7
+
8
+ # Pull in the fake rails app
9
+ require 'fake_app'
10
+
11
+ # Load support files
12
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
13
+
14
+ RSpec.configure do |config|
15
+ # Remove this line if you don't want RSpec's should and should_not
16
+ # methods or matchers
17
+ require 'rspec/expectations'
18
+ config.include RSpec::Matchers
19
+
20
+ # Remove announcements before each example
21
+ config.before(:each) do
22
+ Announcement.delete_all
23
+ end
24
+ end
metadata ADDED
@@ -0,0 +1,171 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hello_bar
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Adam Martinik
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-22 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '3.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '3.0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: date_validator
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
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
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: rspec-rails
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: sqlite3
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: debugger
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
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: '0'
110
+ description: ''
111
+ email:
112
+ - a.martinik@gmail.com
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files: []
116
+ files:
117
+ - .gitignore
118
+ - .travis.yml
119
+ - Gemfile
120
+ - Gemfile.lock
121
+ - README.md
122
+ - Rakefile
123
+ - app/assets/images/close_small.png
124
+ - app/assets/javascripts/util.announcements.js
125
+ - app/assets/stylesheets/announcements.css
126
+ - app/controllers/announcements_controller.rb
127
+ - app/helpers/announcements_helper.rb
128
+ - app/models/announcement.rb
129
+ - app/views/announcements/_index.html.erb
130
+ - hello_bar.gemspec
131
+ - lib/generators/hello_bar/hello_bar_generator.rb
132
+ - lib/generators/hello_bar/templates/migration.rb
133
+ - lib/hello_bar.rb
134
+ - lib/hello_bar/version.rb
135
+ - spec/fake_app.rb
136
+ - spec/models/announcement_spec.rb
137
+ - spec/spec_helper.rb
138
+ homepage: https://github.com/14113/hello_bar
139
+ licenses: []
140
+ post_install_message:
141
+ rdoc_options: []
142
+ require_paths:
143
+ - lib
144
+ required_ruby_version: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ segments:
151
+ - 0
152
+ hash: -2869555147129676713
153
+ required_rubygems_version: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ segments:
160
+ - 0
161
+ hash: -2869555147129676713
162
+ requirements: []
163
+ rubyforge_project:
164
+ rubygems_version: 1.8.24
165
+ signing_key:
166
+ specification_version: 3
167
+ summary: Announcement plugin to include 'hello bar' for Ruby on Rails. Based on paul_revere.
168
+ test_files:
169
+ - spec/fake_app.rb
170
+ - spec/models/announcement_spec.rb
171
+ - spec/spec_helper.rb