mologue 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ run 'rails plugin install git://github.com/rails/dynamic_form.git'
@@ -0,0 +1 @@
1
+ run 'rails generate friendly_id'
@@ -0,0 +1,46 @@
1
+ run 'rm Gemfile'
2
+ create_file 'Gemfile', "source 'http://rubygems.org'\n"
3
+ gem "rails", "~> 3.0.0"
4
+ gem "dynamic_form", "~> 1.1.3"
5
+ if ENV['MOLOGUE_MONGOID']
6
+ gem "mongoid", "2.0.0.beta.20"
7
+ gem 'bson_ext', '1.1.2'
8
+ gem 'mongoid-rspec', :require => false, :group => [:test, :development]
9
+ else
10
+ gem "sqlite3-ruby", :require => "sqlite3"
11
+ gem "friendly_id", "~> 3.1"
12
+ end
13
+ if ENV['MOLOGUE_AUTH']
14
+ gem 'devise', "~> 1.1.3"
15
+ end
16
+ gem "hoptoad_notifier"
17
+ gem "jammit"
18
+ gem "will_paginate", "~> 3.0.pre2"
19
+ gem "haml", "~> 3.0.21"
20
+ gem "haml-rails"
21
+ gem "rails3-generators", :group => :development
22
+ gem "hpricot", :group => :development
23
+ gem "ruby_parser", :group => :development
24
+ gem "rspec-rails", "~> 2.0.0", :group => [:test, :development]
25
+ gem "mocha", :group => [:test]
26
+ gem "factory_girl_rails", :group => [:test, :cucumber]
27
+ gem "faker", :group => [:test]
28
+ gem "autotest", :group => [:test]
29
+ gem "autotest-rails", :group => [:test]
30
+ gem "thin", :group => [:test, :cucumber, :development]
31
+ gem "cucumber", :group => [:cucumber]
32
+ gem "database_cleaner", :group => [:test, :cucumber]
33
+ gem "cucumber-rails", :group => [:cucumber]
34
+ gem "capybara", "~> 0.4.0", :group => [:cucumber]
35
+ gem "launchy", :group => [:cucumber]
36
+ gem "timecop", :group => [:test, :cucumber]
37
+ gem "pickle", :group => [:test, :cucumber]
38
+ gem 'heroku', '1.13.7', :group => :development
39
+
40
+ # for windows users
41
+ if ( (Config::CONFIG['host_os'] =~ /mswin|mingw/) && (Config::CONFIG["ruby_version"] =~ /1.8/) )
42
+ gem "win32console", :group => [:test, :cucumber]
43
+ gem "windows-pr", :group => [:test, :cucumber]
44
+ gem "win32-open3"
45
+ end
46
+ run 'bundle install'
@@ -0,0 +1,7 @@
1
+ inject_into_file 'config/application.rb', :after => "# Configure the default encoding used in templates for Ruby 1.9.\n" do
2
+ <<-RUBY
3
+ config.generators do |g|
4
+ g.template_engine :haml
5
+ end
6
+ RUBY
7
+ end
@@ -0,0 +1,10 @@
1
+ generate(:controller, "home index")
2
+
3
+ remove_file 'app/views/home/index.html.haml'
4
+ create_file 'app/views/home/index.html.haml' do
5
+ <<-FILE
6
+ %h1 #{app_name.humanize}
7
+ FILE
8
+ end
9
+
10
+ route("root :to => 'home#index'")
@@ -0,0 +1,27 @@
1
+ unless ENV['MOLOGUE_MONGOID']
2
+
3
+ initializer('accessible_attributes.rb') do
4
+ <<-FILE
5
+ class ActiveRecord::Base
6
+ attr_accessible
7
+ attr_accessor :accessible
8
+
9
+ private
10
+
11
+ def mass_assignment_authorizer
12
+ if accessible == :all
13
+ self.class.protected_attributes
14
+ else
15
+ super + (accessible || [])
16
+ end
17
+ end
18
+ end
19
+ FILE
20
+
21
+ end
22
+ end
23
+ initializer('haml.rb') do
24
+ <<-'FILE'
25
+ Haml::Template.options[:format] = :html5
26
+ FILE
27
+ end
@@ -0,0 +1,17 @@
1
+ create_file 'config/assets.yml' do
2
+ <<-FILE
3
+ embed_assets: on
4
+
5
+ javascripts:
6
+ common:
7
+ - public/javascripts/jquery.js
8
+ - public/javascripts/rails.js
9
+ - public/javascripts/core.js
10
+
11
+ stylesheets:
12
+ main:
13
+ - public/stylesheets/main.css
14
+ admin:
15
+ - public/stylesheets/admin.css
16
+ FILE
17
+ end
@@ -0,0 +1,60 @@
1
+
2
+ get "http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js", "public/javascripts/jquery.js"
3
+ get_remote_https_file "https://github.com/rails/jquery-ujs/raw/master/src/rails.js", "public/javascripts/rails.js"
4
+ get "http://html5shiv.googlecode.com/svn/trunk/html5.js", "public/javascripts/shiv.js"
5
+ run 'rm public/javascripts/application.js'
6
+
7
+ create_file 'public/javascripts/core.js' do
8
+ <<-FILE
9
+ (function($){
10
+ var QL = QL || {};
11
+
12
+ QL = {
13
+ init: function QL_init(){
14
+ // some code that needs to be executed after doc ready
15
+ QL.bindEvents();
16
+ },
17
+ bindEvents: function QL_liveEvents(){
18
+ $('a[rel*=external]').live('click',function(){
19
+ window.open(this.href);
20
+ return false;
21
+ });
22
+
23
+ // more globally bound events
24
+ },
25
+ helpers: function QL_helpers(){
26
+ // helper for searching through arrays
27
+ QL.helpers.arraySearch = function(a){
28
+ var o = {};
29
+ for(var i=0;i<a.length;i++){
30
+ o[a[i]]='';
31
+ }
32
+ return o;
33
+ };
34
+ //j. resigs array remove overload
35
+ Array.prototype.remove = function(from, to) {
36
+ var rest = this.slice((to || from) + 1 || this.length);
37
+ this.length = from < 0 ? this.length + from : from;
38
+ return this.push.apply(this, rest);
39
+ };
40
+ // duck punch Array.indexOf into IE browsers
41
+ if(!Array.indexOf){
42
+ Array.prototype.indexOf = function(obj){
43
+ for(var i=0; i<this.length; i++){
44
+ if(this[i]==obj){
45
+ return i;
46
+ }
47
+ }
48
+ return -1;
49
+ }
50
+ }
51
+ }
52
+ };
53
+
54
+ window.QL = QL;
55
+ $(document).ready(QL.init);
56
+
57
+ })(jQuery);
58
+ FILE
59
+ end
60
+
@@ -0,0 +1,46 @@
1
+ #----------------------------------------------------------------------------
2
+ # Set up Mongoid
3
+ #----------------------------------------------------------------------------
4
+ puts "setting up Gemfile for Mongoid..."
5
+
6
+ puts "installing Mongoid gems (takes a few minutes!)..."
7
+ run 'bundle install'
8
+
9
+ puts "creating 'config/mongoid.yml' Mongoid configuration file..."
10
+ run 'rails generate mongoid:config'
11
+
12
+ puts "modifying 'config/application.rb' file for Mongoid..."
13
+ gsub_file 'config/application.rb', /require 'rails\/all'/ do
14
+ <<-RUBY
15
+ # If you are deploying to Heroku and MongoHQ,
16
+ # you supply connection information here.
17
+ require 'uri'
18
+ if ENV['MONGOHQ_URL']
19
+ mongo_uri = URI.parse(ENV['MONGOHQ_URL'])
20
+ ENV['MONGOID_HOST'] = mongo_uri.host
21
+ ENV['MONGOID_PORT'] = mongo_uri.port.to_s
22
+ ENV['MONGOID_USERNAME'] = mongo_uri.user
23
+ ENV['MONGOID_PASSWORD'] = mongo_uri.password
24
+ ENV['MONGOID_DATABASE'] = mongo_uri.path.gsub('/', '')
25
+ end
26
+
27
+ require 'mongoid/railtie'
28
+ require 'action_controller/railtie'
29
+ require 'action_mailer/railtie'
30
+ require 'active_resource/railtie'
31
+ require 'rails/test_unit/railtie'
32
+ RUBY
33
+ end
34
+
35
+ #----------------------------------------------------------------------------
36
+ # Tweak config/application.rb for Mongoid
37
+ #----------------------------------------------------------------------------
38
+ gsub_file 'config/application.rb', /# Configure the default encoding used in templates for Ruby 1.9./ do
39
+ <<-RUBY
40
+ config.generators do |g|
41
+ g.orm :mongoid
42
+ end
43
+
44
+ # Configure the default encoding used in templates for Ruby 1.9.
45
+ RUBY
46
+ end
@@ -0,0 +1,7 @@
1
+ run 'rm public/index.html'
2
+ run 'rm public/images/rails.png'
3
+ run 'rm README'
4
+ run 'touch README'
5
+ run 'rm public/favicon.ico'
6
+ get "http://www.quickleft.com/favicon.ico", "public/images/favicon.ico"
7
+ # get "http://www.quickleft.com/ati.png", "public/images/ati.png"
@@ -0,0 +1,3 @@
1
+ run 'rm -rf spec/views/*'
2
+ run 'rm -rf spec/models/*'
3
+ run 'rm -rf spec/helpers/*'
@@ -0,0 +1,11 @@
1
+ create_file '.rvmrc' do
2
+ <<-RUBY
3
+ #!/usr/bin/env bash
4
+
5
+ rvm --create 1.9.2@#{app_name}
6
+
7
+ if [[ -s #{app_name}.gems ]] ; then
8
+ rvm gemset import #{app_name}.gems
9
+ fi
10
+ RUBY
11
+ end
@@ -0,0 +1,152 @@
1
+ run 'mkdir public/stylesheets/sass'
2
+
3
+ create_file 'public/stylesheets/sass/main.scss' do
4
+ <<-FILE
5
+ @import "reset";
6
+ @import "common";
7
+ @mixin layout_base {
8
+ @include reset;
9
+ @include container;
10
+ @include user_nav;
11
+ @include main_nav;
12
+ //uncomment for a handy layout guide
13
+ @include layout_guide;
14
+ }
15
+
16
+ @mixin container($container_size: 950px) {
17
+ #container {
18
+ width: $container_size;
19
+ clear:both;
20
+ padding: 0 20px;
21
+ min-height: 100%;
22
+ height: auto !important;
23
+ height: 100%;
24
+ margin: 0 auto -80px;
25
+ }
26
+ #main_header {
27
+ width: $container_size;
28
+ height: 60px;
29
+ @include clear_left;
30
+ h1 {
31
+ float: left;
32
+ padding: 20px 0 0 0;
33
+ font-size: 24px;
34
+ font-weight: bold;
35
+ }
36
+ }
37
+ #content {
38
+ width: $container_size;
39
+ @include clear_left;
40
+ padding: 10px 0 20px 0;
41
+ }
42
+ #main_footer, #pusher {
43
+ height: 80px;
44
+ clear:both;
45
+ }
46
+ }
47
+
48
+ @mixin user_nav {
49
+ #user_nav {
50
+ float: right;
51
+ padding: 20px 0 0 0;
52
+ }
53
+ }
54
+
55
+ @mixin main_nav {
56
+ #main_nav {
57
+ width: 950px;
58
+ @include clear_left;
59
+ padding: 10px 0;
60
+ ul {
61
+ @include clear_left;
62
+ li {
63
+ float: left;
64
+ padding: 0 15px 0 0;
65
+ }
66
+ }
67
+ }
68
+ }
69
+
70
+ @mixin layout_guide {
71
+ #container { background-color: #e8e6e6; }
72
+ #main_header { background-color: #f7dddd; }
73
+ #main_nav { background-color: #f4ddf7; }
74
+ #content { background-color: #f2f7dd; }
75
+ #main_footer .inner { background-color: #ddf7e7; }
76
+ }
77
+
78
+ @include layout_base;
79
+ FILE
80
+ end
81
+
82
+ create_file 'public/stylesheets/sass/reset.scss' do
83
+ <<-FILE
84
+ @mixin reset {
85
+ /*
86
+ html5doctor.com Reset Stylesheet (Eric Meyer's Reset Reloaded + HTML5 baseline)
87
+ v1.4 2009-07-27 | Authors: Eric Meyer & Richard Clark
88
+ html5doctor.com/html-5-reset-stylesheet/
89
+ */
90
+
91
+ html, body, div, span, object, iframe,
92
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
93
+ abbr, address, cite, code,
94
+ del, dfn, em, img, ins, kbd, q, samp,
95
+ small, strong, sub, sup, var,
96
+ b, i,
97
+ dl, dt, dd, ol, ul, li,
98
+ fieldset, form, label, legend,
99
+ table, caption, tbody, tfoot, thead, tr, th, td,
100
+ article, aside, canvas, details, figcaption, figure,
101
+ footer, header, hgroup, menu, nav, section, summary,
102
+ time, mark, audio, video {
103
+ margin:0;
104
+ padding:0;
105
+ border:0;
106
+ outline:0;
107
+ font-size:100%;
108
+ vertical-align:baseline;
109
+ background:transparent;
110
+ }
111
+
112
+ article, aside, details, figcaption, figure,
113
+ footer, header, hgroup, menu, nav, section {
114
+ display:block;
115
+ }
116
+
117
+ nav ul { list-style:none; }
118
+
119
+ blockquote, q { quotes:none; }
120
+
121
+ blockquote:before, blockquote:after,
122
+ q:before, q:after { content:''; content:none; }
123
+
124
+ a { margin:0; padding:0; font-size:100%; vertical-align:baseline; background:transparent; }
125
+
126
+ ins { background-color:#ff9; color:#000; text-decoration:none; }
127
+
128
+ mark { background-color:#ff9; color:#000; font-style:italic; font-weight:bold; }
129
+
130
+ del { text-decoration: line-through; }
131
+
132
+ abbr[title], dfn[title] { border-bottom:1px dotted; cursor:help; }
133
+
134
+ /* tables still need cellspacing="0" in the markup */
135
+ table { border-collapse:collapse; border-spacing:0; }
136
+
137
+ hr { display:block; height:1px; border:0; border-top:1px solid #ccc; margin:1em 0; padding:0; }
138
+
139
+ input, select { vertical-align:middle; }
140
+ }
141
+ FILE
142
+ end
143
+
144
+ create_file 'public/stylesheets/sass/common.scss' do
145
+ <<-FILE
146
+ @mixin clear_left {
147
+ float: left; clear: both;
148
+ }
149
+ FILE
150
+ end
151
+
152
+ run 'sass public/stylesheets/sass/main.scss public/stylesheets/main.css'
@@ -0,0 +1,12 @@
1
+ create_file 'Termfile' do
2
+ <<-RUBY
3
+ # COMMENT OF SCRIPT HERE
4
+ # you can make as many tabs as you wish...
5
+ # tab names are actually arbitrary at this point too.
6
+
7
+ # Example
8
+
9
+ tab "echo '#{app_name}'", "echo 'default tab'"
10
+
11
+ RUBY
12
+ end
@@ -0,0 +1,92 @@
1
+ run 'rails generate rspec:install'
2
+
3
+ if ENV['MOLOGUE_MONGOID']
4
+ gsub_file 'spec/spec_helper.rb', /config\.fixture_path/, '# config.fixture_path'
5
+ gsub_file 'spec/spec_helper.rb', /config\.use_transactional_fixtures/, '# config.use_transactional_fixtures'
6
+ gsub_file 'spec/spec_helper.rb', /end/ do
7
+ <<-RUBY
8
+ config.before :each do
9
+ Mongoid.master.collections.select {|c| c.name !~ /system/ }.each(&:drop)
10
+ end
11
+ end
12
+ RUBY
13
+ end
14
+ end
15
+
16
+ cucumber_install = 'rails generate cucumber:install --capybara --rspec'
17
+ cucumber_install = "#{cucumber_install} --skip-database" if ENV['MOLOGUE_MONGOID']
18
+ run cucumber_install
19
+
20
+ if ENV['MOLOGUE_MONGOID']
21
+ append_file 'features/support/env.rb' do
22
+ <<-RUBY
23
+
24
+ # Clean MongoDB between tests
25
+ require 'database_cleaner'
26
+ DatabaseCleaner.strategy = :truncation
27
+ Before do
28
+ DatabaseCleaner.clean
29
+ end
30
+
31
+ RUBY
32
+ end
33
+ end
34
+
35
+ run 'rails generate pickle --email'
36
+
37
+ test_framework = "g.test_framework :rspec"
38
+ test_framework = "#{test_framework}, :fixture => false" if ENV['MOLOGUE_MONGOID']
39
+ inject_into_file 'config/application.rb', :after => "# Configure the default encoding used in templates for Ruby 1.9.\n" do
40
+ <<-RUBY
41
+ config.generators do |g|
42
+ #{test_framework}
43
+ end
44
+ RUBY
45
+ end
46
+
47
+ inject_into_file 'features/support/env.rb', :after => "ENV[\"RAILS_ENV\"] ||= \"test\"\n" do
48
+ <<-RUBY
49
+ $VERBOSE = nil
50
+ RUBY
51
+ end
52
+
53
+ gsub_file 'features/support/env.rb',/require 'cucumber\/rails\/capybara_javascript_emulation'/,'#require \'cucumber/rails/capybara_javascript_emulation\''
54
+
55
+ run 'mkdir spec/factories'
56
+
57
+ create_file 'features/step_definitions/web_steps_extended.rb' do
58
+ <<-'FILE'
59
+ When /^I confirm a js popup on the next step$/ do
60
+ page.evaluate_script("window.alert = function(msg) { return true; }")
61
+ page.evaluate_script("window.confirm = function(msg) { return true; }")
62
+ end
63
+
64
+ When /^I perform the following actions:$/ do |table|
65
+ table.hashes.each do |row|
66
+ case row['Action']
67
+ when 'Fill in'
68
+ Given "I fill in \"#{row['Field']}\" with \"#{row['Value']}\""
69
+ when 'Check'
70
+ if row['Value'] =~ /true/
71
+ Given "I check \"#{row['Field']}\""
72
+ else
73
+ Given "I uncheck \"#{row['Field']}\""
74
+ end
75
+ when 'Choose'
76
+ Given "I choose \"#{row['Field']}\""
77
+ end
78
+ end
79
+ end
80
+ FILE
81
+ end
82
+
83
+ create_file 'features/step_definitions/factory_steps.rb' do
84
+ <<-'FILE'
85
+ Given /^the following (.+) records?$/ do |factory, table|
86
+ table.hashes.each do |hash|
87
+ hash.each{|k,v| hash[k] = nil if v == "nil" } # FIXME: hack to make resend_email_verification.feature work
88
+ Factory(factory, hash)
89
+ end
90
+ end
91
+ FILE
92
+ end