generic_app 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,5 @@
1
+ NOTE: controller, model, mailer, and helper tests are in the notes/mvc-*.txt file.
2
+
1
3
  test_helper.rb
2
4
  fixtures :all
3
5
  def is_logged_in?
@@ -14,32 +16,6 @@ users.yml
14
16
  <% 30.times do |n| %>
15
17
  user_<%= n %>:
16
18
 
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
19
  test/integration:
44
20
  password_resets_test.rb
45
21
  def setup
@@ -74,36 +50,3 @@ users_signup_test.rb
74
50
  def setup
75
51
  test "invalid signup information" do
76
52
  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
@@ -2,5 +2,6 @@
2
2
  # Proper header for a Bash script.
3
3
 
4
4
  bundle install
5
+ rake db:reset
5
6
  rake db:migrate
6
7
  rake test
@@ -0,0 +1,26 @@
1
+ # POSTGRESQL DATABASE PARAMETERS:
2
+ # Database name (development)
3
+ # Database name (testing)
4
+ # Database name (production)
5
+ # Username
6
+ # Password
7
+ # NOTE: All three databases use the same username and password.
8
+
9
+ default: &default
10
+ adapter: postgresql
11
+ pool: 5
12
+ timeout: 5000
13
+ username: <%= ENV['VAR_STORE_USERNAME'] %>
14
+ password: <%= ENV['VAR_STORE_PASSWORD'] %>
15
+
16
+ development:
17
+ <<: *default
18
+ database: DB_NAME_DEV
19
+
20
+ test:
21
+ <<: *default
22
+ database: DB_NAME_TEST
23
+
24
+ production:
25
+ <<: *default
26
+ database: DB_NAME_PRO
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: generic_app
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Hsu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-26 00:00:00.000000000 Z
11
+ date: 2015-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -53,7 +53,21 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: string_in_path
56
+ name: line_containing
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
+ - !ruby/object:Gem::Dependency
70
+ name: figaro
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - ">="
@@ -72,6 +86,8 @@ email:
72
86
  - rubyist@jasonhsu.com
73
87
  executables:
74
88
  - generic_app
89
+ - generic_app_add
90
+ - setup
75
91
  extensions: []
76
92
  extra_rdoc_files: []
77
93
  files:
@@ -81,23 +97,39 @@ files:
81
97
  - README.md
82
98
  - Rakefile
83
99
  - bin/generic_app
100
+ - bin/generic_app_add
101
+ - bin/setup
102
+ - gem_install.sh
103
+ - gem_test.sh
84
104
  - generic_app.gemspec
85
105
  - lib/generic_app.rb
86
106
  - lib/generic_app/version.rb
87
- - setup.sh
88
- - spec/lib/generic_app_spec.rb
107
+ - spec/lib/1_sq_spec.rb
108
+ - spec/lib/2_pg_spec.rb
109
+ - spec/lib/3_pg_spec.rb
110
+ - spec/lib/4_addon_spec.rb
89
111
  - spec/spec_helper.rb
90
112
  - to_add/README.md
91
113
  - to_add/heroku_upload.sh
92
114
  - to_add/kill_spring.sh
93
115
  - to_add/list_files.sh
94
- - to_add/notes/mvc_by_object.txt
95
- - to_add/notes/seed.txt
116
+ - to_add/notes/0-README.md
117
+ - to_add/notes/2-db.txt
118
+ - to_add/notes/3-db-summary.txt
119
+ - to_add/notes/mvc-account_activations.txt
120
+ - to_add/notes/mvc-application.txt
121
+ - to_add/notes/mvc-layouts.txt
122
+ - to_add/notes/mvc-password_resets.txt
123
+ - to_add/notes/mvc-sessions.txt
124
+ - to_add/notes/mvc-shared_views.txt
125
+ - to_add/notes/mvc-static.txt
126
+ - to_add/notes/mvc-users.txt
96
127
  - to_add/notes/tests.txt
97
128
  - to_add/sandbox.sh
98
129
  - to_add/seed.sh
99
130
  - to_add/server.sh
100
- - to_add/setup.sh
131
+ - to_add/test.sh
132
+ - to_add_pg/config/database.yml
101
133
  homepage: https://github.com/jhsu802701/generic_app
102
134
  licenses:
103
135
  - MIT
@@ -118,10 +150,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
150
  version: '0'
119
151
  requirements: []
120
152
  rubyforge_project:
121
- rubygems_version: 2.4.5
153
+ rubygems_version: 2.4.6
122
154
  signing_key:
123
155
  specification_version: 4
124
156
  summary: Save time by instantly create a generic Rails app.
125
157
  test_files:
126
- - spec/lib/generic_app_spec.rb
158
+ - spec/lib/1_sq_spec.rb
159
+ - spec/lib/2_pg_spec.rb
160
+ - spec/lib/3_pg_spec.rb
161
+ - spec/lib/4_addon_spec.rb
127
162
  - spec/spec_helper.rb
data/setup.sh DELETED
@@ -1,5 +0,0 @@
1
- #!/bin/bash
2
- # Proper header for a Bash script.
3
-
4
- bundle update
5
- rake
@@ -1,45 +0,0 @@
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
-
@@ -1,160 +0,0 @@
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
@@ -1,18 +0,0 @@
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