generic_app 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1114674038b10667980e9b42e27cbab74446215c
4
+ data.tar.gz: 4342aa70fe18a6306776dda16e40b203c718be1e
5
+ SHA512:
6
+ metadata.gz: aa23ee68dba82f8542b407a7dda33016f03335f83da3b6d4cc15a110a8d784eafc6c25a3499f1b3cdc3976fffcda95a64f3cc3aa32e81cb6fe455634d646b80d
7
+ data.tar.gz: a71e65ad38b9aec7e19d30866bab3ccf3c08d5549a1cb5150bd89d7906cb9382b5b2f60b1d1b88031ab4ca41611d75693260d2b0c1fe1b2f200cd0dd43bd4fd0
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in generic_app.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 TODO: Write your name
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,65 @@
1
+ # GenericApp
2
+
3
+ ## Installation
4
+
5
+ Install it yourself with the command:
6
+
7
+ $ gem install generic_app
8
+
9
+ ## Usage
10
+
11
+ Once you have installed this Ruby gem, just go to the directory where you
12
+ keep your Rails projects and enter the command "generic_app". You will be
13
+ asked to provide a name for the subdirectory you wish to have created and
14
+ used for your new Rails app.
15
+
16
+ ## What's the point?
17
+
18
+ Welcome to Ruby On HIGH SPEED Rails! The GenericApp gem saves you time by automatically providing the basic
19
+ elements and features that nearly all Rails apps require. Instead of spending hours reinventing the wheel, you
20
+ can spend more of your time on the more advanced features and capabilities that are unique to your specific Rails
21
+ app. Modifying a generic app takes far less time than creating an app completely from scratch.
22
+ <br><br>
23
+ Creating a basic generic web site with user capability and testing is a long and slow process that spans chapters
24
+ 3 through 10 at railstutorial.org. The GenericApp Ruby gem allows you to create such a site in seconds instead of
25
+ hours. This is valuable for any project and essential for events like Startup Weekend and 24-hour website
26
+ challenges.
27
+ <br><br>
28
+ The GenericApp gem copies the railstutorial.org Sample App for use as a template for starting a new project.
29
+ (Note that the microposts and followers features are not included, because they are specific to the Sample App.)
30
+ Starting a Rails app completely from scratch (by using the "rails new" command) requires manually installing and
31
+ configuring MiniTest, Guard, Twitter bootstrap, the user model, user sign-ups, user login/logout, user
32
+ authorization, administrative users, account activations, and password resets. People are often tempted to "save
33
+ time" by omitting testing. Using the GenericApp gem allows you to have all of the essential basic elements of a
34
+ generic app as soon as you start it. It's a shortcut that actually complies with best practices.
35
+ <br><br>
36
+ The original Rails Tutorial Sample App provides the following features:
37
+
38
+ 1. Static pages
39
+ 2. Tests
40
+ 3. Automated tests through Guard
41
+ 4. Twitter bootstrap
42
+ 5. Databases: SQLite3 for development and PostgreSQL for production
43
+ 6. Ready for Heroku deployment
44
+ 7. User functionality: includes hashed passwords, administrative users,
45
+ account activations, and password resets
46
+
47
+ This generic Rails app provides the above features PLUS these additional
48
+ features:
49
+
50
+ 1. Bash scripts in the root directory that allow you to perform routine
51
+ tasks in only one step. (These scripts are likely to be useful in Rails
52
+ apps that were not created with this generic_app Ruby gem.)
53
+ 2. Recommendations that the user make use of password management software
54
+ to generate and store secure passwords
55
+ 3. Outlines of the MVC, test suite, and database seeding process in the
56
+ notes folder
57
+ 4. Guard automatically runs tests upon startup.
58
+
59
+ ## Contributing
60
+
61
+ 1. Fork it ( https://github.com/jhsu802701/generic_app/fork )
62
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
63
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
64
+ 4. Push to the branch (`git push origin my-new-feature`)
65
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new
5
+
6
+ task :default => :spec
7
+ task :test => :spec
data/bin/generic_app ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'generic_app'
4
+
5
+ generic_app = GenericApp.new
6
+ puts "***********************"
7
+ puts "Welcome to Generic App!"
8
+ puts
9
+ puts "DEFAULT VALUE: sample_app_3rd_edition"
10
+ puts "Enter the directory name you wish to use for your generic app:"
11
+ subdir_name = gets.chomp
12
+ generic_app.create(subdir_name)
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'generic_app/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "generic_app"
8
+ spec.version = GenericApp::VERSION
9
+ spec.authors = ["Jason Hsu"]
10
+ spec.email = ["rubyist@jasonhsu.com"]
11
+ spec.summary = %q{Save time by instantly create a generic Rails app.}
12
+ spec.description = %q{Instead of creating your Rails app from scratch, start with a generic app.}
13
+ spec.homepage = "https://github.com/jhsu802701/generic_app"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
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 'rake'
22
+ spec.add_development_dependency 'rspec'
23
+
24
+ spec.add_runtime_dependency "string_in_file"
25
+ spec.add_runtime_dependency "string_in_path"
26
+ end
@@ -0,0 +1,3 @@
1
+ class GenericApp
2
+ VERSION = "0.0.0"
3
+ end
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require "generic_app/version"
4
+ require "string_in_file"
5
+
6
+ class GenericApp
7
+
8
+ def initialize
9
+ end
10
+
11
+ def create (subdir_name)
12
+ dir_main = File.expand_path("../../", __FILE__)
13
+ subdir_name_final = subdir_name
14
+ subdir_name_final = "sample_app_3rd_edition" if subdir_name == ""
15
+ t1 = Thread.new {
16
+ puts "*************************************************"
17
+ puts "Downloading the Sample App from railstutorial.org"
18
+ system("git clone https://github.com/mhartl/sample_app_3rd_edition.git #{subdir_name}")
19
+ system("cd #{subdir_name} && git checkout remotes/origin/account-activation-password-reset")
20
+ }
21
+ t1.join
22
+ t1 = Thread.new {
23
+ puts "*******************************"
24
+ puts "Modifying the Rails source code"
25
+
26
+ # Changing Guardfile settings
27
+ str_guard_orig = "all_on_start: false"
28
+ str_guard_new = "all_on_start: true"
29
+ StringInFile.replace(str_guard_orig, str_guard_new, "#{subdir_name}/Guardfile")
30
+
31
+ # Advise users to use a password management program when choosing a password
32
+ str1 = "</h1>"
33
+ str2a = "</h1>"
34
+ str2b = "\nUsing the same password for all of your accounts is risky."
35
+ str2b += "\nLimiting yourself to passwords that you can easily remember is risky."
36
+ str2b += "\nYou should use a password management program like <a href='http://www.keepassx.org/'>KeePassX</a>"
37
+ str2b += "\nto create much better passwords AND store them in encrypted form.<br>"
38
+ str2 = str2a + str2b
39
+ StringInFile.replace(str1, str2, "#{subdir_name}/app/views/users/new.html.erb")
40
+ StringInFile.replace(str1, str2, "#{subdir_name}/app/views/users/edit.html.erb")
41
+ StringInFile.replace(str1, str2, "#{subdir_name}/app/views/password_resets/new.html.erb")
42
+ StringInFile.replace(str1, str2, "#{subdir_name}/app/views/password_resets/edit.html.erb")
43
+
44
+ # Adding notes and special scripts
45
+ system("cp -r #{dir_main}/to_add/* #{subdir_name}")
46
+
47
+ # Adding automated list of files
48
+ system("cd #{subdir_name} && sh list_files.sh >> notes/list_files.txt")
49
+
50
+ # Initializing Git
51
+ system("cd #{subdir_name} && rm -rf .git")
52
+ system("cd #{subdir_name} && git init")
53
+ }
54
+ t1.join
55
+ puts "*************************************************************"
56
+ puts "Enter the following commands to set up and test your new app:"
57
+ puts "cd #{subdir_name}"
58
+ puts "sh setup.sh"
59
+ puts "***********"
60
+ puts
61
+ end
62
+ end
data/setup.sh ADDED
@@ -0,0 +1,5 @@
1
+ #!/bin/bash
2
+ # Proper header for a Bash script.
3
+
4
+ bundle update
5
+ rake
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+ require 'generic_app'
3
+ require 'string_in_file'
4
+ require 'string_in_path'
5
+
6
+ describe GenericApp do
7
+ it "should copy the Rails tutorial" do
8
+ puts "*********************************"
9
+ puts "Clearing space for Rails tutorial"
10
+ system("rm -rf tmp")
11
+
12
+ t1 = Thread.new {
13
+ generic_app = GenericApp.new
14
+ generic_app.create("tmp")
15
+ }
16
+ t1.join
17
+
18
+ t1 = Thread.new {
19
+ puts "\nChecking Bash scripts"
20
+ expect(StringInFile.present("heroku run rake db:migrate", "tmp/heroku_upload.sh")).to eq(true)
21
+ expect(StringInFile.present("pkill", "tmp/kill_spring.sh")).to eq(true)
22
+ expect(StringInFile.present("ls -R1 -I concerns app/controllers", "tmp/list_files.sh")).to eq(true)
23
+ expect(StringInFile.present("rails console --sandbox", "tmp/sandbox.sh")).to eq(true)
24
+ expect(StringInFile.present("rake db:seed", "tmp/seed.sh")).to eq(true)
25
+ expect(StringInFile.present("rails server -b 0.0.0.0", "tmp/server.sh")).to eq(true)
26
+ expect(StringInFile.present("bundle install", "tmp/setup.sh")).to eq(true)
27
+
28
+ puts "\nChecking README.md"
29
+ expect(StringInFile.present("list_files.sh", "tmp/README.md")).to eq(true)
30
+
31
+ puts "\nChecking Guardfile"
32
+ expect(StringInFile.present("all_on_start: true", "tmp/Guardfile")).to eq(true)
33
+
34
+
35
+ puts "\nChecking for suggestion to use password management software"
36
+ expect(StringInFile.present("KeePassX", "tmp/app/views/users/new.html.erb")).to eq(true)
37
+ expect(StringInFile.present("KeePassX", "tmp/app/views/users/edit.html.erb")).to eq(true)
38
+ expect(StringInFile.present("KeePassX", "tmp/app/views/password_resets/new.html.erb")).to eq(true)
39
+ expect(StringInFile.present("KeePassX", "tmp/app/views/password_resets/edit.html.erb")).to eq(true)
40
+ }
41
+ t1.join
42
+
43
+ end
44
+ end
45
+
@@ -0,0 +1 @@
1
+ require 'spec_helper'
data/to_add/README.md ADDED
@@ -0,0 +1,57 @@
1
+ # Generic App
2
+
3
+ This is the generic Rails app created with the use of the generic_app Ruby
4
+ gem. More details on the generic_app Ruby gem are available at
5
+ https://github.com/jhsu802701/generic_app .
6
+
7
+ This app consists of all of the features of the Rails Tutorial Sample App
8
+ except for microposts and relationships. The basic elements essential to
9
+ most Rails apps are included. It is up to you to customize this app and
10
+ add the features and capabilities specific to your endeavor.
11
+
12
+ The original Rails Tutorial Sample App provides the following features:
13
+
14
+ 1. Static pages
15
+ 2. Tests
16
+ 3. Automated tests through Guard
17
+ 4. Twitter bootstrap
18
+ 5. Databases: SQLite3 for development and PostgreSQL for production
19
+ 6. Ready for Heroku deployment
20
+ 7. User functionality: includes hashed passwords, administrative users,
21
+ account activations, and password resets
22
+
23
+ This generic Rails app provides the above features PLUS these additional
24
+ features:
25
+
26
+ 1. Bash scripts in the root directory that allow you to perform routine
27
+ tasks in only one step. (These scripts are likely to be useful in Rails
28
+ apps that were not created with this generic_app Ruby gem.)
29
+ 2. Recommendations that the user make use of password management software
30
+ to generate and store secure passwords
31
+ 3. Outlines of the MVC, test suite, and database seeding process in the
32
+ notes folder
33
+ 4. Guard automatically runs tests upon startup.
34
+
35
+ To execute the Bash (*.sh) scripts, enter the command "sh (name of script)".
36
+ The Bash scripts provided are:
37
+
38
+ 1. setup.sh: When you first create the app, or anytime that you clone
39
+ this app, you must run the setup.sh script to set up the app. This is a
40
+ prerequisite for running Guard, running the local server, and many other
41
+ basic tasks.
42
+ 2. server.sh: This script runs your local Rails server. Note that it
43
+ specifies port 0.0.0.0 so that you can view your Rails app in your web
44
+ browser when you do your Rails development in Vagrant.
45
+ 3. seed.sh: This script populates the database in the development environment
46
+ with simulated data.
47
+ 4. sandbox.sh: This script gives you the Rails console sandbox environment.
48
+ 5. heroku_upload.sh: This script uploads your Rails source code to Heroku
49
+ AND runs the "rake db:migrate" command in the Heroku environment.
50
+ 6. kill_spring.sh: The Spring tool is useful but may occasionally slow
51
+ down your Rails app. If you believe that this is happening, run this script
52
+ to kill the Spring tool.
53
+ 7. list_files.sh: This script prints outlines of the path structure of
54
+ the MVC and testing architectures in your Rails app into the file
55
+ notes/list_files.txt. While this script has no impact on how your Rails
56
+ app runs, it aids the process of outlining the MVC structure and the testing
57
+ procedure in your app.
@@ -0,0 +1,5 @@
1
+ #!/bin/bash
2
+ # Proper header for a Bash script.
3
+
4
+ git push heroku
5
+ heroku run rake db:migrate
@@ -0,0 +1,4 @@
1
+ #!/bin/bash
2
+ # Proper header for a Bash script.
3
+
4
+ pkill -9 -f spring
@@ -0,0 +1,25 @@
1
+ #!/bin/bash
2
+ # Proper header for a Bash script.
3
+
4
+ echo "This file was AUTOMATICALLY generated by the list_files.sh script."
5
+
6
+ echo
7
+ ls -R1 -I concerns app/controllers
8
+
9
+ echo
10
+ ls -R1 -I concerns app/helpers
11
+
12
+ echo
13
+ ls -R1 -I concerns app/mailers
14
+
15
+ echo
16
+ ls -R1 -I concerns app/models
17
+
18
+ echo
19
+ ls -R1 -I concerns app/views
20
+
21
+ echo
22
+ ls -R1 -I concerns db
23
+
24
+ echo
25
+ ls -R1 -I concerns test
@@ -0,0 +1,160 @@
1
+ MIGRATIONS
2
+ db/migrate
3
+ 20141014183645_create_users.rb
4
+ create_table :users (name, email)
5
+ 20141014205756_add_index_to_users_email.rb
6
+ add_index :users, :email
7
+ 20141014234032_add_password_digest_to_users.rb
8
+ add_column :users, :password_digest, :string
9
+ 20141030174712_add_remember_digest_to_users.rb
10
+ add_column :users, :remember_digest, :string
11
+ 20141104004736_add_admin_to_users.rb
12
+ add_column :users, :admin, :boolean, default: false
13
+ 20141106193737_add_activation_to_users.rb
14
+ add_column :users, :activation_digest, :string
15
+ add_column :users, :activated, :boolean, default: false
16
+ add_column :users, :activated_at, :datetime
17
+ 20141107180258_add_reset_to_users.rb
18
+ add_column :users, :reset_digest, :string
19
+ add_column :users, :reset_sent_at, :datetime
20
+
21
+ ACCOUNT ACTIVATIONS
22
+ app/controllers/account_activations_controller.rb
23
+ def edit
24
+ app/helpers/account_activations_helper.rb
25
+ config/routes.rb
26
+ get 'account_activations/edit'
27
+ resources :account_activations, only: [:edit]
28
+
29
+ APPLICATION
30
+ app/controllers/application_controller.rb
31
+ include SessionsHelper
32
+ app/helpers/application_helper.rb
33
+ def full_title(page_title = '')
34
+
35
+ PASSWORD RESETS
36
+ app/controllers/password_resets_controller.rb
37
+ before_action :get_user, only: [:edit, :update]
38
+ before_action :valid_user, only: [:edit, :update]
39
+ before_action :check_expiration, only: [:edit, :update]
40
+ def new
41
+ def create
42
+ def edit
43
+ def update
44
+ private
45
+ def user_params
46
+ def both_passwords_blank?
47
+ def get_user
48
+ def valid_user
49
+ def check_expiration
50
+ app/views/password_resets
51
+ edit.html.erb
52
+ new.html.erb
53
+ config/routes.rb
54
+ get 'password_resets/new'
55
+ get 'password_resets/edit'
56
+ resources :password_resets, only: [:new, :create, :edit, :update]
57
+
58
+ SESSIONS
59
+ app/controllers/sessions_controller.rb
60
+ def new
61
+ def create
62
+ def destroy
63
+ app/views/sessions/new.html.erb
64
+ config/routes.rb
65
+ get 'sessions/new'
66
+ get 'login' => 'sessions#new'
67
+ post 'login' => 'sessions#create'
68
+ delete 'logout' => 'sessions#destroy'
69
+
70
+ STATIC PAGES
71
+ app/controllers/static_pages_controller.rb
72
+ def home
73
+ def help
74
+ def about
75
+ def contact
76
+ app/views/static_pages
77
+ about.html.erb
78
+ contact.html.erb
79
+ help.html.erb
80
+ home.html.erb
81
+ config/routes.rb
82
+ root 'static_pages#home'
83
+ get 'help' => 'static_pages#help'
84
+ get 'about' => 'static_pages#about'
85
+ get 'contact' => 'static_pages#contact'
86
+
87
+ USERS
88
+ app/controllers/users_controller.rb
89
+ before_action :logged_in_user, only: [:index, :edit, :update, :destroy]
90
+ before_action :correct_user, only: [:edit, :update]
91
+ before_action :admin_user, only: :destroy
92
+ def index
93
+ def show
94
+ def new
95
+ def create
96
+ def edit
97
+ def update
98
+ def destroy
99
+ private
100
+ def user_params
101
+ def logged_in_user
102
+ def correct_user
103
+ def admin_user
104
+ app/models/user.rb
105
+ attr_accessor :remember_token, :activation_token, :reset_token
106
+ before_save :downcase_email
107
+ before_create :create_activation_digest
108
+ validates :name, presence: true, length: { maximum: 50 }
109
+ VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\-.]+\.[a-z]+\z/i
110
+ validates :email, presence: true, length: { maximum: 255 },
111
+ format: { with: VALID_EMAIL_REGEX },
112
+ uniqueness: { case_sensitive: false }
113
+ has_secure_password
114
+ validates :password, length: { minimum: 6 }, allow_blank: true
115
+ def User.digest(string)
116
+ def User.new_token
117
+ def remember
118
+ def forget
119
+ def authenticated?(attribute, token)
120
+ def activate
121
+ def send_activation_email
122
+ def create_reset_digest
123
+ def send_password_reset_email
124
+ def password_reset_expired?
125
+ private
126
+ def downcase_email
127
+ def create_activation_digest
128
+ app/views/users
129
+ edit.html.erb
130
+ index.html.erb
131
+ new.html.erb
132
+ show.html.erb
133
+ _user.html.erb
134
+ database params:
135
+ users (name, email, index, password_digest, remember_digest, admin,
136
+ activation_digest, activated, activated_at, reset_digest, reset_sent_at)
137
+ config/routes.rb
138
+ get 'signup' => 'users#new'
139
+ resources :users
140
+
141
+ MAILERS
142
+ app/mailers/user_mailer.rb
143
+ def account_activation(user)
144
+ def password_reset(user)
145
+ app/views/user_mailer
146
+ account_activation.html.erb
147
+ account_activation.text.erb
148
+ password_reset.html.erb
149
+ password_reset.text.erb
150
+
151
+ LAYOUTS
152
+ app/views/layouts
153
+ application.html.erb
154
+ _footer.html.erb
155
+ _header.html.erb
156
+ _shim.html.erb
157
+
158
+ SHARED VIEWS
159
+ app/views/shared
160
+ _error_messages.html.erb
@@ -0,0 +1,18 @@
1
+ User.create!(name: "Example User",
2
+ email: "example@railstutorial.org",
3
+ password: "foobar",
4
+ password_confirmation: "foobar",
5
+ admin: true,
6
+ activated: true,
7
+ activated_at: Time.zone.now)
8
+ 99.times do |n|
9
+ name = Faker::Name.name
10
+ email = "example-#{n+1}@railstutorial.org"
11
+ password = "password"
12
+ User.create!(name: name,
13
+ email: email,
14
+ password: password,
15
+ password_confirmation: password,
16
+ activated: true,
17
+ activated_at: Time.zone.now)
18
+ end
@@ -0,0 +1,109 @@
1
+ test_helper.rb
2
+ fixtures :all
3
+ def is_logged_in?
4
+ def log_in_as(user, options = {})
5
+ private
6
+ def integration_test?
7
+
8
+ test/fixtures:
9
+ users.yml
10
+ michael
11
+ archer
12
+ lana
13
+ mallory
14
+ <% 30.times do |n| %>
15
+ user_<%= n %>:
16
+
17
+ test/controllers:
18
+ account_activations_controller_test.rb
19
+ sessions_controller_test.rb
20
+ test "should get new" do
21
+ static_pages_controller_test.rb
22
+ test "should get home" do
23
+ test "should get help" do
24
+ test "should get about" do
25
+ test "should get contact" do
26
+ users_controller_test.rb
27
+ def setup
28
+ test "should redirect index when not logged in" do
29
+ test "should get new" do
30
+ test "should redirect edit when not logged in" do
31
+ test "should redirect update when not logged in" do
32
+ test "should redirect edit when logged in as wrong user" do
33
+ test "should redirect update when logged in as wrong user" do
34
+ test "should redirect destroy when not logged in" do
35
+ test "should redirect destroy when logged in as a non-admin" do
36
+
37
+ test/helpers:
38
+ sessions_helper_test.rb
39
+ def setup
40
+ test "current_user returns right user when session is nil" do
41
+ test "current_user returns nil when remember digest is wrong" do
42
+
43
+ test/integration:
44
+ password_resets_test.rb
45
+ def setup
46
+ test "password resets" do
47
+ # Invalid email
48
+ # Valid email
49
+ # Password reset form
50
+ # Wrong email
51
+ # Inactive user
52
+ # Right email, wrong token
53
+ # Right email, right token
54
+ # Invalid password & confirmation
55
+ # Blank password & confirmation
56
+ # Valid password & confirmation
57
+ site_layout_test.rb
58
+ test "layout links" do
59
+ users_edit_test.rb
60
+ def setup
61
+ test "unsuccessful edit" do
62
+ test "successful edit with friendly forwarding" do
63
+ users_index_test.rb
64
+ def setup
65
+ test "index as admin including pagination and delete links" do
66
+ test "index as non-admin" do
67
+ users_login_test.rb
68
+ def setup
69
+ test "login with invalid information" do
70
+ test "login with valid information followed by logout" do
71
+ test "login with remembering" do
72
+ test "login without remembering" do
73
+ users_signup_test.rb
74
+ def setup
75
+ test "invalid signup information" do
76
+ test "valid signup information" do
77
+
78
+ test/mailers:
79
+ # Preview this email at http://localhost:3000/rails/mailers/user_mailer/account_activation
80
+ def account_activation
81
+ # Preview this email at http://localhost:3000/rails/mailers/user_mailer/password_reset
82
+ def password_reset
83
+ previews
84
+ user_mailer_test.rb
85
+ # Preview this email at http://localhost:3000/rails/mailers/user_mailer/account_activation
86
+ def account_activation
87
+ # Preview this email at http://localhost:3000/rails/mailers/user_mailer/password_reset
88
+ def password_reset
89
+
90
+ test/mailers/previews:
91
+ user_mailer_preview.rb
92
+ # Preview this email at http://localhost:3000/rails/mailers/user_mailer/account_activation
93
+ def account_activation
94
+ # Preview this email at http://localhost:3000/rails/mailers/user_mailer/password_reset
95
+ def password_reset
96
+
97
+ test/models:
98
+ user_test.rb
99
+ def setup
100
+ test "should be valid" do
101
+ test "name should be present" do
102
+ test "email should be present" do
103
+ test "name should not be too long" do
104
+ test "email should not be too long" do
105
+ test "email validation should accept valid addresses" do
106
+ test "email validation should reject invalid addresses" do
107
+ test "email address should be unique" do
108
+ test "password should have a minimum length" do
109
+ test "authenticated? should return false for a user with nil digest" do
data/to_add/sandbox.sh ADDED
@@ -0,0 +1,4 @@
1
+ #!/bin/bash
2
+ # Proper header for a Bash script.
3
+
4
+ rails console --sandbox
data/to_add/seed.sh ADDED
@@ -0,0 +1,5 @@
1
+ #!/bin/bash
2
+ # Proper header for a Bash script.
3
+
4
+ bundle exec rake db:migrate:reset
5
+ bundle exec rake db:seed
data/to_add/server.sh ADDED
@@ -0,0 +1,4 @@
1
+ #!/bin/bash
2
+ # Proper header for a Bash script.
3
+
4
+ rails server -b 0.0.0.0
data/to_add/setup.sh ADDED
@@ -0,0 +1,6 @@
1
+ #!/bin/bash
2
+ # Proper header for a Bash script.
3
+
4
+ bundle install
5
+ rake db:migrate
6
+ rake test
metadata ADDED
@@ -0,0 +1,127 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: generic_app
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Jason Hsu
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-01-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: string_in_file
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: string_in_path
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Instead of creating your Rails app from scratch, start with a generic
70
+ app.
71
+ email:
72
+ - rubyist@jasonhsu.com
73
+ executables:
74
+ - generic_app
75
+ extensions: []
76
+ extra_rdoc_files: []
77
+ files:
78
+ - ".gitignore"
79
+ - Gemfile
80
+ - LICENSE.txt
81
+ - README.md
82
+ - Rakefile
83
+ - bin/generic_app
84
+ - generic_app.gemspec
85
+ - lib/generic_app.rb
86
+ - lib/generic_app/version.rb
87
+ - setup.sh
88
+ - spec/lib/generic_app_spec.rb
89
+ - spec/spec_helper.rb
90
+ - to_add/README.md
91
+ - to_add/heroku_upload.sh
92
+ - to_add/kill_spring.sh
93
+ - to_add/list_files.sh
94
+ - to_add/notes/mvc_by_object.txt
95
+ - to_add/notes/seed.txt
96
+ - to_add/notes/tests.txt
97
+ - to_add/sandbox.sh
98
+ - to_add/seed.sh
99
+ - to_add/server.sh
100
+ - to_add/setup.sh
101
+ homepage: https://github.com/jhsu802701/generic_app
102
+ licenses:
103
+ - MIT
104
+ metadata: {}
105
+ post_install_message:
106
+ rdoc_options: []
107
+ require_paths:
108
+ - lib
109
+ required_ruby_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ requirements: []
120
+ rubyforge_project:
121
+ rubygems_version: 2.4.5
122
+ signing_key:
123
+ specification_version: 4
124
+ summary: Save time by instantly create a generic Rails app.
125
+ test_files:
126
+ - spec/lib/generic_app_spec.rb
127
+ - spec/spec_helper.rb