thuva-t-minus 0.3.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.
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
+ list_id = PRELAUNCH_CONFIG[:campaign_monitor_list_id]
14
+ CreateSend::Subscriber.add(list_id, email, "", [], true)
15
+ end
16
+
17
+ def campaign_monitor_configured?
18
+ PRELAUNCH_CONFIG[:campaign_monitor_api_key].present? &&
19
+ PRELAUNCH_CONFIG[:campaign_monitor_list_id].present?
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,10 @@
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
+
6
+ campaign_monitor_api_key = PRELAUNCH_CONFIG[:campaign_monitor_api_key]
7
+ CreateSend.api_key(campaign_monitor_api_key) if campaign_monitor_api_key.present?
8
+ else
9
+ PRELAUNCH_CONFIG = {}
10
+ 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,40 @@
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
+ if File.exists? File.expand_path('spec/spec_helper.rb', @_source_root)
19
+ append_file 'spec/spec_helper.rb', "require 't-minus/test_helper'"
20
+ else
21
+ create_file 'spec/spec_helper.rb', <<-FILE
22
+ ENV['RAILS_ENV'] ||= 'test'
23
+ require File.expand_path('../../config/environment', __FILE__)
24
+ require 'rspec/rails'
25
+
26
+ Dir[Rails.root.join('spec/support/**/*.rb')].each {|f| require f}
27
+
28
+ RSpec.configure do |config|
29
+ config.mock_with :rspec
30
+ config.fixture_path = "\#{::Rails.root}/spec/fixtures"
31
+ config.use_transactional_fixtures = true
32
+ end
33
+
34
+ require 't-minus/test_helper'
35
+ FILE
36
+ end
37
+ end
38
+ end
39
+ end
40
+ 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,31 @@
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
+ if File.exists? File.expand_path('test/test_helper.rb', @_source_root)
19
+ append_file 'test/test_helper.rb', "require 't-minus/test_helper'"
20
+ else
21
+ create_file 'test/test_helper.rb', <<-FILE
22
+ ENV['RAILS_ENV'] = 'test'
23
+ require File.expand_path('../../config/environment', __FILE__)
24
+ require 'rails/test_help'
25
+ require 't-minus/test_helper'
26
+ FILE
27
+ end
28
+ end
29
+ end
30
+ end
31
+ 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,8 @@
1
+ require 't-minus'
2
+ require 'createsend'
3
+ require 'rails'
4
+
5
+ module TMinus
6
+ class Engine < Rails::Engine
7
+ end
8
+ 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
+ CreateSend::Subscriber.expects(:add).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,250 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: thuva-t-minus
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 3
8
+ - 0
9
+ version: 0.3.0
10
+ platform: ruby
11
+ authors:
12
+ - John Grimes
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-01-09 00:00:00 -05:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: createsend
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ - 2
31
+ - 0
32
+ version: 0.2.0
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: bundler
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ segments:
44
+ - 1
45
+ - 0
46
+ - 0
47
+ version: 1.0.0
48
+ type: :development
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: rspec
52
+ prerelease: false
53
+ requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ segments:
59
+ - 2
60
+ - 0
61
+ - 0
62
+ - beta
63
+ - 22
64
+ version: 2.0.0.beta.22
65
+ type: :development
66
+ version_requirements: *id003
67
+ - !ruby/object:Gem::Dependency
68
+ name: rspec-rails
69
+ prerelease: false
70
+ requirement: &id004 !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ segments:
76
+ - 2
77
+ - 0
78
+ - 0
79
+ - beta
80
+ - 22
81
+ version: 2.0.0.beta.22
82
+ type: :development
83
+ version_requirements: *id004
84
+ - !ruby/object:Gem::Dependency
85
+ name: mocha
86
+ prerelease: false
87
+ requirement: &id005 !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ segments:
93
+ - 0
94
+ - 9
95
+ - 8
96
+ version: 0.9.8
97
+ type: :development
98
+ version_requirements: *id005
99
+ - !ruby/object:Gem::Dependency
100
+ name: cucumber
101
+ prerelease: false
102
+ requirement: &id006 !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ segments:
108
+ - 0
109
+ - 8
110
+ - 5
111
+ version: 0.8.5
112
+ type: :development
113
+ version_requirements: *id006
114
+ - !ruby/object:Gem::Dependency
115
+ name: cucumber-rails
116
+ prerelease: false
117
+ requirement: &id007 !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ segments:
123
+ - 0
124
+ - 3
125
+ - 2
126
+ version: 0.3.2
127
+ type: :development
128
+ version_requirements: *id007
129
+ - !ruby/object:Gem::Dependency
130
+ name: webrat
131
+ prerelease: false
132
+ requirement: &id008 !ruby/object:Gem::Requirement
133
+ none: false
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ segments:
138
+ - 0
139
+ - 7
140
+ - 1
141
+ version: 0.7.1
142
+ type: :development
143
+ version_requirements: *id008
144
+ - !ruby/object:Gem::Dependency
145
+ name: nokogiri
146
+ prerelease: false
147
+ requirement: &id009 !ruby/object:Gem::Requirement
148
+ none: false
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ segments:
153
+ - 1
154
+ - 4
155
+ - 3
156
+ - 1
157
+ version: 1.4.3.1
158
+ type: :development
159
+ version_requirements: *id009
160
+ - !ruby/object:Gem::Dependency
161
+ name: jeweler
162
+ prerelease: false
163
+ requirement: &id010 !ruby/object:Gem::Requirement
164
+ none: false
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ segments:
169
+ - 1
170
+ - 4
171
+ - 0
172
+ version: 1.4.0
173
+ type: :development
174
+ version_requirements: *id010
175
+ 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.
176
+ email: john@smallspark.com.au
177
+ executables: []
178
+
179
+ extensions: []
180
+
181
+ extra_rdoc_files:
182
+ - LICENSE
183
+ - README.markdown
184
+ files:
185
+ - app/controllers/prelaunch_controller.rb
186
+ - app/models/prelaunch_subscriber.rb
187
+ - app/views/layouts/prelaunch.html.erb
188
+ - app/views/prelaunch/new.html.erb
189
+ - config/cucumber.yml
190
+ - config/initializers/load_prelaunch_config.rb
191
+ - config/routes.rb
192
+ - lib/generators/erb/t_minus_generator.rb
193
+ - lib/generators/haml/t_minus_generator.rb
194
+ - lib/generators/haml/templates/new.html.haml
195
+ - lib/generators/haml/templates/prelaunch.html.haml
196
+ - lib/generators/rspec/t_minus_generator.rb
197
+ - lib/generators/rspec/templates/view_spec.erb
198
+ - lib/generators/t_minus/controller_generator.rb
199
+ - lib/generators/t_minus/install_generator.rb
200
+ - lib/generators/t_minus/model_generator.rb
201
+ - lib/generators/t_minus/templates/migration.rb
202
+ - lib/generators/t_minus/templates/prelaunch_config.yml
203
+ - lib/generators/test_unit/t_minus_generator.rb
204
+ - lib/generators/test_unit/templates/view_test.erb
205
+ - lib/t-minus.rb
206
+ - lib/t-minus/engine.rb
207
+ - lib/t-minus/test_helper.rb
208
+ - LICENSE
209
+ - README.markdown
210
+ - spec/controllers/prelaunch_controller_spec.rb
211
+ - spec/models/prelaunch_subscriber_spec.rb
212
+ - spec/views/prelaunch/new.html.erb_spec.rb
213
+ - spec/views/prelaunch/new.html.haml_spec.rb
214
+ has_rdoc: true
215
+ homepage: http://github.com/johngrimes/t-minus
216
+ licenses: []
217
+
218
+ post_install_message:
219
+ rdoc_options: []
220
+
221
+ require_paths:
222
+ - lib
223
+ required_ruby_version: !ruby/object:Gem::Requirement
224
+ none: false
225
+ requirements:
226
+ - - ">="
227
+ - !ruby/object:Gem::Version
228
+ segments:
229
+ - 0
230
+ version: "0"
231
+ required_rubygems_version: !ruby/object:Gem::Requirement
232
+ none: false
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ segments:
237
+ - 0
238
+ version: "0"
239
+ requirements: []
240
+
241
+ rubyforge_project:
242
+ rubygems_version: 1.3.7
243
+ signing_key:
244
+ specification_version: 3
245
+ summary: Prelaunch page and subscriber list for your Rails app.
246
+ test_files:
247
+ - spec/controllers/prelaunch_controller_spec.rb
248
+ - spec/models/prelaunch_subscriber_spec.rb
249
+ - spec/views/prelaunch/new.html.erb_spec.rb
250
+ - spec/views/prelaunch/new.html.haml_spec.rb