Skip to content
This repository
Browse code

adding revised episode 26

  • Loading branch information...
commit d0210a4fa621dbe3370d29f8c714780f23629b34 1 parent 8b40830
Ryan Bates authored March 08, 2012

Showing 149 changed files with 1,997 additions and 0 deletions. Show diff stats Hide diff stats

  1. 0  assets/.gitkeep b/episode-026/social-after/lib/assets/.gitkeep
  2. 0  assets/.gitkeep b/episode-026/social-before/lib/assets/.gitkeep
  3. 5  episode-026/README.md
  4. 15  episode-026/social-after/.gitignore
  5. 38  episode-026/social-after/Gemfile
  6. 113  episode-026/social-after/Gemfile.lock
  7. 7  episode-026/social-after/README.rdoc
  8. 7  episode-026/social-after/Rakefile
  9. BIN  episode-026/social-after/app/assets/images/rails.png
  10. 15  episode-026/social-after/app/assets/javascripts/application.js
  11. 3  episode-026/social-after/app/assets/javascripts/projects.js.coffee
  12. 3  episode-026/social-after/app/assets/javascripts/users.js.coffee
  13. 83  episode-026/social-after/app/assets/stylesheets/application.css
  14. 3  episode-026/social-after/app/assets/stylesheets/projects.css.scss
  15. 3  episode-026/social-after/app/assets/stylesheets/users.css.scss
  16. 3  episode-026/social-after/app/controllers/application_controller.rb
  17. 15  episode-026/social-after/app/controllers/projects_controller.rb
  18. 22  episode-026/social-after/app/controllers/users_controller.rb
  19. 2  episode-026/social-after/app/helpers/application_helper.rb
  20. 2  episode-026/social-after/app/helpers/projects_helper.rb
  21. 2  episode-026/social-after/app/helpers/users_helper.rb
  22. 0  episode-026/social-after/app/mailers/.gitkeep
  23. 0  episode-026/social-after/app/models/.gitkeep
  24. 4  episode-026/social-after/app/models/project.rb
  25. 4  episode-026/social-after/app/models/user.rb
  26. 17  episode-026/social-after/app/views/layouts/application.html.erb
  27. 19  episode-026/social-after/app/views/projects/new.html.erb
  28. 19  episode-026/social-after/app/views/users/edit.html.erb
  29. 7  episode-026/social-after/app/views/users/index.html.erb
  30. 22  episode-026/social-after/app/views/users/show.html.erb
  31. 4  episode-026/social-after/config.ru
  32. 59  episode-026/social-after/config/application.rb
  33. 6  episode-026/social-after/config/boot.rb
  34. 25  episode-026/social-after/config/database.yml
  35. 5  episode-026/social-after/config/environment.rb
  36. 37  episode-026/social-after/config/environments/development.rb
  37. 67  episode-026/social-after/config/environments/production.rb
  38. 37  episode-026/social-after/config/environments/test.rb
  39. 7  episode-026/social-after/config/initializers/backtrace_silencers.rb
  40. 15  episode-026/social-after/config/initializers/inflections.rb
  41. 5  episode-026/social-after/config/initializers/mime_types.rb
  42. 7  episode-026/social-after/config/initializers/secret_token.rb
  43. 8  episode-026/social-after/config/initializers/session_store.rb
  44. 14  episode-026/social-after/config/initializers/wrap_parameters.rb
  45. 5  episode-026/social-after/config/locales/en.yml
  46. 5  episode-026/social-after/config/routes.rb
  47. 9  episode-026/social-after/db/migrate/20120307034932_create_users.rb
  48. 10  episode-026/social-after/db/migrate/20120308190940_create_projects.rb
  49. 30  episode-026/social-after/db/schema.rb
  50. 3  episode-026/social-after/db/seeds.rb
  51. 2  episode-026/social-after/doc/README_FOR_APP
  52. 0  episode-026/social-after/log/.gitkeep
  53. 26  episode-026/social-after/public/404.html
  54. 26  episode-026/social-after/public/422.html
  55. 25  episode-026/social-after/public/500.html
  56. 0  episode-026/social-after/public/favicon.ico
  57. 5  episode-026/social-after/public/robots.txt
  58. 6  episode-026/social-after/script/rails
  59. 0  episode-026/social-after/test/fixtures/.gitkeep
  60. 9  episode-026/social-after/test/fixtures/projects.yml
  61. 9  episode-026/social-after/test/fixtures/users.yml
  62. 0  episode-026/social-after/test/functional/.gitkeep
  63. 7  episode-026/social-after/test/functional/projects_controller_test.rb
  64. 49  episode-026/social-after/test/functional/users_controller_test.rb
  65. 0  episode-026/social-after/test/integration/.gitkeep
  66. 12  episode-026/social-after/test/performance/browsing_test.rb
  67. 13  episode-026/social-after/test/test_helper.rb
  68. 0  episode-026/social-after/test/unit/.gitkeep
  69. 4  episode-026/social-after/test/unit/helpers/projects_helper_test.rb
  70. 4  episode-026/social-after/test/unit/helpers/users_helper_test.rb
  71. 7  episode-026/social-after/test/unit/project_test.rb
  72. 7  episode-026/social-after/test/unit/user_test.rb
  73. 0  episode-026/social-after/vendor/assets/javascripts/.gitkeep
  74. 0  episode-026/social-after/vendor/assets/stylesheets/.gitkeep
  75. 0  episode-026/social-after/vendor/plugins/.gitkeep
  76. 15  episode-026/social-before/.gitignore
  77. 38  episode-026/social-before/Gemfile
  78. 113  episode-026/social-before/Gemfile.lock
  79. 7  episode-026/social-before/README.rdoc
  80. 7  episode-026/social-before/Rakefile
  81. BIN  episode-026/social-before/app/assets/images/rails.png
  82. 15  episode-026/social-before/app/assets/javascripts/application.js
  83. 3  episode-026/social-before/app/assets/javascripts/projects.js.coffee
  84. 3  episode-026/social-before/app/assets/javascripts/users.js.coffee
  85. 83  episode-026/social-before/app/assets/stylesheets/application.css
  86. 3  episode-026/social-before/app/assets/stylesheets/projects.css.scss
  87. 3  episode-026/social-before/app/assets/stylesheets/users.css.scss
  88. 3  episode-026/social-before/app/controllers/application_controller.rb
  89. 15  episode-026/social-before/app/controllers/projects_controller.rb
  90. 22  episode-026/social-before/app/controllers/users_controller.rb
  91. 2  episode-026/social-before/app/helpers/application_helper.rb
  92. 2  episode-026/social-before/app/helpers/projects_helper.rb
  93. 2  episode-026/social-before/app/helpers/users_helper.rb
  94. 0  episode-026/social-before/app/mailers/.gitkeep
  95. 0  episode-026/social-before/app/models/.gitkeep
  96. 3  episode-026/social-before/app/models/project.rb
  97. 3  episode-026/social-before/app/models/user.rb
  98. 17  episode-026/social-before/app/views/layouts/application.html.erb
  99. 19  episode-026/social-before/app/views/projects/new.html.erb
  100. 19  episode-026/social-before/app/views/users/edit.html.erb
  101. 7  episode-026/social-before/app/views/users/index.html.erb
  102. 22  episode-026/social-before/app/views/users/show.html.erb
  103. 4  episode-026/social-before/config.ru
  104. 59  episode-026/social-before/config/application.rb
  105. 6  episode-026/social-before/config/boot.rb
  106. 25  episode-026/social-before/config/database.yml
  107. 5  episode-026/social-before/config/environment.rb
  108. 37  episode-026/social-before/config/environments/development.rb
  109. 67  episode-026/social-before/config/environments/production.rb
  110. 37  episode-026/social-before/config/environments/test.rb
  111. 7  episode-026/social-before/config/initializers/backtrace_silencers.rb
  112. 15  episode-026/social-before/config/initializers/inflections.rb
  113. 5  episode-026/social-before/config/initializers/mime_types.rb
  114. 7  episode-026/social-before/config/initializers/secret_token.rb
  115. 8  episode-026/social-before/config/initializers/session_store.rb
  116. 14  episode-026/social-before/config/initializers/wrap_parameters.rb
  117. 5  episode-026/social-before/config/locales/en.yml
  118. 5  episode-026/social-before/config/routes.rb
  119. 9  episode-026/social-before/db/migrate/20120307034932_create_users.rb
  120. 10  episode-026/social-before/db/migrate/20120308190940_create_projects.rb
  121. 30  episode-026/social-before/db/schema.rb
  122. 3  episode-026/social-before/db/seeds.rb
  123. 2  episode-026/social-before/doc/README_FOR_APP
  124. 0  episode-026/social-before/log/.gitkeep
  125. 26  episode-026/social-before/public/404.html
  126. 26  episode-026/social-before/public/422.html
  127. 25  episode-026/social-before/public/500.html
  128. 0  episode-026/social-before/public/favicon.ico
  129. 5  episode-026/social-before/public/robots.txt
  130. 6  episode-026/social-before/script/rails
  131. 0  episode-026/social-before/test/fixtures/.gitkeep
  132. 9  episode-026/social-before/test/fixtures/projects.yml
  133. 9  episode-026/social-before/test/fixtures/users.yml
  134. 0  episode-026/social-before/test/functional/.gitkeep
  135. 7  episode-026/social-before/test/functional/projects_controller_test.rb
  136. 49  episode-026/social-before/test/functional/users_controller_test.rb
  137. 0  episode-026/social-before/test/integration/.gitkeep
  138. 12  episode-026/social-before/test/performance/browsing_test.rb
  139. 13  episode-026/social-before/test/test_helper.rb
  140. 0  episode-026/social-before/test/unit/.gitkeep
  141. 4  episode-026/social-before/test/unit/helpers/projects_helper_test.rb
  142. 4  episode-026/social-before/test/unit/helpers/users_helper_test.rb
  143. 7  episode-026/social-before/test/unit/project_test.rb
  144. 7  episode-026/social-before/test/unit/user_test.rb
  145. 0  episode-026/social-before/vendor/assets/javascripts/.gitkeep
  146. 0  episode-026/social-before/vendor/assets/stylesheets/.gitkeep
  147. 0  episode-026/social-before/vendor/plugins/.gitkeep
  148. 0  tasks/.gitkeep b/episode-026/social-after/lib/tasks/.gitkeep
  149. 0  tasks/.gitkeep b/episode-026/social-before/lib/tasks/.gitkeep
0  assets/.gitkeep b/episode-026/social-after/lib/assets/.gitkeep
No changes.
0  assets/.gitkeep b/episode-026/social-before/lib/assets/.gitkeep
No changes.
5  episode-026/README.md
Source Rendered
... ...
@@ -0,0 +1,5 @@
  1
+# RailsCasts Episode #26: Hackers Love Mass Assignment (revised)
  2
+
  3
+http://railscasts.com/episodes/26-hackers-love-mass-assignment-revised
  4
+
  5
+Requires Ruby 1.9.2 or higher.
15  episode-026/social-after/.gitignore
... ...
@@ -0,0 +1,15 @@
  1
+# See http://help.github.com/ignore-files/ for more about ignoring files.
  2
+#
  3
+# If you find yourself ignoring temporary files generated by your text editor
  4
+# or operating system, you probably want to add a global ignore instead:
  5
+#   git config --global core.excludesfile ~/.gitignore_global
  6
+
  7
+# Ignore bundler config
  8
+/.bundle
  9
+
  10
+# Ignore the default SQLite database.
  11
+/db/*.sqlite3
  12
+
  13
+# Ignore all logfiles and tempfiles.
  14
+/log/*.log
  15
+/tmp
38  episode-026/social-after/Gemfile
... ...
@@ -0,0 +1,38 @@
  1
+source 'https://rubygems.org'
  2
+
  3
+gem 'rails', '3.2.2'
  4
+
  5
+# Bundle edge Rails instead:
  6
+# gem 'rails', :git => 'git://github.com/rails/rails.git'
  7
+
  8
+gem 'sqlite3'
  9
+
  10
+
  11
+# Gems used only for assets and not required
  12
+# in production environments by default.
  13
+group :assets do
  14
+  gem 'sass-rails',   '~> 3.2.3'
  15
+  gem 'coffee-rails', '~> 3.2.1'
  16
+
  17
+  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  18
+  # gem 'therubyracer'
  19
+
  20
+  gem 'uglifier', '>= 1.0.3'
  21
+end
  22
+
  23
+gem 'jquery-rails'
  24
+
  25
+# To use ActiveModel has_secure_password
  26
+gem 'bcrypt-ruby', '~> 3.0.0'
  27
+
  28
+# To use Jbuilder templates for JSON
  29
+# gem 'jbuilder'
  30
+
  31
+# Use unicorn as the app server
  32
+# gem 'unicorn'
  33
+
  34
+# Deploy with Capistrano
  35
+# gem 'capistrano'
  36
+
  37
+# To use debugger
  38
+# gem 'ruby-debug19', :require => 'ruby-debug'
113  episode-026/social-after/Gemfile.lock
... ...
@@ -0,0 +1,113 @@
  1
+GEM
  2
+  remote: https://rubygems.org/
  3
+  specs:
  4
+    actionmailer (3.2.2)
  5
+      actionpack (= 3.2.2)
  6
+      mail (~> 2.4.0)
  7
+    actionpack (3.2.2)
  8
+      activemodel (= 3.2.2)
  9
+      activesupport (= 3.2.2)
  10
+      builder (~> 3.0.0)
  11
+      erubis (~> 2.7.0)
  12
+      journey (~> 1.0.1)
  13
+      rack (~> 1.4.0)
  14
+      rack-cache (~> 1.1)
  15
+      rack-test (~> 0.6.1)
  16
+      sprockets (~> 2.1.2)
  17
+    activemodel (3.2.2)
  18
+      activesupport (= 3.2.2)
  19
+      builder (~> 3.0.0)
  20
+    activerecord (3.2.2)
  21
+      activemodel (= 3.2.2)
  22
+      activesupport (= 3.2.2)
  23
+      arel (~> 3.0.2)
  24
+      tzinfo (~> 0.3.29)
  25
+    activeresource (3.2.2)
  26
+      activemodel (= 3.2.2)
  27
+      activesupport (= 3.2.2)
  28
+    activesupport (3.2.2)
  29
+      i18n (~> 0.6)
  30
+      multi_json (~> 1.0)
  31
+    arel (3.0.2)
  32
+    bcrypt-ruby (3.0.1)
  33
+    builder (3.0.0)
  34
+    coffee-rails (3.2.2)
  35
+      coffee-script (>= 2.2.0)
  36
+      railties (~> 3.2.0)
  37
+    coffee-script (2.2.0)
  38
+      coffee-script-source
  39
+      execjs
  40
+    coffee-script-source (1.2.0)
  41
+    erubis (2.7.0)
  42
+    execjs (1.3.0)
  43
+      multi_json (~> 1.0)
  44
+    hike (1.2.1)
  45
+    i18n (0.6.0)
  46
+    journey (1.0.3)
  47
+    jquery-rails (2.0.1)
  48
+      railties (>= 3.2.0, < 5.0)
  49
+      thor (~> 0.14)
  50
+    json (1.6.5)
  51
+    mail (2.4.3)
  52
+      i18n (>= 0.4.0)
  53
+      mime-types (~> 1.16)
  54
+      treetop (~> 1.4.8)
  55
+    mime-types (1.17.2)
  56
+    multi_json (1.1.0)
  57
+    polyglot (0.3.3)
  58
+    rack (1.4.1)
  59
+    rack-cache (1.2)
  60
+      rack (>= 0.4)
  61
+    rack-ssl (1.3.2)
  62
+      rack
  63
+    rack-test (0.6.1)
  64
+      rack (>= 1.0)
  65
+    rails (3.2.2)
  66
+      actionmailer (= 3.2.2)
  67
+      actionpack (= 3.2.2)
  68
+      activerecord (= 3.2.2)
  69
+      activeresource (= 3.2.2)
  70
+      activesupport (= 3.2.2)
  71
+      bundler (~> 1.0)
  72
+      railties (= 3.2.2)
  73
+    railties (3.2.2)
  74
+      actionpack (= 3.2.2)
  75
+      activesupport (= 3.2.2)
  76
+      rack-ssl (~> 1.3.2)
  77
+      rake (>= 0.8.7)
  78
+      rdoc (~> 3.4)
  79
+      thor (~> 0.14.6)
  80
+    rake (0.9.2.2)
  81
+    rdoc (3.12)
  82
+      json (~> 1.4)
  83
+    sass (3.1.15)
  84
+    sass-rails (3.2.4)
  85
+      railties (~> 3.2.0)
  86
+      sass (>= 3.1.10)
  87
+      tilt (~> 1.3)
  88
+    sprockets (2.1.2)
  89
+      hike (~> 1.2)
  90
+      rack (~> 1.0)
  91
+      tilt (~> 1.1, != 1.3.0)
  92
+    sqlite3 (1.3.5)
  93
+    thor (0.14.6)
  94
+    tilt (1.3.3)
  95
+    treetop (1.4.10)
  96
+      polyglot
  97
+      polyglot (>= 0.3.1)
  98
+    tzinfo (0.3.32)
  99
+    uglifier (1.2.3)
  100
+      execjs (>= 0.3.0)
  101
+      multi_json (>= 1.0.2)
  102
+
  103
+PLATFORMS
  104
+  ruby
  105
+
  106
+DEPENDENCIES
  107
+  bcrypt-ruby (~> 3.0.0)
  108
+  coffee-rails (~> 3.2.1)
  109
+  jquery-rails
  110
+  rails (= 3.2.2)
  111
+  sass-rails (~> 3.2.3)
  112
+  sqlite3
  113
+  uglifier (>= 1.0.3)
7  episode-026/social-after/README.rdoc
Source Rendered
... ...
@@ -0,0 +1,7 @@
  1
+= RailsCasts Example Application
  2
+
  3
+Run these commands to try it out.
  4
+
  5
+  bundle
  6
+  rake db:setup
  7
+  rails s
7  episode-026/social-after/Rakefile
... ...
@@ -0,0 +1,7 @@
  1
+#!/usr/bin/env rake
  2
+# Add your own tasks in files placed in lib/tasks ending in .rake,
  3
+# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
  4
+
  5
+require File.expand_path('../config/application', __FILE__)
  6
+
  7
+Social::Application.load_tasks
BIN  episode-026/social-after/app/assets/images/rails.png
15  episode-026/social-after/app/assets/javascripts/application.js
... ...
@@ -0,0 +1,15 @@
  1
+// This is a manifest file that'll be compiled into application.js, which will include all the files
  2
+// listed below.
  3
+//
  4
+// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
  5
+// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
  6
+//
  7
+// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
  8
+// the compiled file.
  9
+//
  10
+// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
  11
+// GO AFTER THE REQUIRES BELOW.
  12
+//
  13
+//= require jquery
  14
+//= require jquery_ujs
  15
+//= require_tree .
3  episode-026/social-after/app/assets/javascripts/projects.js.coffee
... ...
@@ -0,0 +1,3 @@
  1
+# Place all the behaviors and hooks related to the matching controller here.
  2
+# All this logic will automatically be available in application.js.
  3
+# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
3  episode-026/social-after/app/assets/javascripts/users.js.coffee
... ...
@@ -0,0 +1,3 @@
  1
+# Place all the behaviors and hooks related to the matching controller here.
  2
+# All this logic will automatically be available in application.js.
  3
+# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
83  episode-026/social-after/app/assets/stylesheets/application.css
... ...
@@ -0,0 +1,83 @@
  1
+/*
  2
+ * This is a manifest file that'll automatically include all the stylesheets available in this directory
  3
+ * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
  4
+ * the top of the compiled file, but it's generally better to create a new file per style scope.
  5
+ *= require_self
  6
+ *= require_tree . 
  7
+*/
  8
+
  9
+body {
  10
+  background-color: #4B7399;
  11
+  font-family: Verdana, Helvetica, Arial;
  12
+  font-size: 14px;
  13
+}
  14
+
  15
+a img {
  16
+  border: none;
  17
+}
  18
+
  19
+a {
  20
+  color: #0000FF;
  21
+}
  22
+
  23
+.clear {
  24
+  clear: both;
  25
+  height: 0;
  26
+  overflow: hidden;
  27
+}
  28
+
  29
+#container {
  30
+  width: 75%;
  31
+  margin: 0 auto;
  32
+  background-color: #FFF;
  33
+  padding: 20px 40px;
  34
+  border: solid 1px black;
  35
+  margin-top: 20px;
  36
+}
  37
+
  38
+#flash_notice, #flash_error, #flash_alert {
  39
+  padding: 5px 8px;
  40
+  margin: 10px 0;
  41
+}
  42
+
  43
+#flash_notice {
  44
+  background-color: #CFC;
  45
+  border: solid 1px #6C6;
  46
+}
  47
+
  48
+#flash_error, #flash_alert {
  49
+  background-color: #FCC;
  50
+  border: solid 1px #C66;
  51
+}
  52
+
  53
+.fieldWithErrors {
  54
+  display: inline;
  55
+}
  56
+
  57
+ul.errors {
  58
+  width: 400px;
  59
+  border: 2px solid #CF0000;
  60
+  padding: 0px;
  61
+  padding: 10px 30px;
  62
+  margin-bottom: 20px;
  63
+  background-color: #FFDED8;
  64
+  font-size: 12px;
  65
+}
  66
+
  67
+form .field, form .actions {
  68
+  margin: 12px 0;
  69
+}
  70
+
  71
+form label {
  72
+  display: block;
  73
+}
  74
+
  75
+.product h2 {
  76
+  font-size: 16px;
  77
+  margin-bottom: 2px;
  78
+}
  79
+
  80
+h3 {
  81
+  border-top: solid 1px #CCC;
  82
+  padding-top: 10px;
  83
+}
3  episode-026/social-after/app/assets/stylesheets/projects.css.scss
... ...
@@ -0,0 +1,3 @@
  1
+// Place all the styles related to the projects controller here.
  2
+// They will automatically be included in application.css.
  3
+// You can use Sass (SCSS) here: http://sass-lang.com/
3  episode-026/social-after/app/assets/stylesheets/users.css.scss
... ...
@@ -0,0 +1,3 @@
  1
+// Place all the styles related to the users controller here.
  2
+// They will automatically be included in application.css.
  3
+// You can use Sass (SCSS) here: http://sass-lang.com/
3  episode-026/social-after/app/controllers/application_controller.rb
... ...
@@ -0,0 +1,3 @@
  1
+class ApplicationController < ActionController::Base
  2
+  protect_from_forgery
  3
+end
15  episode-026/social-after/app/controllers/projects_controller.rb
... ...
@@ -0,0 +1,15 @@
  1
+class ProjectsController < ApplicationController
  2
+  def new
  3
+    @project = Project.new
  4
+  end
  5
+
  6
+  def create
  7
+    @project = Project.new(params[:project])
  8
+    @project.user = User.first # you would normally add it to the current user
  9
+    if @project.save
  10
+      redirect_to @project.user, notice: "Project has been created"
  11
+    else
  12
+      render "new"
  13
+    end
  14
+  end
  15
+end
22  episode-026/social-after/app/controllers/users_controller.rb
... ...
@@ -0,0 +1,22 @@
  1
+class UsersController < ApplicationController
  2
+  def index
  3
+    @users = User.all
  4
+  end
  5
+
  6
+  def show
  7
+    @user = User.find(params[:id])
  8
+  end
  9
+
  10
+  def edit
  11
+    @user = User.find(params[:id])
  12
+  end
  13
+
  14
+  def update
  15
+    @user = User.find(params[:id])
  16
+    if @user.update_attributes(params[:user])
  17
+      redirect_to @user, notice: "Profile has been updated."
  18
+    else
  19
+      render "edit"
  20
+    end
  21
+  end
  22
+end
2  episode-026/social-after/app/helpers/application_helper.rb
... ...
@@ -0,0 +1,2 @@
  1
+module ApplicationHelper
  2
+end
2  episode-026/social-after/app/helpers/projects_helper.rb
... ...
@@ -0,0 +1,2 @@
  1
+module ProjectsHelper
  2
+end
2  episode-026/social-after/app/helpers/users_helper.rb
... ...
@@ -0,0 +1,2 @@
  1
+module UsersHelper
  2
+end
0  episode-026/social-after/app/mailers/.gitkeep
No changes.
0  episode-026/social-after/app/models/.gitkeep
No changes.
4  episode-026/social-after/app/models/project.rb
... ...
@@ -0,0 +1,4 @@
  1
+class Project < ActiveRecord::Base
  2
+  belongs_to :user
  3
+  attr_accessible :name
  4
+end
4  episode-026/social-after/app/models/user.rb
... ...
@@ -0,0 +1,4 @@
  1
+class User < ActiveRecord::Base
  2
+  has_many :projects
  3
+  attr_accessible :name
  4
+end
17  episode-026/social-after/app/views/layouts/application.html.erb
... ...
@@ -0,0 +1,17 @@
  1
+<!DOCTYPE html>
  2
+<html>
  3
+  <head>
  4
+    <title>Sign Up</title>
  5
+    <%= stylesheet_link_tag    "application", media: "all" %>
  6
+    <%= javascript_include_tag "application" %>
  7
+    <%= csrf_meta_tags %>
  8
+  </head>
  9
+  <body>
  10
+    <div id="container">
  11
+      <% flash.each do |name, msg| %>
  12
+        <%= content_tag :div, msg, id: "flash_#{name}" %>
  13
+      <% end %>
  14
+      <%= yield %>
  15
+    </div>
  16
+  </body>
  17
+</html>
19  episode-026/social-after/app/views/projects/new.html.erb
... ...
@@ -0,0 +1,19 @@
  1
+<h1>New Project</h1>
  2
+
  3
+<%= form_for @project do |f| %>
  4
+  <% if @project.errors.any? %>
  5
+    <ul class="errors">
  6
+    <% @project.errors.full_messages.each do |msg| %>
  7
+      <li><%= msg %></li>
  8
+    <% end %>
  9
+    </ul>
  10
+  <% end %>
  11
+
  12
+  <div class="field">
  13
+    <%= f.label :name %>
  14
+    <%= f.text_field :name %>
  15
+  </div>
  16
+  <div class="actions">
  17
+    <%= f.submit %>
  18
+  </div>
  19
+<% end %>
19  episode-026/social-after/app/views/users/edit.html.erb
... ...
@@ -0,0 +1,19 @@
  1
+<h1>Edit Profile</h1>
  2
+
  3
+<%= form_for @user do |f| %>
  4
+  <% if @user.errors.any? %>
  5
+    <ul class="errors">
  6
+    <% @user.errors.full_messages.each do |msg| %>
  7
+      <li><%= msg %></li>
  8
+    <% end %>
  9
+    </ul>
  10
+  <% end %>
  11
+
  12
+  <div class="field">
  13
+    <%= f.label :name %>
  14
+    <%= f.text_field :name %>
  15
+  </div>
  16
+  <div class="actions">
  17
+    <%= f.submit %>
  18
+  </div>
  19
+<% end %>
7  episode-026/social-after/app/views/users/index.html.erb
... ...
@@ -0,0 +1,7 @@
  1
+<h1>Users</h1>
  2
+
  3
+<ul>
  4
+<% @users.each do |user| %>
  5
+  <li><%= link_to user.name, user %></li>
  6
+<% end %>
  7
+</ul>
22  episode-026/social-after/app/views/users/show.html.erb
... ...
@@ -0,0 +1,22 @@
  1
+<h1>User Profile</h1>
  2
+
  3
+<p>
  4
+  <b>Name:</b>
  5
+  <%= @user.name %>
  6
+</p>
  7
+<p>
  8
+  <b>Admin:</b>
  9
+  <%= @user.admin? ? "Yes" : "No" %>
  10
+</p>
  11
+
  12
+<p><%= link_to "Edit Profile", edit_user_path(@user) %></p>
  13
+
  14
+<h3><%= pluralize @user.projects.size, "Project" %></h3>
  15
+
  16
+<ul>
  17
+<% @user.projects.each do |project| %>
  18
+  <li><%= project.name %></li>
  19
+<% end %>
  20
+</ul>
  21
+
  22
+<%= link_to "New Project", new_project_path %>
4  episode-026/social-after/config.ru
... ...
@@ -0,0 +1,4 @@
  1
+# This file is used by Rack-based servers to start the application.
  2
+
  3
+require ::File.expand_path('../config/environment',  __FILE__)
  4
+run Social::Application
59  episode-026/social-after/config/application.rb
... ...
@@ -0,0 +1,59 @@
  1
+require File.expand_path('../boot', __FILE__)
  2
+
  3
+require 'rails/all'
  4
+
  5
+if defined?(Bundler)
  6
+  # If you precompile assets before deploying to production, use this line
  7
+  Bundler.require(*Rails.groups(:assets => %w(development test)))
  8
+  # If you want your assets lazily compiled in production, use this line
  9
+  # Bundler.require(:default, :assets, Rails.env)
  10
+end
  11
+
  12
+module Social
  13
+  class Application < Rails::Application
  14
+    # Settings in config/environments/* take precedence over those specified here.
  15
+    # Application configuration should go into files in config/initializers
  16
+    # -- all .rb files in that directory are automatically loaded.
  17
+
  18
+    # Custom directories with classes and modules you want to be autoloadable.
  19
+    # config.autoload_paths += %W(#{config.root}/extras)
  20
+
  21
+    # Only load the plugins named here, in the order given (default is alphabetical).
  22
+    # :all can be used as a placeholder for all plugins not explicitly named.
  23
+    # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
  24
+
  25
+    # Activate observers that should always be running.
  26
+    # config.active_record.observers = :cacher, :garbage_collector, :forum_observer
  27
+
  28
+    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
  29
+    # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
  30
+    # config.time_zone = 'Central Time (US & Canada)'
  31
+
  32
+    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
  33
+    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
  34
+    # config.i18n.default_locale = :de
  35
+
  36
+    # Configure the default encoding used in templates for Ruby 1.9.
  37
+    config.encoding = "utf-8"
  38
+
  39
+    # Configure sensitive parameters which will be filtered from the log file.
  40
+    config.filter_parameters += [:password]
  41
+
  42
+    # Use SQL instead of Active Record's schema dumper when creating the database.
  43
+    # This is necessary if your schema can't be completely dumped by the schema dumper,
  44
+    # like if you have constraints or database-specific column types
  45
+    # config.active_record.schema_format = :sql
  46
+
  47
+    # Enforce whitelist mode for mass assignment.
  48
+    # This will create an empty whitelist of attributes available for mass-assignment for all models
  49
+    # in your app. As such, your models will need to explicitly whitelist or blacklist accessible
  50
+    # parameters by using an attr_accessible or attr_protected declaration.
  51
+    config.active_record.whitelist_attributes = true
  52
+
  53
+    # Enable the asset pipeline
  54
+    config.assets.enabled = true
  55
+
  56
+    # Version of your assets, change this if you want to expire all your assets
  57
+    config.assets.version = '1.0'
  58
+  end
  59
+end
6  episode-026/social-after/config/boot.rb
... ...
@@ -0,0 +1,6 @@
  1
+require 'rubygems'
  2
+
  3
+# Set up gems listed in the Gemfile.
  4
+ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
  5
+
  6
+require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
25  episode-026/social-after/config/database.yml
... ...
@@ -0,0 +1,25 @@
  1
+# SQLite version 3.x
  2
+#   gem install sqlite3
  3
+#
  4
+#   Ensure the SQLite 3 gem is defined in your Gemfile
  5
+#   gem 'sqlite3'
  6
+development:
  7
+  adapter: sqlite3
  8
+  database: db/development.sqlite3
  9
+  pool: 5
  10
+  timeout: 5000
  11
+
  12
+# Warning: The database defined as "test" will be erased and
  13
+# re-generated from your development database when you run "rake".
  14
+# Do not set this db to the same as development or production.
  15
+test:
  16
+  adapter: sqlite3
  17
+  database: db/test.sqlite3
  18
+  pool: 5
  19
+  timeout: 5000
  20
+
  21
+production:
  22
+  adapter: sqlite3
  23
+  database: db/production.sqlite3
  24
+  pool: 5
  25
+  timeout: 5000
5  episode-026/social-after/config/environment.rb
... ...
@@ -0,0 +1,5 @@
  1
+# Load the rails application
  2
+require File.expand_path('../application', __FILE__)
  3
+
  4
+# Initialize the rails application
  5
+Social::Application.initialize!
37  episode-026/social-after/config/environments/development.rb
... ...
@@ -0,0 +1,37 @@
  1
+Social::Application.configure do
  2
+  # Settings specified here will take precedence over those in config/application.rb
  3
+
  4
+  # In the development environment your application's code is reloaded on
  5
+  # every request. This slows down response time but is perfect for development
  6
+  # since you don't have to restart the web server when you make code changes.
  7
+  config.cache_classes = false
  8
+
  9
+  # Log error messages when you accidentally call methods on nil.
  10
+  config.whiny_nils = true
  11
+
  12
+  # Show full error reports and disable caching
  13
+  config.consider_all_requests_local       = true
  14
+  config.action_controller.perform_caching = false
  15
+
  16
+  # Don't care if the mailer can't send
  17
+  config.action_mailer.raise_delivery_errors = false
  18
+
  19
+  # Print deprecation notices to the Rails logger
  20
+  config.active_support.deprecation = :log
  21
+
  22
+  # Only use best-standards-support built into browsers
  23
+  config.action_dispatch.best_standards_support = :builtin
  24
+
  25
+  # Raise exception on mass assignment protection for Active Record models
  26
+  config.active_record.mass_assignment_sanitizer = :strict
  27
+
  28
+  # Log the query plan for queries taking more than this (works
  29
+  # with SQLite, MySQL, and PostgreSQL)
  30
+  config.active_record.auto_explain_threshold_in_seconds = 0.5
  31
+
  32
+  # Do not compress assets
  33
+  config.assets.compress = false
  34
+
  35
+  # Expands the lines which load the assets
  36
+  config.assets.debug = true
  37
+end
67  episode-026/social-after/config/environments/production.rb
... ...
@@ -0,0 +1,67 @@
  1
+Social::Application.configure do
  2
+  # Settings specified here will take precedence over those in config/application.rb
  3
+
  4
+  # Code is not reloaded between requests
  5
+  config.cache_classes = true
  6
+
  7
+  # Full error reports are disabled and caching is turned on
  8
+  config.consider_all_requests_local       = false
  9
+  config.action_controller.perform_caching = true
  10
+
  11
+  # Disable Rails's static asset server (Apache or nginx will already do this)
  12
+  config.serve_static_assets = false
  13
+
  14
+  # Compress JavaScripts and CSS
  15
+  config.assets.compress = true
  16
+
  17
+  # Don't fallback to assets pipeline if a precompiled asset is missed
  18
+  config.assets.compile = false
  19
+
  20
+  # Generate digests for assets URLs
  21
+  config.assets.digest = true
  22
+
  23
+  # Defaults to Rails.root.join("public/assets")
  24
+  # config.assets.manifest = YOUR_PATH
  25
+
  26
+  # Specifies the header that your server uses for sending files
  27
+  # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
  28
+  # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
  29
+
  30
+  # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
  31
+  # config.force_ssl = true
  32
+
  33
+  # See everything in the log (default is :info)
  34
+  # config.log_level = :debug
  35
+
  36
+  # Prepend all log lines with the following tags
  37
+  # config.log_tags = [ :subdomain, :uuid ]
  38
+
  39
+  # Use a different logger for distributed setups
  40
+  # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
  41
+
  42
+  # Use a different cache store in production
  43
+  # config.cache_store = :mem_cache_store
  44
+
  45
+  # Enable serving of images, stylesheets, and JavaScripts from an asset server
  46
+  # config.action_controller.asset_host = "http://assets.example.com"
  47
+
  48
+  # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
  49
+  # config.assets.precompile += %w( search.js )
  50
+
  51
+  # Disable delivery errors, bad email addresses will be ignored
  52
+  # config.action_mailer.raise_delivery_errors = false
  53
+
  54
+  # Enable threaded mode
  55
+  # config.threadsafe!
  56
+
  57
+  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
  58
+  # the I18n.default_locale when a translation can not be found)
  59
+  config.i18n.fallbacks = true
  60
+
  61
+  # Send deprecation notices to registered listeners
  62
+  config.active_support.deprecation = :notify
  63
+
  64
+  # Log the query plan for queries taking more than this (works
  65
+  # with SQLite, MySQL, and PostgreSQL)
  66
+  # config.active_record.auto_explain_threshold_in_seconds = 0.5
  67
+end
37  episode-026/social-after/config/environments/test.rb
... ...
@@ -0,0 +1,37 @@
  1
+Social::Application.configure do
  2
+  # Settings specified here will take precedence over those in config/application.rb
  3
+
  4
+  # The test environment is used exclusively to run your application's
  5
+  # test suite. You never need to work with it otherwise. Remember that
  6
+  # your test database is "scratch space" for the test suite and is wiped
  7
+  # and recreated between test runs. Don't rely on the data there!
  8
+  config.cache_classes = true
  9
+
  10
+  # Configure static asset server for tests with Cache-Control for performance
  11
+  config.serve_static_assets = true
  12
+  config.static_cache_control = "public, max-age=3600"
  13
+
  14
+  # Log error messages when you accidentally call methods on nil
  15
+  config.whiny_nils = true
  16
+
  17
+  # Show full error reports and disable caching
  18
+  config.consider_all_requests_local       = true
  19
+  config.action_controller.perform_caching = false
  20
+
  21
+  # Raise exceptions instead of rendering exception templates
  22
+  config.action_dispatch.show_exceptions = false
  23
+
  24
+  # Disable request forgery protection in test environment
  25
+  config.action_controller.allow_forgery_protection    = false
  26
+
  27
+  # Tell Action Mailer not to deliver emails to the real world.
  28
+  # The :test delivery method accumulates sent emails in the
  29
+  # ActionMailer::Base.deliveries array.
  30
+  config.action_mailer.delivery_method = :test
  31
+
  32
+  # Raise exception on mass assignment protection for Active Record models
  33
+  config.active_record.mass_assignment_sanitizer = :strict
  34
+
  35
+  # Print deprecation notices to the stderr
  36
+  config.active_support.deprecation = :stderr
  37
+end
7  episode-026/social-after/config/initializers/backtrace_silencers.rb
... ...
@@ -0,0 +1,7 @@
  1
+# Be sure to restart your server when you modify this file.
  2
+
  3
+# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
  4
+# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
  5
+
  6
+# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
  7
+# Rails.backtrace_cleaner.remove_silencers!
15  episode-026/social-after/config/initializers/inflections.rb
... ...
@@ -0,0 +1,15 @@
  1
+# Be sure to restart your server when you modify this file.
  2
+
  3
+# Add new inflection rules using the following format
  4
+# (all these examples are active by default):
  5
+# ActiveSupport::Inflector.inflections do |inflect|
  6
+#   inflect.plural /^(ox)$/i, '\1en'
  7
+#   inflect.singular /^(ox)en/i, '\1'
  8
+#   inflect.irregular 'person', 'people'
  9
+#   inflect.uncountable %w( fish sheep )
  10
+# end
  11
+#
  12
+# These inflection rules are supported but not enabled by default:
  13
+# ActiveSupport::Inflector.inflections do |inflect|
  14
+#   inflect.acronym 'RESTful'
  15
+# end
5  episode-026/social-after/config/initializers/mime_types.rb
... ...
@@ -0,0 +1,5 @@
  1
+# Be sure to restart your server when you modify this file.
  2
+
  3
+# Add new mime types for use in respond_to blocks:
  4
+# Mime::Type.register "text/richtext", :rtf
  5
+# Mime::Type.register_alias "text/html", :iphone
7  episode-026/social-after/config/initializers/secret_token.rb
... ...
@@ -0,0 +1,7 @@
  1
+# Be sure to restart your server when you modify this file.
  2
+
  3
+# Your secret key for verifying the integrity of signed cookies.
  4
+# If you change this key, all old signed cookies will become invalid!
  5
+# Make sure the secret is at least 30 characters and all random,
  6
+# no regular words or you'll be exposed to dictionary attacks.
  7
+Social::Application.config.secret_token = 'b87fdff86f81615993b0b22db49d6ba683ae601bf5cbfb053bc442877d91cd8ddea9c04e2e498b58eb42588c217fd193b8866ece11120f82e4270d1f9b4a6bd8'
8  episode-026/social-after/config/initializers/session_store.rb
... ...
@@ -0,0 +1,8 @@
  1
+# Be sure to restart your server when you modify this file.
  2
+
  3
+Social::Application.config.session_store :cookie_store, key: '_social_session'
  4
+
  5
+# Use the database for sessions instead of the cookie-based default,
  6
+# which shouldn't be used to store highly confidential information
  7
+# (create the session table with "rails generate session_migration")
  8
+# Social::Application.config.session_store :active_record_store
14  episode-026/social-after/config/initializers/wrap_parameters.rb
... ...
@@ -0,0 +1,14 @@
  1
+# Be sure to restart your server when you modify this file.
  2
+#
  3
+# This file contains settings for ActionController::ParamsWrapper which
  4
+# is enabled by default.
  5
+
  6
+# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
  7
+ActiveSupport.on_load(:action_controller) do
  8
+  wrap_parameters format: [:json]
  9
+end
  10
+
  11
+# Disable root element in JSON by default.
  12
+ActiveSupport.on_load(:active_record) do
  13
+  self.include_root_in_json = false
  14
+end
5  episode-026/social-after/config/locales/en.yml
... ...
@@ -0,0 +1,5 @@
  1
+# Sample localization file for English. Add more files in this directory for other locales.
  2
+# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
  3
+
  4
+en:
  5
+  hello: "Hello world"
5  episode-026/social-after/config/routes.rb
... ...
@@ -0,0 +1,5 @@
  1
+Social::Application.routes.draw do
  2
+  root to: 'users#index'
  3
+  resources :users
  4
+  resources :projects
  5
+end
9  episode-026/social-after/db/migrate/20120307034932_create_users.rb
... ...
@@ -0,0 +1,9 @@
  1
+class CreateUsers < ActiveRecord::Migration
  2
+  def change
  3
+    create_table :users do |t|
  4
+      t.string :name
  5
+      t.boolean :admin, default: false, null: false
  6
+      t.timestamps
  7
+    end
  8
+  end
  9
+end
10  episode-026/social-after/db/migrate/20120308190940_create_projects.rb
... ...
@@ -0,0 +1,10 @@
  1
+class CreateProjects < ActiveRecord::Migration
  2
+  def change
  3
+    create_table :projects do |t|
  4
+      t.integer :user_id
  5
+      t.string :name
  6
+
  7
+      t.timestamps
  8
+    end
  9
+  end
  10
+end
30  episode-026/social-after/db/schema.rb
... ...
@@ -0,0 +1,30 @@
  1
+# encoding: UTF-8
  2
+# This file is auto-generated from the current state of the database. Instead
  3
+# of editing this file, please use the migrations feature of Active Record to
  4
+# incrementally modify your database, and then regenerate this schema definition.
  5
+#
  6
+# Note that this schema.rb definition is the authoritative source for your
  7
+# database schema. If you need to create the application database on another
  8
+# system, you should be using db:schema:load, not running all the migrations
  9
+# from scratch. The latter is a flawed and unsustainable approach (the more migrations
  10
+# you'll amass, the slower it'll run and the greater likelihood for issues).
  11
+#
  12
+# It's strongly recommended to check this file into your version control system.
  13
+
  14
+ActiveRecord::Schema.define(:version => 20120308190940) do
  15
+
  16
+  create_table "projects", :force => true do |t|
  17
+    t.integer  "user_id"
  18
+    t.string   "name"
  19
+    t.datetime "created_at", :null => false
  20
+    t.datetime "updated_at", :null => false
  21
+  end
  22
+
  23
+  create_table "users", :force => true do |t|
  24
+    t.string   "name"
  25
+    t.boolean  "admin",      :default => false, :null => false
  26
+    t.datetime "created_at",                    :null => false
  27
+    t.datetime "updated_at",                    :null => false
  28
+  end
  29
+
  30
+end
3  episode-026/social-after/db/seeds.rb
... ...
@@ -0,0 +1,3 @@
  1
+User.create! name: "Ryan"
  2
+joe = User.create! name: "Joe"
  3
+joe.projects.create! name: "One of Joe's projects"
2  episode-026/social-after/doc/README_FOR_APP
... ...
@@ -0,0 +1,2 @@
  1
+Use this README file to introduce your application and point to useful places in the API for learning more.
  2
+Run "rake doc:app" to generate API documentation for your models, controllers, helpers, and libraries.
0  episode-026/social-after/log/.gitkeep
No changes.
26  episode-026/social-after/public/404.html
... ...
@@ -0,0 +1,26 @@
  1
+<!DOCTYPE html>
  2
+<html>
  3
+<head>
  4
+  <title>The page you were looking for doesn't exist (404)</title>
  5
+  <style type="text/css">
  6
+    body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
  7
+    div.dialog {
  8
+      width: 25em;
  9
+      padding: 0 4em;
  10
+      margin: 4em auto 0 auto;
  11
+      border: 1px solid #ccc;
  12
+      border-right-color: #999;
  13
+      border-bottom-color: #999;
  14
+    }
  15
+    h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
  16
+  </style>
  17
+</head>
  18
+
  19
+<body>
  20
+  <!-- This file lives in public/404.html -->
  21
+  <div class="dialog">
  22
+    <h1>The page you were looking for doesn't exist.</h1>
  23
+    <p>You may have mistyped the address or the page may have moved.</p>
  24
+  </div>
  25
+</body>
  26
+</html>
26  episode-026/social-after/public/422.html
... ...
@@ -0,0 +1,26 @@
  1
+<!DOCTYPE html>
  2
+<html>
  3
+<head>
  4
+  <title>The change you wanted was rejected (422)</title>
  5
+  <style type="text/css">
  6
+    body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
  7
+    div.dialog {
  8
+      width: 25em;
  9
+      padding: 0 4em;
  10
+      margin: 4em auto 0 auto;
  11
+      border: 1px solid #ccc;
  12
+      border-right-color: #999;
  13
+      border-bottom-color: #999;
  14
+    }
  15
+    h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
  16
+  </style>
  17
+</head>
  18
+
  19
+<body>
  20
+  <!-- This file lives in public/422.html -->
  21
+  <div class="dialog">
  22
+    <h1>The change you wanted was rejected.</h1>
  23
+    <p>Maybe you tried to change something you didn't have access to.</p>
  24
+  </div>
  25
+</body>
  26
+</html>
25  episode-026/social-after/public/500.html
... ...
@@ -0,0 +1,25 @@
  1
+<!DOCTYPE html>
  2
+<html>
  3
+<head>
  4
+  <title>We're sorry, but something went wrong (500)</title>
  5
+  <style type="text/css">
  6
+    body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
  7
+    div.dialog {
  8
+      width: 25em;
  9
+      padding: 0 4em;
  10
+      margin: 4em auto 0 auto;
  11
+      border: 1px solid #ccc;
  12
+      border-right-color: #999;
  13
+      border-bottom-color: #999;
  14
+    }
  15
+    h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
  16
+  </style>
  17
+</head>
  18
+
  19
+<body>
  20
+  <!-- This file lives in public/500.html -->
  21
+  <div class="dialog">
  22
+    <h1>We're sorry, but something went wrong.</h1>
  23
+  </div>
  24
+</body>
  25
+</html>
0  episode-026/social-after/public/favicon.ico
No changes.
5  episode-026/social-after/public/robots.txt
... ...
@@ -0,0 +1,5 @@
  1
+# See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
  2
+#
  3
+# To ban all spiders from the entire site uncomment the next two lines:
  4
+# User-Agent: *
  5
+# Disallow: /
6  episode-026/social-after/script/rails
... ...
@@ -0,0 +1,6 @@
  1
+#!/usr/bin/env ruby
  2
+# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
  3
+
  4
+APP_PATH = File.expand_path('../../config/application',  __FILE__)
  5
+require File.expand_path('../../config/boot',  __FILE__)
  6
+require 'rails/commands'
0  episode-026/social-after/test/fixtures/.gitkeep
No changes.
9  episode-026/social-after/test/fixtures/projects.yml
<
... ...
@@ -0,0 +1,9 @@
  1
+# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
  2
+