t-minus 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2010 John Grimes
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.
@@ -0,0 +1,92 @@
1
+ # T-Minus
2
+
3
+ T-Minus is a Rails engine and set of generators that make it easier to
4
+ create a prelaunch page for your Rails application. It includes support
5
+ for the collection of email addresses from interested visitors, and it
6
+ can automatically update your [Campaign Monitor](http://www.campaignmonitor.com/)
7
+ mailing list.
8
+
9
+ T-Minus currently only works with Rails 3 applications.
10
+
11
+ You can use T-Minus as a gem by adding it the following line to your
12
+ Gemfile, then running `bundle:install`:
13
+
14
+ gem 't-minus'
15
+
16
+ Or you can install it as a plugin:
17
+
18
+ rails plugin install http://github.com/johngrimes/t-minus.git
19
+
20
+ ## Getting started
21
+
22
+ Once you have T-Minus installed, run the installation generator:
23
+
24
+ rails generate t_minus:install
25
+
26
+ By default, this will generate the following:
27
+
28
+ * Configuration file - `config/prelaunch_config.yml`
29
+ * Database migration for prelaunch_subscribers
30
+ * Prelaunch page view template - `app/views/prelaunch/new.html.erb`
31
+ * Prelaunch layout template - `app/views/layouts/prelaunch.html.erb`
32
+ * Empty prelaunch stylesheet - `public/stylesheets/prelaunch.css`
33
+
34
+ Then run:
35
+
36
+ rake db:migrate
37
+
38
+ ## Configuration
39
+
40
+ The `prelaunch_config.yml` file is separated into environments, and has
41
+ the following options:
42
+
43
+ * `active` (optional, defaults to `false`) - Set this to `true` in environments in which you want the
44
+ prelaunch page to show in place of the rest of your app. When your app
45
+ launches, you can simply change this to `false` in production.
46
+ * `campaign_monitor_api_key` and `campaign_monitor_list_id` (optional) -
47
+ Add your Campaign Monitor API key and list ID to have new subscribers
48
+ automatically added.
49
+
50
+ Having trouble finding your Campaign Monitor API key or list ID? Visit
51
+ [this page](http://www.campaignmonitor.com/api/required/).
52
+
53
+ ## Customising your model or controller
54
+
55
+ If you want to customise the PrelaunchController or the
56
+ PrelaunchSubscriber model, simply use the built-in generators and make
57
+ changes to the generated files:
58
+
59
+ rails generate t_minus:controller
60
+
61
+ rails generate t_minus:model
62
+
63
+ ## Contributing to T-Minus
64
+
65
+ I encourage you to:
66
+
67
+ * Fork the project.
68
+ * Make your feature addition or bug fix.
69
+ * Add features / specs for it.
70
+ * Send me a pull request. Bonus points for topic branches.
71
+
72
+ ### A quick guide to getting the features and specs running
73
+
74
+ T-Minus works out on a Rails project in the test/rails_app directory.
75
+
76
+ First thing to do once you have cloned it down is to go into the
77
+ test/rails_app directory and run `bundle install` to get all the
78
+ dependencies.
79
+
80
+ Then go back to the root of T-Minus and run:
81
+
82
+ cucumber
83
+
84
+ Then:
85
+
86
+ rake spec
87
+
88
+ If the features or specs don't pass, please let me know.
89
+
90
+ ## Copyright
91
+
92
+ Copyright (c) 2010 [John Grimes](http://www.smallspark.com.au/about/). See LICENSE for details.
@@ -0,0 +1,19 @@
1
+ class PrelaunchController < ActionController::Base
2
+ layout 'prelaunch'
3
+
4
+ def new
5
+ @prelaunch_subscriber = PrelaunchSubscriber.new
6
+ end
7
+
8
+ def create
9
+ @prelaunch_subscriber = PrelaunchSubscriber.new(params[:prelaunch_subscriber])
10
+ if @prelaunch_subscriber.save
11
+ redirect_to root_url, :notice => <<NOTICE
12
+ <p>Thank you for your interest.</p>
13
+ <p>We have sent you an email to confirm your subscription to our prelaunch mailing list.</p>
14
+ NOTICE
15
+ else
16
+ render :action => 'new'
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ class PrelaunchSubscriber < ActiveRecord::Base
2
+ validates_presence_of :email, :message => 'Please enter your email address first.'
3
+ validates_uniqueness_of :email, :message => 'That email is already on the list.'
4
+ validates_format_of :email,
5
+ :with => /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/i,
6
+ :message => 'That email address doesn\'t look right.'
7
+
8
+ after_save :add_to_campaign_monitor, :if => :campaign_monitor_configured?
9
+
10
+ private
11
+
12
+ def add_to_campaign_monitor
13
+ subscriber = Campaigning::Subscriber.new(email)
14
+ subscriber.add_and_resubscribe!(PRELAUNCH_CONFIG[:campaign_monitor_list_id])
15
+ end
16
+
17
+ def campaign_monitor_configured?
18
+ !(PRELAUNCH_CONFIG[:campaign_monitor_api_key].blank? ||
19
+ PRELAUNCH_CONFIG[:campaign_monitor_list_id].blank?)
20
+ end
21
+ end
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8"/>
5
+ <title><%= Rails.application.class.to_s.split('::').first.titleize %></title>
6
+ <%= stylesheet_link_tag 'prelaunch' %>
7
+ <%= csrf_meta_tag %>
8
+ </head>
9
+ <body>
10
+ <%= yield %>
11
+ </body>
12
+ </html>
@@ -0,0 +1,17 @@
1
+ <% if flash[:notice] %>
2
+ <%= flash[:notice].html_safe %>
3
+ <% else %>
4
+ <p>Our new website is launching soon.</p>
5
+ <p>Add your name to the list and you will be the first to know when we are ready.</p>
6
+ <%= form_for @prelaunch_subscriber, :url => prelaunch_path do |f| %>
7
+ <div class="field">
8
+ <%= f.text_field :email %>
9
+ <% if @prelaunch_subscriber.errors[:email] %>
10
+ <div class="form-error"><%= @prelaunch_subscriber.errors[:email].first %></div>
11
+ <% end %>
12
+ </div>
13
+ <div class="actions">
14
+ <%= f.submit 'Add me to the list' %>
15
+ </div>
16
+ <% end %>
17
+ <% end %>
@@ -0,0 +1 @@
1
+ default: --format pretty
@@ -0,0 +1,8 @@
1
+ prelaunch_config_path = "#{Rails.root}/config/prelaunch_config.yml"
2
+ if File.exists?(prelaunch_config_path)
3
+ raw_config = File.read(prelaunch_config_path)
4
+ PRELAUNCH_CONFIG = YAML.load(raw_config)[Rails.env].symbolize_keys
5
+ CAMPAIGN_MONITOR_API_KEY = PRELAUNCH_CONFIG[:campaign_monitor_api_key]
6
+ else
7
+ PRELAUNCH_CONFIG = {}
8
+ end
@@ -0,0 +1,15 @@
1
+ module TMinus
2
+ module Routes
3
+ def Routes.map
4
+ Rails.application.routes.draw do
5
+ post '/' => 'prelaunch#create', :as => :prelaunch
6
+ root :to => 'prelaunch#new'
7
+ end
8
+ end
9
+ end
10
+ end
11
+
12
+ if PRELAUNCH_CONFIG[:active]
13
+ Rails.application.routes.clear!
14
+ TMinus::Routes.map
15
+ end
@@ -0,0 +1,20 @@
1
+ module Erb
2
+ module Generators
3
+ class TMinusGenerator < Rails::Generators::Base
4
+ desc 'Generates ERB view template for T-Minus'
5
+ source_root File.expand_path('../../../../app/views/', __FILE__)
6
+
7
+ def create_prelaunch_directory
8
+ empty_directory 'app/views/prelaunch'
9
+ end
10
+
11
+ def copy_view_file
12
+ copy_file 'prelaunch/new.html.erb', 'app/views/prelaunch/new.html.erb'
13
+ end
14
+
15
+ def copy_layout_file
16
+ copy_file 'layouts/prelaunch.html.erb', 'app/views/layouts/prelaunch.html.erb'
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ module Haml
2
+ module Generators
3
+ class TMinusGenerator < ::Rails::Generators::Base
4
+ desc 'Generates Haml view template for T-Minus'
5
+ source_root File.expand_path('../templates', __FILE__)
6
+
7
+ def create_prelaunch_directory
8
+ empty_directory 'app/views/prelaunch'
9
+ end
10
+
11
+ def copy_view_file
12
+ copy_file 'new.html.haml', 'app/views/prelaunch/new.html.haml'
13
+ end
14
+
15
+ def copy_layout_file
16
+ copy_file 'prelaunch.html.haml', 'app/views/layouts/prelaunch.html.haml'
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,12 @@
1
+ - if flash[:notice]
2
+ = flash[:notice].html_safe
3
+ - else
4
+ %p Our new website is launching soon.
5
+ %p Add your name to the list and you will be the first to know when we are ready.
6
+ = form_for @prelaunch_subscriber, :url => prelaunch_path do |f|
7
+ .field
8
+ = f.text_field :email
9
+ - if @prelaunch_subscriber.errors[:email]
10
+ .form-error= @prelaunch_subscriber.errors[:email].first
11
+ .actions
12
+ = f.submit 'Add me to the list'
@@ -0,0 +1,9 @@
1
+ !!!
2
+ %html{:lang => 'en'}
3
+ %head
4
+ %meta{:charset => 'UTF-8'}
5
+ %title
6
+ = stylesheet_link_tag 'prelaunch'
7
+ = csrf_meta_tag
8
+ %body
9
+ = yield
@@ -0,0 +1,22 @@
1
+ module Rspec
2
+ module Generators
3
+ class TMinusGenerator < ::Rails::Generators::Base
4
+ desc 'Generates view spec for T-Minus'
5
+ source_root File.expand_path('../templates', __FILE__)
6
+ class_option :template_engine
7
+
8
+ def create_view_spec_directory
9
+ empty_directory 'spec/views/prelaunch'
10
+ end
11
+
12
+ def copy_view_file
13
+ template 'view_spec.erb',
14
+ "spec/views/prelaunch/new.html.#{options[:template_engine]}_spec.rb"
15
+ end
16
+
17
+ def include_test_helper
18
+ append_file 'spec/spec_helper.rb', "require 't-minus/test_helper'"
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,14 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'prelaunch/new.html.<%= options[:template_engine] %>' do
4
+ before do
5
+ simulate_prelaunch_routes
6
+ assign(:prelaunch_subscriber, PrelaunchSubscriber.new)
7
+ end
8
+
9
+ it 'should render successfully' do
10
+ render
11
+ end
12
+
13
+ after { restore_routes }
14
+ end
@@ -0,0 +1,12 @@
1
+ module TMinus
2
+ module Generators
3
+ class ControllerGenerator < Rails::Generators::Base
4
+ desc 'Generates the PrelaunchController for T-Minus'
5
+ source_root File.expand_path('../../../../app/controllers/', __FILE__)
6
+
7
+ def copy_controller_file
8
+ copy_file 'prelaunch_controller.rb', 'app/controllers/prelaunch_controller.rb'
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,37 @@
1
+ require 'rails/generators/active_record'
2
+
3
+ module TMinus
4
+ module Generators
5
+ class InstallGenerator < Rails::Generators::Base
6
+ include Rails::Generators::Migration
7
+
8
+ desc 'Generates configuration and migration files for T-Minus'
9
+ source_root File.expand_path('../templates', __FILE__)
10
+
11
+ hook_for :template_engine, :as => :t_minus
12
+ hook_for :test_framework, :as => :t_minus
13
+
14
+ def copy_configuration_file
15
+ copy_file 'prelaunch_config.yml', 'config/prelaunch_config.yml'
16
+ end
17
+
18
+ def generate_migration
19
+ migration_template 'migration.rb', "db/migrate/create_#{table_name}"
20
+ end
21
+
22
+ def create_css_file
23
+ create_file 'public/stylesheets/prelaunch.css'
24
+ end
25
+
26
+ def self.next_migration_number(dirname)
27
+ ActiveRecord::Generators::Base.next_migration_number(dirname)
28
+ end
29
+
30
+ private
31
+
32
+ def table_name
33
+ 'prelaunch_subscribers'
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,12 @@
1
+ module TMinus
2
+ module Generators
3
+ class ModelGenerator < Rails::Generators::Base
4
+ desc 'Generates the PrelaunchSubscriber model for T-Minus'
5
+ source_root File.expand_path('../../../../app/models/', __FILE__)
6
+
7
+ def copy_controller_file
8
+ copy_file 'prelaunch_subscriber.rb', 'app/models/prelaunch_subscriber.rb'
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ class Create<%= table_name.camelize %> < ActiveRecord::Migration
2
+ def self.up
3
+ create_table(:<%= table_name %>) do |t|
4
+ t.string :email
5
+ t.timestamps
6
+ end
7
+ end
8
+
9
+ def self.down
10
+ drop_table :<%= table_name %>
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ development:
2
+ active: false
3
+
4
+ test:
5
+ active: false
6
+
7
+ production:
8
+ active: true
9
+ # campaign_monitor_api_key:
10
+ # campaign_monitor_list_id:
@@ -0,0 +1,22 @@
1
+ module TestUnit
2
+ module Generators
3
+ class TMinusGenerator < ::Rails::Generators::Base
4
+ desc 'Generates view spec for T-Minus'
5
+ source_root File.expand_path('../templates', __FILE__)
6
+ class_option :template_engine
7
+
8
+ def create_view_test_directory
9
+ empty_directory 'test/views/prelaunch'
10
+ end
11
+
12
+ def copy_view_file
13
+ template 'view_test.erb',
14
+ "test/views/prelaunch/new.html.#{options[:template_engine]}_test.rb"
15
+ end
16
+
17
+ def include_test_helper
18
+ append_file 'test/test_helper.rb', "require 't-minus/test_helper'"
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,16 @@
1
+ require 'test_helper'
2
+
3
+ class PrelaunchNewViewTest < ActionView::TestCase
4
+ def setup
5
+ simulate_prelaunch_routes
6
+ @prelaunch_subscriber = PrelaunchSubscriber.new
7
+ end
8
+
9
+ test 'should render successfully' do
10
+ render :template => 'prelaunch/new'
11
+ end
12
+
13
+ def teardown
14
+ restore_routes
15
+ end
16
+ end
@@ -0,0 +1 @@
1
+ require 't-minus/engine' if defined?(Rails)
@@ -0,0 +1,7 @@
1
+ require 't-minus'
2
+ require 'rails'
3
+
4
+ module TMinus
5
+ class Engine < Rails::Engine
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ def simulate_prelaunch_routes
2
+ Rails.application.routes.clear!
3
+ TMinus::Routes.map
4
+ end
5
+
6
+ def restore_routes
7
+ Rails.application.routes.clear!
8
+ load(File.expand_path('config/routes.rb', Rails.root))
9
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe PrelaunchController do
4
+ describe 'new action' do
5
+ it 'should be successful' do
6
+ get :new
7
+ assigns(:prelaunch_subscriber).should be_a(PrelaunchSubscriber)
8
+ end
9
+ end
10
+
11
+ describe 'create action' do
12
+ it 'should be successful' do
13
+ PrelaunchSubscriber.any_instance.expects(:save).returns(true)
14
+ post :create
15
+ flash[:notice].should_not be_nil
16
+ response.should redirect_to(root_url)
17
+ end
18
+
19
+ it 'should render new template if unsuccessful' do
20
+ PrelaunchSubscriber.any_instance.expects(:save).returns(false)
21
+ post :create
22
+ response.should render_template('prelaunch/new')
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe PrelaunchSubscriber do
4
+ before do
5
+ @prelaunch_subscriber = PrelaunchSubscriber.new(:email => 'bob@somedomain.com')
6
+ end
7
+
8
+ it 'should be valid' do
9
+ @prelaunch_subscriber.should be_valid
10
+ end
11
+
12
+ describe 'add_to_campaign_monitor' do
13
+ it 'should be successful' do
14
+ Campaigning::Subscriber.any_instance.expects(:add_and_resubscribe!).returns(true)
15
+ @prelaunch_subscriber.send(:add_to_campaign_monitor)
16
+ end
17
+ end
18
+
19
+ describe 'campaign_monitor_configured?' do
20
+ it 'should be successful' do
21
+ @prelaunch_subscriber.send(:campaign_monitor_configured?).should == true
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'prelaunch/new.html.erb' do
4
+ before do
5
+ assign(:prelaunch_subscriber, PrelaunchSubscriber.new)
6
+ end
7
+
8
+ it 'should render successfully' do
9
+ render
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'prelaunch/new.html.haml' do
4
+ before do
5
+ assign(:prelaunch_subscriber, PrelaunchSubscriber.new)
6
+ end
7
+
8
+ it 'should render successfully' do
9
+ append_view_path File.expand_path('../../../../lib/generators/haml/templates', __FILE__)
10
+ render :template => 'new.html.haml'
11
+ end
12
+ end
metadata ADDED
@@ -0,0 +1,263 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: t-minus
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
+ platform: ruby
12
+ authors:
13
+ - John Grimes
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-09-23 00:00:00 +10:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: campaigning
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 35
30
+ segments:
31
+ - 0
32
+ - 15
33
+ - 0
34
+ version: 0.15.0
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: bundler
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 23
46
+ segments:
47
+ - 1
48
+ - 0
49
+ - 0
50
+ version: 1.0.0
51
+ type: :development
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ name: rspec
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ hash: 62196431
62
+ segments:
63
+ - 2
64
+ - 0
65
+ - 0
66
+ - beta
67
+ - 22
68
+ version: 2.0.0.beta.22
69
+ type: :development
70
+ version_requirements: *id003
71
+ - !ruby/object:Gem::Dependency
72
+ name: rspec-rails
73
+ prerelease: false
74
+ requirement: &id004 !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ hash: 62196431
80
+ segments:
81
+ - 2
82
+ - 0
83
+ - 0
84
+ - beta
85
+ - 22
86
+ version: 2.0.0.beta.22
87
+ type: :development
88
+ version_requirements: *id004
89
+ - !ruby/object:Gem::Dependency
90
+ name: mocha
91
+ prerelease: false
92
+ requirement: &id005 !ruby/object:Gem::Requirement
93
+ none: false
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ hash: 43
98
+ segments:
99
+ - 0
100
+ - 9
101
+ - 8
102
+ version: 0.9.8
103
+ type: :development
104
+ version_requirements: *id005
105
+ - !ruby/object:Gem::Dependency
106
+ name: cucumber
107
+ prerelease: false
108
+ requirement: &id006 !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ hash: 53
114
+ segments:
115
+ - 0
116
+ - 8
117
+ - 5
118
+ version: 0.8.5
119
+ type: :development
120
+ version_requirements: *id006
121
+ - !ruby/object:Gem::Dependency
122
+ name: cucumber-rails
123
+ prerelease: false
124
+ requirement: &id007 !ruby/object:Gem::Requirement
125
+ none: false
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ hash: 23
130
+ segments:
131
+ - 0
132
+ - 3
133
+ - 2
134
+ version: 0.3.2
135
+ type: :development
136
+ version_requirements: *id007
137
+ - !ruby/object:Gem::Dependency
138
+ name: webrat
139
+ prerelease: false
140
+ requirement: &id008 !ruby/object:Gem::Requirement
141
+ none: false
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ hash: 1
146
+ segments:
147
+ - 0
148
+ - 7
149
+ - 1
150
+ version: 0.7.1
151
+ type: :development
152
+ version_requirements: *id008
153
+ - !ruby/object:Gem::Dependency
154
+ name: nokogiri
155
+ prerelease: false
156
+ requirement: &id009 !ruby/object:Gem::Requirement
157
+ none: false
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ hash: 113
162
+ segments:
163
+ - 1
164
+ - 4
165
+ - 3
166
+ - 1
167
+ version: 1.4.3.1
168
+ type: :development
169
+ version_requirements: *id009
170
+ - !ruby/object:Gem::Dependency
171
+ name: jeweler
172
+ prerelease: false
173
+ requirement: &id010 !ruby/object:Gem::Requirement
174
+ none: false
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ hash: 7
179
+ segments:
180
+ - 1
181
+ - 4
182
+ - 0
183
+ version: 1.4.0
184
+ type: :development
185
+ version_requirements: *id010
186
+ description: Rails engine and generators that make it easier to create a prelaunch page for your application that can collect email addresses of interested visitors.
187
+ email: john@smallspark.com.au
188
+ executables: []
189
+
190
+ extensions: []
191
+
192
+ extra_rdoc_files:
193
+ - LICENSE
194
+ - README.markdown
195
+ files:
196
+ - app/controllers/prelaunch_controller.rb
197
+ - app/models/prelaunch_subscriber.rb
198
+ - app/views/layouts/prelaunch.html.erb
199
+ - app/views/prelaunch/new.html.erb
200
+ - config/cucumber.yml
201
+ - config/initializers/load_prelaunch_config.rb
202
+ - config/routes.rb
203
+ - lib/generators/erb/t_minus_generator.rb
204
+ - lib/generators/haml/t_minus_generator.rb
205
+ - lib/generators/haml/templates/new.html.haml
206
+ - lib/generators/haml/templates/prelaunch.html.haml
207
+ - lib/generators/rspec/t_minus_generator.rb
208
+ - lib/generators/rspec/templates/view_spec.erb
209
+ - lib/generators/t_minus/controller_generator.rb
210
+ - lib/generators/t_minus/install_generator.rb
211
+ - lib/generators/t_minus/model_generator.rb
212
+ - lib/generators/t_minus/templates/migration.rb
213
+ - lib/generators/t_minus/templates/prelaunch_config.yml
214
+ - lib/generators/test_unit/t_minus_generator.rb
215
+ - lib/generators/test_unit/templates/view_test.erb
216
+ - lib/t-minus.rb
217
+ - lib/t-minus/engine.rb
218
+ - lib/t-minus/test_helper.rb
219
+ - LICENSE
220
+ - README.markdown
221
+ - spec/views/prelaunch/new.html.haml_spec.rb
222
+ - spec/views/prelaunch/new.html.erb_spec.rb
223
+ - spec/controllers/prelaunch_controller_spec.rb
224
+ - spec/models/prelaunch_subscriber_spec.rb
225
+ has_rdoc: true
226
+ homepage: http://github.com/johngrimes/t-minus
227
+ licenses: []
228
+
229
+ post_install_message:
230
+ rdoc_options:
231
+ - --charset=UTF-8
232
+ require_paths:
233
+ - lib
234
+ required_ruby_version: !ruby/object:Gem::Requirement
235
+ none: false
236
+ requirements:
237
+ - - ">="
238
+ - !ruby/object:Gem::Version
239
+ hash: 3
240
+ segments:
241
+ - 0
242
+ version: "0"
243
+ required_rubygems_version: !ruby/object:Gem::Requirement
244
+ none: false
245
+ requirements:
246
+ - - ">="
247
+ - !ruby/object:Gem::Version
248
+ hash: 3
249
+ segments:
250
+ - 0
251
+ version: "0"
252
+ requirements: []
253
+
254
+ rubyforge_project:
255
+ rubygems_version: 1.3.7
256
+ signing_key:
257
+ specification_version: 3
258
+ summary: Prelaunch page and subscriber list for your Rails app.
259
+ test_files:
260
+ - spec/views/prelaunch/new.html.haml_spec.rb
261
+ - spec/views/prelaunch/new.html.erb_spec.rb
262
+ - spec/controllers/prelaunch_controller_spec.rb
263
+ - spec/models/prelaunch_subscriber_spec.rb