From a74ce84c21d537911820691c2facf39fbaa3ed28 Mon Sep 17 00:00:00 2001 From: Miriam Cortes Date: Wed, 28 Sep 2016 15:47:23 -0700 Subject: [PATCH 01/17] index view --- .gitignore | 46 ++--- .ruby-gemset | 1 - .ruby-version | 1 - Gemfile | 47 +++++ Gemfile.lock | 163 ++++++++++++++++++ README.rdoc | 28 +++ Rakefile | 6 + app/assets/images/.keep | 0 app/assets/javascripts/application.js | 16 ++ app/assets/javascripts/tasks.coffee | 3 + app/assets/stylesheets/application.css | 15 ++ app/assets/stylesheets/tasks.scss | 3 + app/controllers/application_controller.rb | 5 + app/controllers/concerns/.keep | 0 app/controllers/tasks_controller.rb | 53 ++++++ app/helpers/application_helper.rb | 2 + app/helpers/tasks_helper.rb | 2 + app/mailers/.keep | 0 app/models/.keep | 0 app/models/concerns/.keep | 0 app/views/layouts/application.html.erb | 14 ++ app/views/tasks/create.html.erb | 2 + app/views/tasks/delete.html.erb | 2 + app/views/tasks/edit.html.erb | 2 + app/views/tasks/index.html.erb | 8 + app/views/tasks/new.html.erb | 2 + app/views/tasks/show.html.erb | 2 + app/views/tasks/update.html.erb | 2 + bin/bundle | 3 + bin/rails | 9 + bin/rake | 9 + bin/setup | 29 ++++ bin/spring | 15 ++ config.ru | 4 + config/application.rb | 26 +++ config/boot.rb | 3 + config/database.yml | 25 +++ config/environment.rb | 5 + config/environments/development.rb | 41 +++++ config/environments/production.rb | 79 +++++++++ config/environments/test.rb | 42 +++++ config/initializers/assets.rb | 11 ++ config/initializers/backtrace_silencers.rb | 7 + config/initializers/cookies_serializer.rb | 3 + .../initializers/filter_parameter_logging.rb | 4 + config/initializers/inflections.rb | 16 ++ config/initializers/mime_types.rb | 4 + config/initializers/session_store.rb | 3 + config/initializers/wrap_parameters.rb | 14 ++ config/locales/en.yml | 23 +++ config/routes.rb | 73 ++++++++ config/secrets.yml | 22 +++ db/seeds.rb | 7 + lib/assets/.keep | 0 lib/tasks/.keep | 0 log/.keep | 0 public/404.html | 67 +++++++ public/422.html | 67 +++++++ public/500.html | 66 +++++++ public/favicon.ico | 0 public/robots.txt | 5 + test/controllers/.keep | 0 test/controllers/tasks_controller_test.rb | 39 +++++ test/fixtures/.keep | 0 test/helpers/.keep | 0 test/integration/.keep | 0 test/mailers/.keep | 0 test/models/.keep | 0 test/test_helper.rb | 10 ++ vendor/assets/javascripts/.keep | 0 vendor/assets/stylesheets/.keep | 0 71 files changed, 1122 insertions(+), 34 deletions(-) delete mode 100644 .ruby-gemset delete mode 100644 .ruby-version create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 README.rdoc create mode 100644 Rakefile create mode 100644 app/assets/images/.keep create mode 100644 app/assets/javascripts/application.js create mode 100644 app/assets/javascripts/tasks.coffee create mode 100644 app/assets/stylesheets/application.css create mode 100644 app/assets/stylesheets/tasks.scss create mode 100644 app/controllers/application_controller.rb create mode 100644 app/controllers/concerns/.keep create mode 100644 app/controllers/tasks_controller.rb create mode 100644 app/helpers/application_helper.rb create mode 100644 app/helpers/tasks_helper.rb create mode 100644 app/mailers/.keep create mode 100644 app/models/.keep create mode 100644 app/models/concerns/.keep create mode 100644 app/views/layouts/application.html.erb create mode 100644 app/views/tasks/create.html.erb create mode 100644 app/views/tasks/delete.html.erb create mode 100644 app/views/tasks/edit.html.erb create mode 100644 app/views/tasks/index.html.erb create mode 100644 app/views/tasks/new.html.erb create mode 100644 app/views/tasks/show.html.erb create mode 100644 app/views/tasks/update.html.erb create mode 100755 bin/bundle create mode 100755 bin/rails create mode 100755 bin/rake create mode 100755 bin/setup create mode 100755 bin/spring create mode 100644 config.ru create mode 100644 config/application.rb create mode 100644 config/boot.rb create mode 100644 config/database.yml create mode 100644 config/environment.rb create mode 100644 config/environments/development.rb create mode 100644 config/environments/production.rb create mode 100644 config/environments/test.rb create mode 100644 config/initializers/assets.rb create mode 100644 config/initializers/backtrace_silencers.rb create mode 100644 config/initializers/cookies_serializer.rb create mode 100644 config/initializers/filter_parameter_logging.rb create mode 100644 config/initializers/inflections.rb create mode 100644 config/initializers/mime_types.rb create mode 100644 config/initializers/session_store.rb create mode 100644 config/initializers/wrap_parameters.rb create mode 100644 config/locales/en.yml create mode 100644 config/routes.rb create mode 100644 config/secrets.yml create mode 100644 db/seeds.rb create mode 100644 lib/assets/.keep create mode 100644 lib/tasks/.keep create mode 100644 log/.keep create mode 100644 public/404.html create mode 100644 public/422.html create mode 100644 public/500.html create mode 100644 public/favicon.ico create mode 100644 public/robots.txt create mode 100644 test/controllers/.keep create mode 100644 test/controllers/tasks_controller_test.rb create mode 100644 test/fixtures/.keep create mode 100644 test/helpers/.keep create mode 100644 test/integration/.keep create mode 100644 test/mailers/.keep create mode 100644 test/models/.keep create mode 100644 test/test_helper.rb create mode 100644 vendor/assets/javascripts/.keep create mode 100644 vendor/assets/stylesheets/.keep diff --git a/.gitignore b/.gitignore index 28f484983..050c9d95c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,35 +1,17 @@ -*.gem -*.rbc -/.config -/coverage/ -/InstalledFiles -/pkg/ -/spec/reports/ -/test/tmp/ -/test/version_tmp/ -/tmp/ +# See https://help.github.com/articles/ignoring-files for more about ignoring files. +# +# If you find yourself ignoring temporary files generated by your text editor +# or operating system, you probably want to add a global ignore instead: +# git config --global core.excludesfile '~/.gitignore_global' -## Specific to RubyMotion: -.dat* -.repl_history -build/ +# Ignore bundler config. +/.bundle -## Documentation cache and generated files: -/.yardoc/ -/_yardoc/ -/doc/ -/rdoc/ +# Ignore the default SQLite database. +/db/*.sqlite3 +/db/*.sqlite3-journal -## Environment normalisation: -/.bundle/ -/vendor/bundle -/lib/bundler/man/ - -# for a library or gem, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# Gemfile.lock -# .ruby-version -# .ruby-gemset - -# unless supporting rvm < 1.11.0 or doing something fancy, ignore this: -.rvmrc +# Ignore all logfiles and tempfiles. +/log/* +!/log/.keep +/tmp diff --git a/.ruby-gemset b/.ruby-gemset deleted file mode 100644 index 5d2410e51..000000000 --- a/.ruby-gemset +++ /dev/null @@ -1 +0,0 @@ -TaskListRails diff --git a/.ruby-version b/.ruby-version deleted file mode 100644 index 276cbf9e2..000000000 --- a/.ruby-version +++ /dev/null @@ -1 +0,0 @@ -2.3.0 diff --git a/Gemfile b/Gemfile new file mode 100644 index 000000000..e87fad5fc --- /dev/null +++ b/Gemfile @@ -0,0 +1,47 @@ +source 'https://rubygems.org' + + +# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' +gem 'rails', '4.2.7' +# Use sqlite3 as the database for Active Record +gem 'sqlite3' +# Use SCSS for stylesheets +gem 'sass-rails', '~> 5.0' +# Use Uglifier as compressor for JavaScript assets +gem 'uglifier', '>= 1.3.0' +# Use CoffeeScript for .coffee assets and views +gem 'coffee-rails', '~> 4.1.0' +# See https://github.com/rails/execjs#readme for more supported runtimes +# gem 'therubyracer', platforms: :ruby + +# Use jquery as the JavaScript library +gem 'jquery-rails' +# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks +gem 'turbolinks' +# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder +gem 'jbuilder', '~> 2.0' +# bundle exec rake doc:rails generates the API under doc/api. +gem 'sdoc', '~> 0.4.0', group: :doc + +# Use ActiveModel has_secure_password +# gem 'bcrypt', '~> 3.1.7' + +# Use Unicorn as the app server +# gem 'unicorn' + +# Use Capistrano for deployment +# gem 'capistrano-rails', group: :development + +group :development, :test do + # Call 'byebug' anywhere in the code to stop execution and get a debugger console + gem 'byebug' +end + +group :development do + # Access an IRB console on exception pages or by using <%= console %> in views + gem 'web-console', '~> 2.0' + + # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring + gem 'spring' +end + diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 000000000..187046034 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,163 @@ +GEM + remote: https://rubygems.org/ + specs: + actionmailer (4.2.7) + actionpack (= 4.2.7) + actionview (= 4.2.7) + activejob (= 4.2.7) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 1.0, >= 1.0.5) + actionpack (4.2.7) + actionview (= 4.2.7) + activesupport (= 4.2.7) + rack (~> 1.6) + rack-test (~> 0.6.2) + rails-dom-testing (~> 1.0, >= 1.0.5) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + actionview (4.2.7) + activesupport (= 4.2.7) + builder (~> 3.1) + erubis (~> 2.7.0) + rails-dom-testing (~> 1.0, >= 1.0.5) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + activejob (4.2.7) + activesupport (= 4.2.7) + globalid (>= 0.3.0) + activemodel (4.2.7) + activesupport (= 4.2.7) + builder (~> 3.1) + activerecord (4.2.7) + activemodel (= 4.2.7) + activesupport (= 4.2.7) + arel (~> 6.0) + activesupport (4.2.7) + i18n (~> 0.7) + json (~> 1.7, >= 1.7.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + arel (6.0.3) + binding_of_caller (0.7.2) + debug_inspector (>= 0.0.1) + builder (3.2.2) + byebug (9.0.5) + coffee-rails (4.1.1) + coffee-script (>= 2.2.0) + railties (>= 4.0.0, < 5.1.x) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.10.0) + concurrent-ruby (1.0.2) + debug_inspector (0.0.2) + erubis (2.7.0) + execjs (2.7.0) + globalid (0.3.7) + activesupport (>= 4.1.0) + i18n (0.7.0) + jbuilder (2.6.0) + activesupport (>= 3.0.0, < 5.1) + multi_json (~> 1.2) + jquery-rails (4.2.1) + rails-dom-testing (>= 1, < 3) + railties (>= 4.2.0) + thor (>= 0.14, < 2.0) + json (1.8.3) + loofah (2.0.3) + nokogiri (>= 1.5.9) + mail (2.6.4) + mime-types (>= 1.16, < 4) + mime-types (3.1) + mime-types-data (~> 3.2015) + mime-types-data (3.2016.0521) + mini_portile2 (2.1.0) + minitest (5.9.1) + multi_json (1.12.1) + nokogiri (1.6.8) + mini_portile2 (~> 2.1.0) + pkg-config (~> 1.1.7) + pkg-config (1.1.7) + rack (1.6.4) + rack-test (0.6.3) + rack (>= 1.0) + rails (4.2.7) + actionmailer (= 4.2.7) + actionpack (= 4.2.7) + actionview (= 4.2.7) + activejob (= 4.2.7) + activemodel (= 4.2.7) + activerecord (= 4.2.7) + activesupport (= 4.2.7) + bundler (>= 1.3.0, < 2.0) + railties (= 4.2.7) + sprockets-rails + rails-deprecated_sanitizer (1.0.3) + activesupport (>= 4.2.0.alpha) + rails-dom-testing (1.0.7) + activesupport (>= 4.2.0.beta, < 5.0) + nokogiri (~> 1.6.0) + rails-deprecated_sanitizer (>= 1.0.1) + rails-html-sanitizer (1.0.3) + loofah (~> 2.0) + railties (4.2.7) + actionpack (= 4.2.7) + activesupport (= 4.2.7) + rake (>= 0.8.7) + thor (>= 0.18.1, < 2.0) + rake (11.3.0) + rdoc (4.2.2) + json (~> 1.4) + sass (3.4.22) + sass-rails (5.0.6) + railties (>= 4.0.0, < 6) + sass (~> 3.1) + sprockets (>= 2.8, < 4.0) + sprockets-rails (>= 2.0, < 4.0) + tilt (>= 1.1, < 3) + sdoc (0.4.1) + json (~> 1.7, >= 1.7.7) + rdoc (~> 4.0) + spring (1.7.2) + sprockets (3.7.0) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.2.0) + actionpack (>= 4.0) + activesupport (>= 4.0) + sprockets (>= 3.0.0) + sqlite3 (1.3.11) + thor (0.19.1) + thread_safe (0.3.5) + tilt (2.0.5) + turbolinks (5.0.1) + turbolinks-source (~> 5) + turbolinks-source (5.0.0) + tzinfo (1.2.2) + thread_safe (~> 0.1) + uglifier (3.0.2) + execjs (>= 0.3.0, < 3) + web-console (2.3.0) + activemodel (>= 4.0) + binding_of_caller (>= 0.7.2) + railties (>= 4.0) + sprockets-rails (>= 2.0, < 4.0) + +PLATFORMS + ruby + +DEPENDENCIES + byebug + coffee-rails (~> 4.1.0) + jbuilder (~> 2.0) + jquery-rails + rails (= 4.2.7) + sass-rails (~> 5.0) + sdoc (~> 0.4.0) + spring + sqlite3 + turbolinks + uglifier (>= 1.3.0) + web-console (~> 2.0) + +BUNDLED WITH + 1.13.1 diff --git a/README.rdoc b/README.rdoc new file mode 100644 index 000000000..dd4e97e22 --- /dev/null +++ b/README.rdoc @@ -0,0 +1,28 @@ +== README + +This README would normally document whatever steps are necessary to get the +application up and running. + +Things you may want to cover: + +* Ruby version + +* System dependencies + +* Configuration + +* Database creation + +* Database initialization + +* How to run the test suite + +* Services (job queues, cache servers, search engines, etc.) + +* Deployment instructions + +* ... + + +Please feel free to use a different markup language if you do not plan to run +rake doc:app. diff --git a/Rakefile b/Rakefile new file mode 100644 index 000000000..ba6b733dd --- /dev/null +++ b/Rakefile @@ -0,0 +1,6 @@ +# Add your own tasks in files placed in lib/tasks ending in .rake, +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. + +require File.expand_path('../config/application', __FILE__) + +Rails.application.load_tasks diff --git a/app/assets/images/.keep b/app/assets/images/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js new file mode 100644 index 000000000..e07c5a830 --- /dev/null +++ b/app/assets/javascripts/application.js @@ -0,0 +1,16 @@ +// This is a manifest file that'll be compiled into application.js, which will include all the files +// listed below. +// +// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, +// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. +// +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// compiled file. +// +// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details +// about supported directives. +// +//= require jquery +//= require jquery_ujs +//= require turbolinks +//= require_tree . diff --git a/app/assets/javascripts/tasks.coffee b/app/assets/javascripts/tasks.coffee new file mode 100644 index 000000000..24f83d18b --- /dev/null +++ b/app/assets/javascripts/tasks.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css new file mode 100644 index 000000000..f9cd5b348 --- /dev/null +++ b/app/assets/stylesheets/application.css @@ -0,0 +1,15 @@ +/* + * This is a manifest file that'll be compiled into application.css, which will include all the files + * listed below. + * + * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, + * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path. + * + * You're free to add application-wide styles to this file and they'll appear at the bottom of the + * compiled file so the styles you add here take precedence over styles defined in any styles + * defined in the other CSS/SCSS files in this directory. It is generally better to create a new + * file per style scope. + * + *= require_tree . + *= require_self + */ diff --git a/app/assets/stylesheets/tasks.scss b/app/assets/stylesheets/tasks.scss new file mode 100644 index 000000000..b57862ec7 --- /dev/null +++ b/app/assets/stylesheets/tasks.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the tasks controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb new file mode 100644 index 000000000..d83690e1b --- /dev/null +++ b/app/controllers/application_controller.rb @@ -0,0 +1,5 @@ +class ApplicationController < ActionController::Base + # Prevent CSRF attacks by raising an exception. + # For APIs, you may want to use :null_session instead. + protect_from_forgery with: :exception +end diff --git a/app/controllers/concerns/.keep b/app/controllers/concerns/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb new file mode 100644 index 000000000..e98c8c818 --- /dev/null +++ b/app/controllers/tasks_controller.rb @@ -0,0 +1,53 @@ +class TasksController < ApplicationController + def index + @tasks = TasksController.alltasks + end + + def new + end + + def show + @tasks = TasksController.alltasks + @mytask = nil + + @tasks.each do |task| + number = params[:id].to_i + if task[:id] == number + @mytask = task + end + end + if @mytask == nil + render :file => 'public/404.html', :status => :not_found, :layout => false + end + end + + def delete + end + + def edit + end + + def update + end + + def create + end + + def self.alltasks + [ + { id: 1, + thing: "Brush hair", + status: false, + complete_date: nil}, + { id: 2, + thing: "Go to ADA", + status: false, + complete_date: nil}, + { id: 3, + thing: "Make lame developer joke", + status: true, + complete_date: nil} + ] + end + +end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb new file mode 100644 index 000000000..de6be7945 --- /dev/null +++ b/app/helpers/application_helper.rb @@ -0,0 +1,2 @@ +module ApplicationHelper +end diff --git a/app/helpers/tasks_helper.rb b/app/helpers/tasks_helper.rb new file mode 100644 index 000000000..ce894d00c --- /dev/null +++ b/app/helpers/tasks_helper.rb @@ -0,0 +1,2 @@ +module TasksHelper +end diff --git a/app/mailers/.keep b/app/mailers/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/app/models/.keep b/app/models/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/app/models/concerns/.keep b/app/models/concerns/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb new file mode 100644 index 000000000..46eeb110b --- /dev/null +++ b/app/views/layouts/application.html.erb @@ -0,0 +1,14 @@ + + + + TaskListRails + <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> + <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> + <%= csrf_meta_tags %> + + + +<%= yield %> + + + diff --git a/app/views/tasks/create.html.erb b/app/views/tasks/create.html.erb new file mode 100644 index 000000000..fcad439c4 --- /dev/null +++ b/app/views/tasks/create.html.erb @@ -0,0 +1,2 @@ +

Tasks#create

+

Find me in app/views/tasks/create.html.erb

diff --git a/app/views/tasks/delete.html.erb b/app/views/tasks/delete.html.erb new file mode 100644 index 000000000..ea72c29cf --- /dev/null +++ b/app/views/tasks/delete.html.erb @@ -0,0 +1,2 @@ +

Tasks#delete

+

Find me in app/views/tasks/delete.html.erb

diff --git a/app/views/tasks/edit.html.erb b/app/views/tasks/edit.html.erb new file mode 100644 index 000000000..374190308 --- /dev/null +++ b/app/views/tasks/edit.html.erb @@ -0,0 +1,2 @@ +

Tasks#edit

+

Find me in app/views/tasks/edit.html.erb

diff --git a/app/views/tasks/index.html.erb b/app/views/tasks/index.html.erb new file mode 100644 index 000000000..1d674b449 --- /dev/null +++ b/app/views/tasks/index.html.erb @@ -0,0 +1,8 @@ +

Hey grrrrl...I see that index page

+<% @tasks.each do |task| %> +
+ +

<%= link_to( task[:thing], show_path(task[:id]) ) %>

+ +
+<% end %> diff --git a/app/views/tasks/new.html.erb b/app/views/tasks/new.html.erb new file mode 100644 index 000000000..2484008a3 --- /dev/null +++ b/app/views/tasks/new.html.erb @@ -0,0 +1,2 @@ +

Tasks#new

+

Find me in app/views/tasks/new.html.erb

diff --git a/app/views/tasks/show.html.erb b/app/views/tasks/show.html.erb new file mode 100644 index 000000000..1139224db --- /dev/null +++ b/app/views/tasks/show.html.erb @@ -0,0 +1,2 @@ +

Tasks#show

+

Find me in app/views/tasks/show.html.erb

diff --git a/app/views/tasks/update.html.erb b/app/views/tasks/update.html.erb new file mode 100644 index 000000000..fdb1ea609 --- /dev/null +++ b/app/views/tasks/update.html.erb @@ -0,0 +1,2 @@ +

Tasks#update

+

Find me in app/views/tasks/update.html.erb

diff --git a/bin/bundle b/bin/bundle new file mode 100755 index 000000000..66e9889e8 --- /dev/null +++ b/bin/bundle @@ -0,0 +1,3 @@ +#!/usr/bin/env ruby +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) +load Gem.bin_path('bundler', 'bundle') diff --git a/bin/rails b/bin/rails new file mode 100755 index 000000000..0138d79b7 --- /dev/null +++ b/bin/rails @@ -0,0 +1,9 @@ +#!/usr/bin/env ruby +begin + load File.expand_path('../spring', __FILE__) +rescue LoadError => e + raise unless e.message.include?('spring') +end +APP_PATH = File.expand_path('../../config/application', __FILE__) +require_relative '../config/boot' +require 'rails/commands' diff --git a/bin/rake b/bin/rake new file mode 100755 index 000000000..d87d5f578 --- /dev/null +++ b/bin/rake @@ -0,0 +1,9 @@ +#!/usr/bin/env ruby +begin + load File.expand_path('../spring', __FILE__) +rescue LoadError => e + raise unless e.message.include?('spring') +end +require_relative '../config/boot' +require 'rake' +Rake.application.run diff --git a/bin/setup b/bin/setup new file mode 100755 index 000000000..acdb2c138 --- /dev/null +++ b/bin/setup @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +require 'pathname' + +# path to your application root. +APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) + +Dir.chdir APP_ROOT do + # This script is a starting point to setup your application. + # Add necessary setup steps to this file: + + puts "== Installing dependencies ==" + system "gem install bundler --conservative" + system "bundle check || bundle install" + + # puts "\n== Copying sample files ==" + # unless File.exist?("config/database.yml") + # system "cp config/database.yml.sample config/database.yml" + # end + + puts "\n== Preparing database ==" + system "bin/rake db:setup" + + puts "\n== Removing old logs and tempfiles ==" + system "rm -f log/*" + system "rm -rf tmp/cache" + + puts "\n== Restarting application server ==" + system "touch tmp/restart.txt" +end diff --git a/bin/spring b/bin/spring new file mode 100755 index 000000000..7fe232c3a --- /dev/null +++ b/bin/spring @@ -0,0 +1,15 @@ +#!/usr/bin/env ruby + +# This file loads spring without using Bundler, in order to be fast. +# It gets overwritten when you run the `spring binstub` command. + +unless defined?(Spring) + require 'rubygems' + require 'bundler' + + if (match = Bundler.default_lockfile.read.match(/^GEM$.*?^ (?: )*spring \((.*?)\)$.*?^$/m)) + Gem.paths = { 'GEM_PATH' => [Bundler.bundle_path.to_s, *Gem.path].uniq.join(Gem.path_separator) } + gem 'spring', match[1] + require 'spring/binstub' + end +end diff --git a/config.ru b/config.ru new file mode 100644 index 000000000..bd83b2541 --- /dev/null +++ b/config.ru @@ -0,0 +1,4 @@ +# This file is used by Rack-based servers to start the application. + +require ::File.expand_path('../config/environment', __FILE__) +run Rails.application diff --git a/config/application.rb b/config/application.rb new file mode 100644 index 000000000..902432bad --- /dev/null +++ b/config/application.rb @@ -0,0 +1,26 @@ +require File.expand_path('../boot', __FILE__) + +require 'rails/all' + +# Require the gems listed in Gemfile, including any gems +# you've limited to :test, :development, or :production. +Bundler.require(*Rails.groups) + +module TaskListRails + class Application < Rails::Application + # Settings in config/environments/* take precedence over those specified here. + # Application configuration should go into files in config/initializers + # -- all .rb files in that directory are automatically loaded. + + # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. + # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. + # config.time_zone = 'Central Time (US & Canada)' + + # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. + # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] + # config.i18n.default_locale = :de + + # Do not swallow errors in after_commit/after_rollback callbacks. + config.active_record.raise_in_transactional_callbacks = true + end +end diff --git a/config/boot.rb b/config/boot.rb new file mode 100644 index 000000000..6b750f00b --- /dev/null +++ b/config/boot.rb @@ -0,0 +1,3 @@ +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) + +require 'bundler/setup' # Set up gems listed in the Gemfile. diff --git a/config/database.yml b/config/database.yml new file mode 100644 index 000000000..1c1a37ca8 --- /dev/null +++ b/config/database.yml @@ -0,0 +1,25 @@ +# SQLite version 3.x +# gem install sqlite3 +# +# Ensure the SQLite 3 gem is defined in your Gemfile +# gem 'sqlite3' +# +default: &default + adapter: sqlite3 + pool: 5 + timeout: 5000 + +development: + <<: *default + database: db/development.sqlite3 + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: + <<: *default + database: db/test.sqlite3 + +production: + <<: *default + database: db/production.sqlite3 diff --git a/config/environment.rb b/config/environment.rb new file mode 100644 index 000000000..ee8d90dc6 --- /dev/null +++ b/config/environment.rb @@ -0,0 +1,5 @@ +# Load the Rails application. +require File.expand_path('../application', __FILE__) + +# Initialize the Rails application. +Rails.application.initialize! diff --git a/config/environments/development.rb b/config/environments/development.rb new file mode 100644 index 000000000..b55e2144b --- /dev/null +++ b/config/environments/development.rb @@ -0,0 +1,41 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # In the development environment your application's code is reloaded on + # every request. This slows down response time but is perfect for development + # since you don't have to restart the web server when you make code changes. + config.cache_classes = false + + # Do not eager load code on boot. + config.eager_load = false + + # Show full error reports and disable caching. + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + + # Don't care if the mailer can't send. + config.action_mailer.raise_delivery_errors = false + + # Print deprecation notices to the Rails logger. + config.active_support.deprecation = :log + + # Raise an error on page load if there are pending migrations. + config.active_record.migration_error = :page_load + + # Debug mode disables concatenation and preprocessing of assets. + # This option may cause significant delays in view rendering with a large + # number of complex assets. + config.assets.debug = true + + # Asset digests allow you to set far-future HTTP expiration dates on all assets, + # yet still be able to expire them through the digest params. + config.assets.digest = true + + # Adds additional error checking when serving assets at runtime. + # Checks for improperly declared sprockets dependencies. + # Raises helpful error messages. + config.assets.raise_runtime_errors = true + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true +end diff --git a/config/environments/production.rb b/config/environments/production.rb new file mode 100644 index 000000000..5c1b32e48 --- /dev/null +++ b/config/environments/production.rb @@ -0,0 +1,79 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # Code is not reloaded between requests. + config.cache_classes = true + + # Eager load code on boot. This eager loads most of Rails and + # your application in memory, allowing both threaded web servers + # and those relying on copy on write to perform better. + # Rake tasks automatically ignore this option for performance. + config.eager_load = true + + # Full error reports are disabled and caching is turned on. + config.consider_all_requests_local = false + config.action_controller.perform_caching = true + + # Enable Rack::Cache to put a simple HTTP cache in front of your application + # Add `rack-cache` to your Gemfile before enabling this. + # For large-scale production use, consider using a caching reverse proxy like + # NGINX, varnish or squid. + # config.action_dispatch.rack_cache = true + + # Disable serving static files from the `/public` folder by default since + # Apache or NGINX already handles this. + config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present? + + # Compress JavaScripts and CSS. + config.assets.js_compressor = :uglifier + # config.assets.css_compressor = :sass + + # Do not fallback to assets pipeline if a precompiled asset is missed. + config.assets.compile = false + + # Asset digests allow you to set far-future HTTP expiration dates on all assets, + # yet still be able to expire them through the digest params. + config.assets.digest = true + + # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb + + # Specifies the header that your server uses for sending files. + # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache + # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX + + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. + # config.force_ssl = true + + # Use the lowest log level to ensure availability of diagnostic information + # when problems arise. + config.log_level = :debug + + # Prepend all log lines with the following tags. + # config.log_tags = [ :subdomain, :uuid ] + + # Use a different logger for distributed setups. + # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) + + # Use a different cache store in production. + # config.cache_store = :mem_cache_store + + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.action_controller.asset_host = 'http://assets.example.com' + + # Ignore bad email addresses and do not raise email delivery errors. + # Set this to true and configure the email server for immediate delivery to raise delivery errors. + # config.action_mailer.raise_delivery_errors = false + + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to + # the I18n.default_locale when a translation cannot be found). + config.i18n.fallbacks = true + + # Send deprecation notices to registered listeners. + config.active_support.deprecation = :notify + + # Use default logging formatter so that PID and timestamp are not suppressed. + config.log_formatter = ::Logger::Formatter.new + + # Do not dump schema after migrations. + config.active_record.dump_schema_after_migration = false +end diff --git a/config/environments/test.rb b/config/environments/test.rb new file mode 100644 index 000000000..1c19f08b2 --- /dev/null +++ b/config/environments/test.rb @@ -0,0 +1,42 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # The test environment is used exclusively to run your application's + # test suite. You never need to work with it otherwise. Remember that + # your test database is "scratch space" for the test suite and is wiped + # and recreated between test runs. Don't rely on the data there! + config.cache_classes = true + + # Do not eager load code on boot. This avoids loading your whole application + # just for the purpose of running a single test. If you are using a tool that + # preloads Rails for running tests, you may have to set it to true. + config.eager_load = false + + # Configure static file server for tests with Cache-Control for performance. + config.serve_static_files = true + config.static_cache_control = 'public, max-age=3600' + + # Show full error reports and disable caching. + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + + # Raise exceptions instead of rendering exception templates. + config.action_dispatch.show_exceptions = false + + # Disable request forgery protection in test environment. + config.action_controller.allow_forgery_protection = false + + # Tell Action Mailer not to deliver emails to the real world. + # The :test delivery method accumulates sent emails in the + # ActionMailer::Base.deliveries array. + config.action_mailer.delivery_method = :test + + # Randomize the order test cases are executed. + config.active_support.test_order = :random + + # Print deprecation notices to the stderr. + config.active_support.deprecation = :stderr + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true +end diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb new file mode 100644 index 000000000..01ef3e663 --- /dev/null +++ b/config/initializers/assets.rb @@ -0,0 +1,11 @@ +# Be sure to restart your server when you modify this file. + +# Version of your assets, change this if you want to expire all your assets. +Rails.application.config.assets.version = '1.0' + +# Add additional assets to the asset load path +# Rails.application.config.assets.paths << Emoji.images_path + +# Precompile additional assets. +# application.js, application.css, and all non-JS/CSS in app/assets folder are already added. +# Rails.application.config.assets.precompile += %w( search.js ) diff --git a/config/initializers/backtrace_silencers.rb b/config/initializers/backtrace_silencers.rb new file mode 100644 index 000000000..59385cdf3 --- /dev/null +++ b/config/initializers/backtrace_silencers.rb @@ -0,0 +1,7 @@ +# Be sure to restart your server when you modify this file. + +# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. +# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } + +# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. +# Rails.backtrace_cleaner.remove_silencers! diff --git a/config/initializers/cookies_serializer.rb b/config/initializers/cookies_serializer.rb new file mode 100644 index 000000000..7f70458de --- /dev/null +++ b/config/initializers/cookies_serializer.rb @@ -0,0 +1,3 @@ +# Be sure to restart your server when you modify this file. + +Rails.application.config.action_dispatch.cookies_serializer = :json diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb new file mode 100644 index 000000000..4a994e1e7 --- /dev/null +++ b/config/initializers/filter_parameter_logging.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Configure sensitive parameters which will be filtered from the log file. +Rails.application.config.filter_parameters += [:password] diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb new file mode 100644 index 000000000..ac033bf9d --- /dev/null +++ b/config/initializers/inflections.rb @@ -0,0 +1,16 @@ +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format. Inflections +# are locale specific, and you may define rules for as many different +# locales as you wish. All of these examples are active by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.plural /^(ox)$/i, '\1en' +# inflect.singular /^(ox)en/i, '\1' +# inflect.irregular 'person', 'people' +# inflect.uncountable %w( fish sheep ) +# end + +# These inflection rules are supported but not enabled by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.acronym 'RESTful' +# end diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb new file mode 100644 index 000000000..dc1899682 --- /dev/null +++ b/config/initializers/mime_types.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Add new mime types for use in respond_to blocks: +# Mime::Type.register "text/richtext", :rtf diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb new file mode 100644 index 000000000..15d065a84 --- /dev/null +++ b/config/initializers/session_store.rb @@ -0,0 +1,3 @@ +# Be sure to restart your server when you modify this file. + +Rails.application.config.session_store :cookie_store, key: '_TaskListRails_session' diff --git a/config/initializers/wrap_parameters.rb b/config/initializers/wrap_parameters.rb new file mode 100644 index 000000000..33725e95f --- /dev/null +++ b/config/initializers/wrap_parameters.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. + +# This file contains settings for ActionController::ParamsWrapper which +# is enabled by default. + +# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. +ActiveSupport.on_load(:action_controller) do + wrap_parameters format: [:json] if respond_to?(:wrap_parameters) +end + +# To enable root element in JSON for ActiveRecord objects. +# ActiveSupport.on_load(:active_record) do +# self.include_root_in_json = true +# end diff --git a/config/locales/en.yml b/config/locales/en.yml new file mode 100644 index 000000000..065395716 --- /dev/null +++ b/config/locales/en.yml @@ -0,0 +1,23 @@ +# Files in the config/locales directory are used for internationalization +# and are automatically loaded by Rails. If you want to use locales other +# than English, add the necessary files in this directory. +# +# To use the locales, use `I18n.t`: +# +# I18n.t 'hello' +# +# In views, this is aliased to just `t`: +# +# <%= t('hello') %> +# +# To use a different locale, set it with `I18n.locale`: +# +# I18n.locale = :es +# +# This would use the information in config/locales/es.yml. +# +# To learn more, please read the Rails Internationalization guide +# available at http://guides.rubyonrails.org/i18n.html. + +en: + hello: "Hello world" diff --git a/config/routes.rb b/config/routes.rb new file mode 100644 index 000000000..93a408740 --- /dev/null +++ b/config/routes.rb @@ -0,0 +1,73 @@ +Rails.application.routes.draw do + + root to: 'tasks#index' + + get 'tasks/index', as: 'index' + + get 'tasks/new' => 'tasks#new', as: 'new' + + get 'tasks/show/:id' => 'tasks#show', as: 'show' + + delete 'tasks/:id/delete' => 'tasks#delete', as: 'delete' +# can this be /delete?? yes, but it's not convention so definitely don't do it for models + get 'tasks/edit' => 'tasks#edit', as: 'edit' + + get 'tasks/:id/update' => 'posts#update' + + post 'tasks/create' => 'posts#create', as: 'create' + + # The priority is based upon order of creation: first created -> highest priority. + # See how all your routes lay out with "rake routes". + + # You can have the root of your site routed with "root" + # root 'welcome#index' + + # Example of regular route: + # get 'products/:id' => 'catalog#view' + + # Example of named route that can be invoked with purchase_url(id: product.id) + # get 'products/:id/purchase' => 'catalog#purchase', as: :purchase + + # Example resource route (maps HTTP verbs to controller actions automatically): + # resources :products + + # Example resource route with options: + # resources :products do + # member do + # get 'short' + # post 'toggle' + # end + # + # collection do + # get 'sold' + # end + # end + + # Example resource route with sub-resources: + # resources :products do + # resources :comments, :sales + # resource :seller + # end + + # Example resource route with more complex sub-resources: + # resources :products do + # resources :comments + # resources :sales do + # get 'recent', on: :collection + # end + # end + + # Example resource route with concerns: + # concern :toggleable do + # post 'toggle' + # end + # resources :posts, concerns: :toggleable + # resources :photos, concerns: :toggleable + + # Example resource route within a namespace: + # namespace :admin do + # # Directs /admin/products/* to Admin::ProductsController + # # (app/controllers/admin/products_controller.rb) + # resources :products + # end +end diff --git a/config/secrets.yml b/config/secrets.yml new file mode 100644 index 000000000..a96171319 --- /dev/null +++ b/config/secrets.yml @@ -0,0 +1,22 @@ +# Be sure to restart your server when you modify this file. + +# Your secret key is used for verifying the integrity of signed cookies. +# If you change this key, all old signed cookies will become invalid! + +# Make sure the secret is at least 30 characters and all random, +# no regular words or you'll be exposed to dictionary attacks. +# You can use `rake secret` to generate a secure secret key. + +# Make sure the secrets in this file are kept private +# if you're sharing your code publicly. + +development: + secret_key_base: 9df0012e40b823526a4173da68a755e3012416da71a16c2e1527638b72fd21f2ddc1f00b598f4dfb255a61f6573f292bab760748ca35c4cef8ab1790ea8846df + +test: + secret_key_base: 4329f2b9143091f1840db0bf65a38e9a320607cf40cb8f28522ad5e358732f14fd2b7401b5be87674f73a44ed5648863274cb5ce3ca0a6af0abd90ad3204222b + +# Do not keep production secrets in the repository, +# instead read values from the environment. +production: + secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> diff --git a/db/seeds.rb b/db/seeds.rb new file mode 100644 index 000000000..4edb1e857 --- /dev/null +++ b/db/seeds.rb @@ -0,0 +1,7 @@ +# This file should contain all the record creation needed to seed the database with its default values. +# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup). +# +# Examples: +# +# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) +# Mayor.create(name: 'Emanuel', city: cities.first) diff --git a/lib/assets/.keep b/lib/assets/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/lib/tasks/.keep b/lib/tasks/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/log/.keep b/log/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/public/404.html b/public/404.html new file mode 100644 index 000000000..b612547fc --- /dev/null +++ b/public/404.html @@ -0,0 +1,67 @@ + + + + The page you were looking for doesn't exist (404) + + + + + + +
+
+

The page you were looking for doesn't exist.

+

You may have mistyped the address or the page may have moved.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/public/422.html b/public/422.html new file mode 100644 index 000000000..a21f82b3b --- /dev/null +++ b/public/422.html @@ -0,0 +1,67 @@ + + + + The change you wanted was rejected (422) + + + + + + +
+
+

The change you wanted was rejected.

+

Maybe you tried to change something you didn't have access to.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/public/500.html b/public/500.html new file mode 100644 index 000000000..061abc587 --- /dev/null +++ b/public/500.html @@ -0,0 +1,66 @@ + + + + We're sorry, but something went wrong (500) + + + + + + +
+
+

We're sorry, but something went wrong.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 000000000..e69de29bb diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 000000000..3c9c7c01f --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,5 @@ +# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file +# +# To ban all spiders from the entire site uncomment the next two lines: +# User-agent: * +# Disallow: / diff --git a/test/controllers/.keep b/test/controllers/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/test/controllers/tasks_controller_test.rb b/test/controllers/tasks_controller_test.rb new file mode 100644 index 000000000..fd0792be8 --- /dev/null +++ b/test/controllers/tasks_controller_test.rb @@ -0,0 +1,39 @@ +require 'test_helper' + +class TasksControllerTest < ActionController::TestCase + test "should get index" do + get :index + assert_response :success + end + + test "should get new" do + get :new + assert_response :success + end + + test "should get show" do + get :show + assert_response :success + end + + test "should get delete" do + get :delete + assert_response :success + end + + test "should get edit" do + get :edit + assert_response :success + end + + test "should get update" do + get :update + assert_response :success + end + + test "should get create" do + get :create + assert_response :success + end + +end diff --git a/test/fixtures/.keep b/test/fixtures/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/test/helpers/.keep b/test/helpers/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/test/integration/.keep b/test/integration/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/test/mailers/.keep b/test/mailers/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/test/models/.keep b/test/models/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/test/test_helper.rb b/test/test_helper.rb new file mode 100644 index 000000000..92e39b2d7 --- /dev/null +++ b/test/test_helper.rb @@ -0,0 +1,10 @@ +ENV['RAILS_ENV'] ||= 'test' +require File.expand_path('../../config/environment', __FILE__) +require 'rails/test_help' + +class ActiveSupport::TestCase + # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. + fixtures :all + + # Add more helper methods to be used by all tests here... +end diff --git a/vendor/assets/javascripts/.keep b/vendor/assets/javascripts/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/vendor/assets/stylesheets/.keep b/vendor/assets/stylesheets/.keep new file mode 100644 index 000000000..e69de29bb From 8bb9606779c516bda9346d8487d53947402a2433 Mon Sep 17 00:00:00 2001 From: Miriam Cortes Date: Wed, 28 Sep 2016 16:08:30 -0700 Subject: [PATCH 02/17] show page working --- app/views/tasks/show.html.erb | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/views/tasks/show.html.erb b/app/views/tasks/show.html.erb index 1139224db..87ec05c7c 100644 --- a/app/views/tasks/show.html.erb +++ b/app/views/tasks/show.html.erb @@ -1,2 +1,11 @@ -

Tasks#show

-

Find me in app/views/tasks/show.html.erb

+

Grrrl, I see you trying to get on that Show page

+ +
+

<%= @mytask[:thing] %>

+

Completed? <%= @mytask[:status] %>

+

Completion date: <%= @mytask[:complete_date] %>

+

<%= link_to( "Edit", edit_path(@mytask[:id]) ) %>

+

<%= link_to( "Delete", delete_path(@mytask[:id]) ) %>

+ + +
From ad6f0cdf5d035162b37677930a208c6379e7c182 Mon Sep 17 00:00:00 2001 From: Miriam Cortes Date: Wed, 28 Sep 2016 16:16:33 -0700 Subject: [PATCH 03/17] added a back link to view all tasks --- app/controllers/tasks_controller.rb | 3 +++ app/views/tasks/show.html.erb | 9 ++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb index e98c8c818..6594104be 100644 --- a/app/controllers/tasks_controller.rb +++ b/app/controllers/tasks_controller.rb @@ -37,14 +37,17 @@ def self.alltasks [ { id: 1, thing: "Brush hair", + description: "grab comb and drag it through your damn hair...seriously? Is this a question you have??? #failedatlife", status: false, complete_date: nil}, { id: 2, thing: "Go to ADA", + description: "leave house, turn right, walk 2 blocks, board either 11 or 49, get off at 4th, walk south however many blocks.", status: false, complete_date: nil}, { id: 3, thing: "Make lame developer joke", + description: "self explanatory", status: true, complete_date: nil} ] diff --git a/app/views/tasks/show.html.erb b/app/views/tasks/show.html.erb index 87ec05c7c..afa5e78a1 100644 --- a/app/views/tasks/show.html.erb +++ b/app/views/tasks/show.html.erb @@ -3,9 +3,12 @@

<%= @mytask[:thing] %>

Completed? <%= @mytask[:status] %>

-

Completion date: <%= @mytask[:complete_date] %>

-

<%= link_to( "Edit", edit_path(@mytask[:id]) ) %>

-

<%= link_to( "Delete", delete_path(@mytask[:id]) ) %>

+
Description: <%= @mytask[:description] %>
+
Completion date: <%= @mytask[:complete_date] %>
+ +

<%= link_to( "Back", index_path() ) %>

+
From 83e5c55aa9ab03f1470e22eb928e66f8aa1bcc47 Mon Sep 17 00:00:00 2001 From: Miriam Cortes Date: Thu, 29 Sep 2016 09:42:03 -0700 Subject: [PATCH 04/17] commented out edit and delete buttons for now --- app/views/tasks/show.html.erb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/tasks/show.html.erb b/app/views/tasks/show.html.erb index afa5e78a1..e4934edb5 100644 --- a/app/views/tasks/show.html.erb +++ b/app/views/tasks/show.html.erb @@ -7,6 +7,7 @@
Completion date: <%= @mytask[:complete_date] %>

<%= link_to( "Back", index_path() ) %>

+ From a5ac25ad0adc82fbb99f22eac82d2977dff09170 Mon Sep 17 00:00:00 2001 From: Miriam Cortes Date: Thu, 29 Sep 2016 15:42:17 -0700 Subject: [PATCH 05/17] index page up --- app/controllers/tasks_controller.rb | 78 +++++++++++++---------- app/models/task.rb | 2 + app/views/layouts/application.html.erb | 9 +++ config/routes.rb | 5 +- db/migrate/20160929221343_create_tasks.rb | 12 ++++ db/schema.rb | 25 ++++++++ test/fixtures/tasks.yml | 13 ++++ test/models/task_test.rb | 7 ++ 8 files changed, 116 insertions(+), 35 deletions(-) create mode 100644 app/models/task.rb create mode 100644 db/migrate/20160929221343_create_tasks.rb create mode 100644 db/schema.rb create mode 100644 test/fixtures/tasks.yml create mode 100644 test/models/task_test.rb diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb index 6594104be..32ab1d746 100644 --- a/app/controllers/tasks_controller.rb +++ b/app/controllers/tasks_controller.rb @@ -1,56 +1,70 @@ class TasksController < ApplicationController def index - @tasks = TasksController.alltasks + @tasks = Task.all end def new + @task = Task.new end def show - @tasks = TasksController.alltasks - @mytask = nil - - @tasks.each do |task| - number = params[:id].to_i - if task[:id] == number - @mytask = task - end - end - if @mytask == nil - render :file => 'public/404.html', :status => :not_found, :layout => false - end + @task = Task.find(params[:id].to_i) + # @tasks = TasksController.alltasks + # @mytask = nil + + # @tasks.each do |task| + # number = params[:id].to_i + # if task[:id] == number + # @mytask = task + # end + # end + # if @mytask == nil + # render :file => 'public/404.html', :status => :not_found, :layout => false + # end end def delete end def edit + show end def update + show + + @task[:thing] = params["thing"] + @task[:description] = params["description"] + @task[:status] = params["status"] end def create + @params = params + @task = Task.new + @task.thing = params[:task][:thing] + @task.description = params[:task][:description] + @task.status = params[:task][:status] + @task.save end - def self.alltasks - [ - { id: 1, - thing: "Brush hair", - description: "grab comb and drag it through your damn hair...seriously? Is this a question you have??? #failedatlife", - status: false, - complete_date: nil}, - { id: 2, - thing: "Go to ADA", - description: "leave house, turn right, walk 2 blocks, board either 11 or 49, get off at 4th, walk south however many blocks.", - status: false, - complete_date: nil}, - { id: 3, - thing: "Make lame developer joke", - description: "self explanatory", - status: true, - complete_date: nil} - ] - end + # def self.alltasks + # [ + # { id: 1, + # thing: "Brush hair", + # description: "grab comb and drag it through your damn hair...seriously? Is this a question you have??? #failedatlife", + # status: false, + # complete_date: nil}, + # { id: 2, + # thing: "Go to ADA", + # description: "leave house, turn right, walk 2 blocks, board either 11 or 49, get off at 4th, walk south however many blocks.", + # status: false, + # complete_date: nil}, + # { id: 3, + # thing: "Make lame developer joke", + # description: "self explanatory", + # status: true, + # complete_date: nil} + # ] + # end end diff --git a/app/models/task.rb b/app/models/task.rb new file mode 100644 index 000000000..935f76e12 --- /dev/null +++ b/app/models/task.rb @@ -0,0 +1,2 @@ +class Task < ActiveRecord::Base +end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 46eeb110b..5dc047798 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -7,6 +7,15 @@ <%= csrf_meta_tags %> +
+ + +
<%= yield %> diff --git a/config/routes.rb b/config/routes.rb index 93a408740..c7373b4cb 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -5,17 +5,16 @@ get 'tasks/index', as: 'index' get 'tasks/new' => 'tasks#new', as: 'new' + post 'tasks/create' => 'posts#create', as: 'create' get 'tasks/show/:id' => 'tasks#show', as: 'show' delete 'tasks/:id/delete' => 'tasks#delete', as: 'delete' # can this be /delete?? yes, but it's not convention so definitely don't do it for models - get 'tasks/edit' => 'tasks#edit', as: 'edit' + get 'tasks/edit' => 'tasks#edit', as: 'edit' get 'tasks/:id/update' => 'posts#update' - post 'tasks/create' => 'posts#create', as: 'create' - # The priority is based upon order of creation: first created -> highest priority. # See how all your routes lay out with "rake routes". diff --git a/db/migrate/20160929221343_create_tasks.rb b/db/migrate/20160929221343_create_tasks.rb new file mode 100644 index 000000000..663d63e89 --- /dev/null +++ b/db/migrate/20160929221343_create_tasks.rb @@ -0,0 +1,12 @@ +class CreateTasks < ActiveRecord::Migration + def change + create_table :tasks do |t| + t.string :thing + t.string :description + t.boolean :status + t.datetime :complete_date + + t.timestamps null: false + end + end +end diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 000000000..813476171 --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,25 @@ +# encoding: UTF-8 +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended that you check this file into your version control system. + +ActiveRecord::Schema.define(version: 20160929221343) do + + create_table "tasks", force: :cascade do |t| + t.string "thing" + t.string "description" + t.boolean "status" + t.datetime "complete_date" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + +end diff --git a/test/fixtures/tasks.yml b/test/fixtures/tasks.yml new file mode 100644 index 000000000..5400c50ed --- /dev/null +++ b/test/fixtures/tasks.yml @@ -0,0 +1,13 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + thing: MyString + description: MyString + status: false + complete_date: 2016-09-29 15:13:43 + +two: + thing: MyString + description: MyString + status: false + complete_date: 2016-09-29 15:13:43 diff --git a/test/models/task_test.rb b/test/models/task_test.rb new file mode 100644 index 000000000..3ca215970 --- /dev/null +++ b/test/models/task_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class TaskTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end From 4e4fc96b8dda36c7ddc06c31689f22b831c75c08 Mon Sep 17 00:00:00 2001 From: Miriam Cortes Date: Thu, 29 Sep 2016 16:43:07 -0700 Subject: [PATCH 06/17] working new task button and pages --- app/controllers/tasks_controller.rb | 5 +++++ app/views/tasks/create.html.erb | 12 ++++++++++-- app/views/tasks/new.html.erb | 25 +++++++++++++++++++++++-- app/views/tasks/show.html.erb | 18 ++++++++---------- config/routes.rb | 4 ++-- 5 files changed, 48 insertions(+), 16 deletions(-) diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb index 32ab1d746..29d5563f7 100644 --- a/app/controllers/tasks_controller.rb +++ b/app/controllers/tasks_controller.rb @@ -36,6 +36,10 @@ def update @task[:thing] = params["thing"] @task[:description] = params["description"] @task[:status] = params["status"] + + if @task[:status] + @task[:complete_date] = Time.now + end end def create @@ -44,6 +48,7 @@ def create @task.thing = params[:task][:thing] @task.description = params[:task][:description] @task.status = params[:task][:status] + @task.complete_date = params[:task][:complete_date] @task.save end diff --git a/app/views/tasks/create.html.erb b/app/views/tasks/create.html.erb index fcad439c4..4456407f5 100644 --- a/app/views/tasks/create.html.erb +++ b/app/views/tasks/create.html.erb @@ -1,2 +1,10 @@ -

Tasks#create

-

Find me in app/views/tasks/create.html.erb

+
+

Get off this app & do something!

+ +

<%= @params %>

+

<%= @task.thing %>

+

<%= @task.description %>

+

<%= @task.status %>

+

<%= @task.complete_date %>

+ +
diff --git a/app/views/tasks/new.html.erb b/app/views/tasks/new.html.erb index 2484008a3..40189941d 100644 --- a/app/views/tasks/new.html.erb +++ b/app/views/tasks/new.html.erb @@ -1,2 +1,23 @@ -

Tasks#new

-

Find me in app/views/tasks/new.html.erb

+

Create a new Task

+ +<%= form_for @task,as: :task, url: create_path do |task_a| %> +

+ <%= task_a.label :thing %> + <%= task_a.text_field :thing %> +

+ +

+ <%= task_a.label :description %> + <%= task_a.text_area :description %> +

+ +

+ <%= task_a.label :Completed %> + <%= task_a.check_box :status %> +

+ +

+ <%= task_a.submit %> +

+ +<% end %> diff --git a/app/views/tasks/show.html.erb b/app/views/tasks/show.html.erb index e4934edb5..cdc5df617 100644 --- a/app/views/tasks/show.html.erb +++ b/app/views/tasks/show.html.erb @@ -1,15 +1,13 @@

Grrrl, I see you trying to get on that Show page

-
-

<%= @mytask[:thing] %>

-

Completed? <%= @mytask[:status] %>

-
Description: <%= @mytask[:description] %>
-
Completion date: <%= @mytask[:complete_date] %>
- -

<%= link_to( "Back", index_path() ) %>

- - +

<%= @task.thing %>

+

Completed? <%= @task.status %>

+
Description: <%= @task.description %>
+
Completion date: <%= @task.complete_date %>
+ +

<%= button_to( "Edit Task", {action: "edit", id: @task[:id]}, method: :get ) %>

+

<%= button_to( "Delete Task",{action: "delete", id: @task[:id]}, method: :delete, data: {confirm: "Are you sure?"}) %> +

diff --git a/config/routes.rb b/config/routes.rb index c7373b4cb..08deee49f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -5,7 +5,7 @@ get 'tasks/index', as: 'index' get 'tasks/new' => 'tasks#new', as: 'new' - post 'tasks/create' => 'posts#create', as: 'create' + post 'tasks/create' => 'tasks#create', as: 'create' get 'tasks/show/:id' => 'tasks#show', as: 'show' @@ -13,7 +13,7 @@ # can this be /delete?? yes, but it's not convention so definitely don't do it for models get 'tasks/edit' => 'tasks#edit', as: 'edit' - get 'tasks/:id/update' => 'posts#update' + get 'tasks/:id/update' => 'tasks#update' # The priority is based upon order of creation: first created -> highest priority. # See how all your routes lay out with "rake routes". From 7cae7e3a26d324a6151cb44e83e8a5c979f1ab0f Mon Sep 17 00:00:00 2001 From: Miriam Cortes Date: Thu, 29 Sep 2016 17:31:06 -0700 Subject: [PATCH 07/17] working delete method --- app/controllers/tasks_controller.rb | 19 +++++++------------ app/views/tasks/delete.html.erb | 3 +-- app/views/tasks/index.html.erb | 2 -- app/views/tasks/show.html.erb | 2 +- 4 files changed, 9 insertions(+), 17 deletions(-) diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb index 29d5563f7..4fa02c5da 100644 --- a/app/controllers/tasks_controller.rb +++ b/app/controllers/tasks_controller.rb @@ -9,21 +9,15 @@ def new def show @task = Task.find(params[:id].to_i) - # @tasks = TasksController.alltasks - # @mytask = nil - - # @tasks.each do |task| - # number = params[:id].to_i - # if task[:id] == number - # @mytask = task - # end - # end - # if @mytask == nil - # render :file => 'public/404.html', :status => :not_found, :layout => false - # end end def delete + task.destroy + redirect_to :index + end + + def task + @task ||= Task.find(params[:id].to_i) end def edit @@ -50,6 +44,7 @@ def create @task.status = params[:task][:status] @task.complete_date = params[:task][:complete_date] @task.save + redirect_to :index end # def self.alltasks diff --git a/app/views/tasks/delete.html.erb b/app/views/tasks/delete.html.erb index ea72c29cf..752a075b4 100644 --- a/app/views/tasks/delete.html.erb +++ b/app/views/tasks/delete.html.erb @@ -1,2 +1 @@ -

Tasks#delete

-

Find me in app/views/tasks/delete.html.erb

+ diff --git a/app/views/tasks/index.html.erb b/app/views/tasks/index.html.erb index 1d674b449..75dd6cdb5 100644 --- a/app/views/tasks/index.html.erb +++ b/app/views/tasks/index.html.erb @@ -1,8 +1,6 @@

Hey grrrrl...I see that index page

<% @tasks.each do |task| %>
-

<%= link_to( task[:thing], show_path(task[:id]) ) %>

-
<% end %> diff --git a/app/views/tasks/show.html.erb b/app/views/tasks/show.html.erb index cdc5df617..728fa9961 100644 --- a/app/views/tasks/show.html.erb +++ b/app/views/tasks/show.html.erb @@ -6,7 +6,7 @@
Completion date: <%= @task.complete_date %>

<%= button_to( "Edit Task", {action: "edit", id: @task[:id]}, method: :get ) %>

-

<%= button_to( "Delete Task",{action: "delete", id: @task[:id]}, method: :delete, data: {confirm: "Are you sure?"}) %> +

<%= button_to( "Delete Task",{action: "delete", id: @task[:id]}, method: :delete, data: {confirm: "Don't just delete because you're lazy... πŸ™„"}) %>

From db0b43d0c3ba6cc1b1d29da0ab53693647f836c7 Mon Sep 17 00:00:00 2001 From: Miriam Cortes Date: Sat, 1 Oct 2016 17:17:04 -0700 Subject: [PATCH 08/17] mark complete button working --- app/controllers/tasks_controller.rb | 60 +++++++++++++++-------------- app/views/tasks/create.html.erb | 8 ++-- app/views/tasks/edit.html.erb | 23 ++++++++++- app/views/tasks/index.html.erb | 21 +++++++++- app/views/tasks/show.html.erb | 12 ++++-- app/views/tasks/update.html.erb | 8 +++- config/routes.rb | 59 ++-------------------------- 7 files changed, 95 insertions(+), 96 deletions(-) diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb index 4fa02c5da..6c4448252 100644 --- a/app/controllers/tasks_controller.rb +++ b/app/controllers/tasks_controller.rb @@ -25,15 +25,12 @@ def edit end def update - show - - @task[:thing] = params["thing"] - @task[:description] = params["description"] - @task[:status] = params["status"] - - if @task[:status] - @task[:complete_date] = Time.now - end + @task = task + @task.thing = params[:thing] + @task.description = params[:description] + @task.status = params[:status] + @task.save + redirect_to :index end def create @@ -42,29 +39,34 @@ def create @task.thing = params[:task][:thing] @task.description = params[:task][:description] @task.status = params[:task][:status] - @task.complete_date = params[:task][:complete_date] + if @task.status + @task.complete_date = Time.now + end @task.save redirect_to :index end - # def self.alltasks - # [ - # { id: 1, - # thing: "Brush hair", - # description: "grab comb and drag it through your damn hair...seriously? Is this a question you have??? #failedatlife", - # status: false, - # complete_date: nil}, - # { id: 2, - # thing: "Go to ADA", - # description: "leave house, turn right, walk 2 blocks, board either 11 or 49, get off at 4th, walk south however many blocks.", - # status: false, - # complete_date: nil}, - # { id: 3, - # thing: "Make lame developer joke", - # description: "self explanatory", - # status: true, - # complete_date: nil} - # ] - # end + def mark_complete + @task = task + # show + @task.status = true + @task.complete_date = Time.now + @task.save + redirect_to :index + end + + def mark_incomplete + show + @task = task + @task.status = false + @task.complete_date = nil + @task.save + redirect_to :index + end + + private + def post_params + params.require(:task).permit(:thing, :description) + end end diff --git a/app/views/tasks/create.html.erb b/app/views/tasks/create.html.erb index 4456407f5..59efae6b9 100644 --- a/app/views/tasks/create.html.erb +++ b/app/views/tasks/create.html.erb @@ -1,5 +1,7 @@ -
-

Get off this app & do something!

+ + + diff --git a/app/views/tasks/edit.html.erb b/app/views/tasks/edit.html.erb index 374190308..76b74d77a 100644 --- a/app/views/tasks/edit.html.erb +++ b/app/views/tasks/edit.html.erb @@ -1,2 +1,21 @@ -

Tasks#edit

-

Find me in app/views/tasks/edit.html.erb

+

Edit a Task

+ +
+ + + +
+ + +
+ + +
+ + + <%= tag(:input, :type => "hidden", :name => request_forgery_protection_token.to_s, :value => form_authenticity_token) %> + + +
diff --git a/app/views/tasks/index.html.erb b/app/views/tasks/index.html.erb index 75dd6cdb5..8082736d9 100644 --- a/app/views/tasks/index.html.erb +++ b/app/views/tasks/index.html.erb @@ -1,6 +1,23 @@ -

Hey grrrrl...I see that index page

+

Hey grrrrl...let's get stuff done

+Ryan Renolds is cheering for your success <% @tasks.each do |task| %> +
-

<%= link_to( task[:thing], show_path(task[:id]) ) %>

+ <% if task[:status] %> +

<%= link_to( task[:thing], show_path(task[:id]) ) %> β˜‘

+

+ <%= button_to( "Mark incomplete", {action: "mark_incomplete", id: task[:id]}, method: :post ) %> +

+ <% else %> +

<%= link_to( task[:thing], show_path(task[:id]) ) %>

+

+ <%= button_to( "Mark Complete", {action: "mark_complete", id: task[:id]}, method: :post ) %> +

+ <% end %> +
    +
  • <%= button_to( "Edit Task", {action: "edit", id: task[:id]}, method: :get ) %>
  • +
  • <%= button_to( "Delete Task",{action: "delete", id: task[:id]}, method: :delete, data: {confirm: "Don't just delete because you're lazy... πŸ™„"}) %>
  • +
+
<% end %> diff --git a/app/views/tasks/show.html.erb b/app/views/tasks/show.html.erb index 728fa9961..39b622ce9 100644 --- a/app/views/tasks/show.html.erb +++ b/app/views/tasks/show.html.erb @@ -5,9 +5,15 @@
Description: <%= @task.description %>
Completion date: <%= @task.complete_date %>
-

<%= button_to( "Edit Task", {action: "edit", id: @task[:id]}, method: :get ) %>

-

<%= button_to( "Delete Task",{action: "delete", id: @task[:id]}, method: :delete, data: {confirm: "Don't just delete because you're lazy... πŸ™„"}) %> -

+
    + <% if @task[:status] %> +
  • + <% else %> +
  • + <% end %> + +
  • <%= button_to( "Delete Task",{action: "delete", id: @task[:id]}, method: :delete, data: {confirm: "Don't just delete because you're lazy... πŸ™„"}) %>
  • +
diff --git a/app/views/tasks/update.html.erb b/app/views/tasks/update.html.erb index fdb1ea609..78a70ab4f 100644 --- a/app/views/tasks/update.html.erb +++ b/app/views/tasks/update.html.erb @@ -1,2 +1,6 @@ -

Tasks#update

-

Find me in app/views/tasks/update.html.erb

+ + + + + + diff --git a/config/routes.rb b/config/routes.rb index 08deee49f..71f7d5502 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -12,61 +12,10 @@ delete 'tasks/:id/delete' => 'tasks#delete', as: 'delete' # can this be /delete?? yes, but it's not convention so definitely don't do it for models - get 'tasks/edit' => 'tasks#edit', as: 'edit' - get 'tasks/:id/update' => 'tasks#update' + get 'tasks/:id/edit' => 'tasks#edit', as: 'edit' + get 'tasks/:id/update' => 'tasks#update', as: 'update' - # The priority is based upon order of creation: first created -> highest priority. - # See how all your routes lay out with "rake routes". + post 'tasks/:id/mark_complete' => 'tasks#mark_complete', as: 'mark_complete' - # You can have the root of your site routed with "root" - # root 'welcome#index' - - # Example of regular route: - # get 'products/:id' => 'catalog#view' - - # Example of named route that can be invoked with purchase_url(id: product.id) - # get 'products/:id/purchase' => 'catalog#purchase', as: :purchase - - # Example resource route (maps HTTP verbs to controller actions automatically): - # resources :products - - # Example resource route with options: - # resources :products do - # member do - # get 'short' - # post 'toggle' - # end - # - # collection do - # get 'sold' - # end - # end - - # Example resource route with sub-resources: - # resources :products do - # resources :comments, :sales - # resource :seller - # end - - # Example resource route with more complex sub-resources: - # resources :products do - # resources :comments - # resources :sales do - # get 'recent', on: :collection - # end - # end - - # Example resource route with concerns: - # concern :toggleable do - # post 'toggle' - # end - # resources :posts, concerns: :toggleable - # resources :photos, concerns: :toggleable - - # Example resource route within a namespace: - # namespace :admin do - # # Directs /admin/products/* to Admin::ProductsController - # # (app/controllers/admin/products_controller.rb) - # resources :products - # end + post 'tasks/:id/mark_incomplete' => 'tasks#mark_incomplete', as: 'mark_incomplete' end From b8c59238d21e9c08319d5e66c07dad98d01a5113 Mon Sep 17 00:00:00 2001 From: Miriam Cortes Date: Sun, 2 Oct 2016 12:04:17 -0700 Subject: [PATCH 09/17] show page has all three buttons- edit, delete, mark complete --- app/views/tasks/show.html.erb | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/app/views/tasks/show.html.erb b/app/views/tasks/show.html.erb index 39b622ce9..8bcb05647 100644 --- a/app/views/tasks/show.html.erb +++ b/app/views/tasks/show.html.erb @@ -1,17 +1,24 @@ -

Grrrl, I see you trying to get on that Show page

+

Grrrl, I see you trying to get on that Show page

-

<%= @task.thing %>

-

Completed? <%= @task.status %>

-
Description: <%= @task.description %>
-
Completion date: <%= @task.complete_date %>
+

<%= @task.thing %>

+

Description: <%= @task.description %>

+ +
Completed? + <% if @task.status %> + CHECK!
+ Completion date: <%= @task.complete_date %> + <% else %> + NOPE! + <% end %> +
    <% if @task[:status] %> -
  • +
  • <%= button_to( "Mark incomplete", {action: "mark_incomplete", id: @task[:id]}, method: :post ) %>
  • <% else %> -
  • +
  • <%= button_to( "Mark Complete", {action: "mark_complete", id: @task[:id]}, method: :post ) %>
  • <% end %> - +
  • <%= button_to( "Edit Task", {action: "edit", id: @task[:id]}, method: :get ) %>
  • <%= button_to( "Delete Task",{action: "delete", id: @task[:id]}, method: :delete, data: {confirm: "Don't just delete because you're lazy... πŸ™„"}) %>
From a50a85878c27ae1d02c32c5792951d07e5427e4b Mon Sep 17 00:00:00 2001 From: Miriam Cortes Date: Sun, 2 Oct 2016 12:26:09 -0700 Subject: [PATCH 10/17] styling --- app/assets/stylesheets/application.css | 51 ++++++++++++++++++-------- app/views/tasks/index.html.erb | 23 ++++++------ 2 files changed, 48 insertions(+), 26 deletions(-) diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index f9cd5b348..adc5eeac0 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -1,15 +1,36 @@ -/* - * This is a manifest file that'll be compiled into application.css, which will include all the files - * listed below. - * - * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, - * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path. - * - * You're free to add application-wide styles to this file and they'll appear at the bottom of the - * compiled file so the styles you add here take precedence over styles defined in any styles - * defined in the other CSS/SCSS files in this directory. It is generally better to create a new - * file per style scope. - * - *= require_tree . - *= require_self - */ +body { + background-color: #f2f2f2; + font-family: 'Arial'; + position: absolute; + width: 100% +} +/*YELLOW BAND @ TOP*/ +header { + /*width: 100%;*/ + background-color: #ffff80; + margin-top: 10px; + margin: 1%; +} + +/*LINKS @ TOP*/ +nav ul { + font-size: 1rem; +} + +li { + display: inline; + text-align: left; +} + +a { + color: black; + padding: 3%; +} + +form.button_to { + display: inline-block; +} + +img { + float: none; +} diff --git a/app/views/tasks/index.html.erb b/app/views/tasks/index.html.erb index 8082736d9..bd355520f 100644 --- a/app/views/tasks/index.html.erb +++ b/app/views/tasks/index.html.erb @@ -3,18 +3,19 @@ <% @tasks.each do |task| %>
- <% if task[:status] %> -

<%= link_to( task[:thing], show_path(task[:id]) ) %> β˜‘

-

- <%= button_to( "Mark incomplete", {action: "mark_incomplete", id: task[:id]}, method: :post ) %> -

- <% else %> -

<%= link_to( task[:thing], show_path(task[:id]) ) %>

-

- <%= button_to( "Mark Complete", {action: "mark_complete", id: task[:id]}, method: :post ) %> -

- <% end %>
    + <% if task[:status] %> +

    <%= link_to( task[:thing], show_path(task[:id]) ) %> β˜‘

    +
  • + <%= button_to( "Mark incomplete", {action: "mark_incomplete", id: task[:id]}, method: :post ) %> +
  • + <% else %> +

    <%= link_to( task[:thing], show_path(task[:id]) ) %>

    +
  • + <%= button_to( "Mark Complete", {action: "mark_complete", id: task[:id]}, method: :post ) %> +
  • + <% end %> +
  • <%= button_to( "Edit Task", {action: "edit", id: task[:id]}, method: :get ) %>
  • <%= button_to( "Delete Task",{action: "delete", id: task[:id]}, method: :delete, data: {confirm: "Don't just delete because you're lazy... πŸ™„"}) %>
From 96853d1a7a00403586e9952cccf7cab081b3f482 Mon Sep 17 00:00:00 2001 From: Miriam Date: Mon, 3 Oct 2016 09:29:38 -0700 Subject: [PATCH 11/17] Reflection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit What went well? Connecting the dots between the examples that we did in class and this exercise. I thought that the class examples were a really great reflection of what the assignment was and that we went through it piece by piece so that it didn't feel overwhelming. Nice job, instructors! It should be said that the image was only inserted as a revenge tactic for our instructors 😈 /method of making me and my peers laugh πŸ˜‚ /encouragement for the user😁 . It was only awkward when I forgot about it and asked a tutor for help...πŸ˜‘ πŸ˜‚ What are you still working on understanding better? - I'd like to gain further understanding of the different buttons available. I used a checkbox when creating a new task if the user wanted to mark the task as complete, which does work. However, if you go back and edit a completed task in the edit view it will show that checkbox as unchecked which makes it look like it is actually not completed. Or, if you forget to re-check it when you submit the edits it actually marks the task as incomplete, which wouldn't be accurate. My chair pair told me that she talked about this with Chris and he mentioned that this would require some Javascript so maybe this is something I would be able to fix in the future, but not now. What did your chair pair do differently? My chair pair has a layout that looks very list-y. She even added a counter that lets you know how many things you've completed as well as suggests things that are still incomplete on your list. I thought that was a great addition, since it's a great reminder of things still to do! --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 2b96daf9c..a86878e73 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ In this wave we will add the first set of user interactivity and persistence. 1. Ask the user to confirm that they definitely want to delete the task. 1. Delete the task from the database and redirect the user back to the list of remaining tasks - From 0ae0577d66d18c2260fc81c28bb1a748d2945802 Mon Sep 17 00:00:00 2001 From: Miriam Cortes Date: Mon, 24 Oct 2016 13:23:44 -0700 Subject: [PATCH 12/17] login now working --- .gitignore | 3 + Gemfile | 11 ++- Gemfile.lock | 36 ++++++++++ app/assets/javascripts/sessions.coffee | 3 + app/assets/javascripts/users.coffee | 3 + app/assets/stylesheets/sessions.scss | 3 + app/assets/stylesheets/users.scss | 3 + app/controllers/sessions_controller.rb | 22 ++++++ app/controllers/tasks_controller.rb | 25 ++----- app/controllers/users_controller.rb | 33 +++++++++ app/helpers/sessions_helper.rb | 2 + app/helpers/users_helper.rb | 2 + app/models/task.rb | 21 ++++++ app/models/user.rb | 18 +++++ app/validators/my_validator.rb | 7 ++ app/views/layouts/application.html.erb | 18 +++-- app/views/sessions/create.html.erb | 2 + app/views/tasks/_form.html.erb | 21 ++++++ app/views/tasks/edit.html.erb | 7 +- app/views/tasks/index.html.erb | 17 ++++- app/views/tasks/new.html.erb | 7 +- app/views/users/create.html.erb | 2 + app/views/users/delete.html.erb | 2 + app/views/users/edit.html.erb | 2 + app/views/users/index.html.erb | 2 + app/views/users/new.html.erb | 2 + app/views/users/show.html.erb | 2 + app/views/users/update.html.erb | 2 + config/initializers/omniauth.rb | 6 ++ config/routes.rb | 18 ++--- db/migrate/20161018170109_create_users.rb | 12 ++++ db/schema.rb | 11 ++- db/seeds.rb | 15 ++++ test/controllers/sessions_controller_test.rb | 38 +++++++++++ test/controllers/tasks_controller_test.rb | 72 ++++++++++++-------- test/controllers/users_controller_test.rb | 39 +++++++++++ test/fixtures/tasks.yml | 17 ++--- test/fixtures/users.yml | 17 +++++ test/models/user_test.rb | 7 ++ test/test_helper.rb | 6 +- 40 files changed, 453 insertions(+), 83 deletions(-) create mode 100644 app/assets/javascripts/sessions.coffee create mode 100644 app/assets/javascripts/users.coffee create mode 100644 app/assets/stylesheets/sessions.scss create mode 100644 app/assets/stylesheets/users.scss create mode 100644 app/controllers/sessions_controller.rb create mode 100644 app/controllers/users_controller.rb create mode 100644 app/helpers/sessions_helper.rb create mode 100644 app/helpers/users_helper.rb create mode 100644 app/models/user.rb create mode 100644 app/validators/my_validator.rb create mode 100644 app/views/sessions/create.html.erb create mode 100644 app/views/tasks/_form.html.erb create mode 100644 app/views/users/create.html.erb create mode 100644 app/views/users/delete.html.erb create mode 100644 app/views/users/edit.html.erb create mode 100644 app/views/users/index.html.erb create mode 100644 app/views/users/new.html.erb create mode 100644 app/views/users/show.html.erb create mode 100644 app/views/users/update.html.erb create mode 100644 config/initializers/omniauth.rb create mode 100644 db/migrate/20161018170109_create_users.rb create mode 100644 test/controllers/sessions_controller_test.rb create mode 100644 test/controllers/users_controller_test.rb create mode 100644 test/fixtures/users.yml create mode 100644 test/models/user_test.rb diff --git a/.gitignore b/.gitignore index 050c9d95c..abe362c62 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,9 @@ # Ignore bundler config. /.bundle +# Hide the .env It's full of secrets!! +/.env + # Ignore the default SQLite database. /db/*.sqlite3 /db/*.sqlite3-journal diff --git a/Gemfile b/Gemfile index e87fad5fc..53ce33f6c 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,14 @@ source 'https://rubygems.org' - +gem "awesome_print" +gem "omniauth" +gem "omniauth-github" +group :development, :test do + # Call 'byebug' anywhere in the code to stop execution and get a debugger console + gem 'byebug' + gem 'dotenv-rails' + gem 'better_errors' +end # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '4.2.7' # Use sqlite3 as the database for Active Record @@ -44,4 +52,3 @@ group :development do # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring' end - diff --git a/Gemfile.lock b/Gemfile.lock index 187046034..0b0859ffb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -37,10 +37,16 @@ GEM thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) arel (6.0.3) + awesome_print (1.7.0) + better_errors (2.1.1) + coderay (>= 1.0.0) + erubis (>= 2.6.6) + rack (>= 0.9.0) binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) builder (3.2.2) byebug (9.0.5) + coderay (1.1.1) coffee-rails (4.1.1) coffee-script (>= 2.2.0) railties (>= 4.0.0, < 5.1.x) @@ -50,10 +56,17 @@ GEM coffee-script-source (1.10.0) concurrent-ruby (1.0.2) debug_inspector (0.0.2) + dotenv (2.1.1) + dotenv-rails (2.1.1) + dotenv (= 2.1.1) + railties (>= 4.0, < 5.1) erubis (2.7.0) execjs (2.7.0) + faraday (0.9.2) + multipart-post (>= 1.2, < 3) globalid (0.3.7) activesupport (>= 4.1.0) + hashie (3.4.6) i18n (0.7.0) jbuilder (2.6.0) activesupport (>= 3.0.0, < 5.1) @@ -63,6 +76,7 @@ GEM railties (>= 4.2.0) thor (>= 0.14, < 2.0) json (1.8.3) + jwt (1.5.6) loofah (2.0.3) nokogiri (>= 1.5.9) mail (2.6.4) @@ -73,9 +87,26 @@ GEM mini_portile2 (2.1.0) minitest (5.9.1) multi_json (1.12.1) + multi_xml (0.5.5) + multipart-post (2.0.0) nokogiri (1.6.8) mini_portile2 (~> 2.1.0) pkg-config (~> 1.1.7) + oauth2 (1.2.0) + faraday (>= 0.8, < 0.10) + jwt (~> 1.0) + multi_json (~> 1.3) + multi_xml (~> 0.5) + rack (>= 1.2, < 3) + omniauth (1.3.1) + hashie (>= 1.2, < 4) + rack (>= 1.0, < 3) + omniauth-github (1.1.2) + omniauth (~> 1.0) + omniauth-oauth2 (~> 1.1) + omniauth-oauth2 (1.4.0) + oauth2 (~> 1.0) + omniauth (~> 1.2) pkg-config (1.1.7) rack (1.6.4) rack-test (0.6.3) @@ -146,10 +177,15 @@ PLATFORMS ruby DEPENDENCIES + awesome_print + better_errors byebug coffee-rails (~> 4.1.0) + dotenv-rails jbuilder (~> 2.0) jquery-rails + omniauth + omniauth-github rails (= 4.2.7) sass-rails (~> 5.0) sdoc (~> 0.4.0) diff --git a/app/assets/javascripts/sessions.coffee b/app/assets/javascripts/sessions.coffee new file mode 100644 index 000000000..24f83d18b --- /dev/null +++ b/app/assets/javascripts/sessions.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/users.coffee b/app/assets/javascripts/users.coffee new file mode 100644 index 000000000..24f83d18b --- /dev/null +++ b/app/assets/javascripts/users.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/stylesheets/sessions.scss b/app/assets/stylesheets/sessions.scss new file mode 100644 index 000000000..7bef9cf82 --- /dev/null +++ b/app/assets/stylesheets/sessions.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the sessions controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/assets/stylesheets/users.scss b/app/assets/stylesheets/users.scss new file mode 100644 index 000000000..1efc835cc --- /dev/null +++ b/app/assets/stylesheets/users.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the users controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb new file mode 100644 index 000000000..25f4c1b11 --- /dev/null +++ b/app/controllers/sessions_controller.rb @@ -0,0 +1,22 @@ +class SessionsController < ApplicationController + def create + auth_hash = request.env['omniauth.auth'] + return redirect to root_path unless auth_hash['uid'] + + @user = User.find_by(uid: auth_hash[:uid]) + if @user.nil? + @user = User.build_from_github(auth_hash) + flash[:notice] = "Unable to save the Merchant" + return redirect_to root_path unless @user.save + end + + #Save the merchant ID in the session + session[:user_id] = @user.id.to_i + redirect_to userindex_path(@user.id) + end + + def destroy + session[:user_id] = nil + redirect_to root_path + end +end diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb index 6c4448252..f811b462f 100644 --- a/app/controllers/tasks_controller.rb +++ b/app/controllers/tasks_controller.rb @@ -26,9 +26,9 @@ def edit def update @task = task - @task.thing = params[:thing] - @task.description = params[:description] - @task.status = params[:status] + @task.thing = params[:task][:thing] + @task.description = params[:task][:description] + @task.status = params[:task][:status] @task.save redirect_to :index end @@ -39,6 +39,7 @@ def create @task.thing = params[:task][:thing] @task.description = params[:task][:description] @task.status = params[:task][:status] + @task.user_id = @user.id if @task.status @task.complete_date = Time.now end @@ -46,24 +47,6 @@ def create redirect_to :index end - def mark_complete - @task = task - # show - @task.status = true - @task.complete_date = Time.now - @task.save - redirect_to :index - end - - def mark_incomplete - show - @task = task - @task.status = false - @task.complete_date = nil - @task.save - redirect_to :index - end - private def post_params params.require(:task).permit(:thing, :description) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb new file mode 100644 index 000000000..6f93a7c0b --- /dev/null +++ b/app/controllers/users_controller.rb @@ -0,0 +1,33 @@ +class UsersController < ApplicationController + def index + @user = findUser + end + + def show + @user = findUser + end + + def edit + end + + def new + end + + def create + end + + def update + end + + def delete + end + + private + def user_params + params.require(:user).permit(:name, :email, :password) + end + + def findUser + @user = User.find_by( id: session[:user_id].to_i) + end +end diff --git a/app/helpers/sessions_helper.rb b/app/helpers/sessions_helper.rb new file mode 100644 index 000000000..309f8b2eb --- /dev/null +++ b/app/helpers/sessions_helper.rb @@ -0,0 +1,2 @@ +module SessionsHelper +end diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb new file mode 100644 index 000000000..2310a240d --- /dev/null +++ b/app/helpers/users_helper.rb @@ -0,0 +1,2 @@ +module UsersHelper +end diff --git a/app/models/task.rb b/app/models/task.rb index 935f76e12..b11e07a15 100644 --- a/app/models/task.rb +++ b/app/models/task.rb @@ -1,2 +1,23 @@ class Task < ActiveRecord::Base + belongs_to :user + validates :thing, presence: :true + validates_with MyValidator + + def mark_complete + @task = task + # show + @task.status = true + @task.complete_date = Time.now + @task.save + redirect_to :index + end + + def mark_incomplete + show + @task = task + @task.status = false + @task.complete_date = nil + @task.save + redirect_to :index + end end diff --git a/app/models/user.rb b/app/models/user.rb new file mode 100644 index 000000000..c852dea49 --- /dev/null +++ b/app/models/user.rb @@ -0,0 +1,18 @@ +class User < ActiveRecord::Base + has_many :tasks + validates :email, :uid, :provider, presence: true + + def self.build_from_github(auth_hash) + user = User.new + user.uid = auth_hash[:uid] + user.provider = 'github' + user.name = auth_hash['info']['name'] + user.email = auth_hash['info']['email'] + + return user + end + + def destroy + session[:user_id] = nil + end +end diff --git a/app/validators/my_validator.rb b/app/validators/my_validator.rb new file mode 100644 index 000000000..e5bea9688 --- /dev/null +++ b/app/validators/my_validator.rb @@ -0,0 +1,7 @@ +class MyValidator < ActiveModel::Validator + def validate(task) + unless task.complete_date == nil + task.errors[:complete_date] << 'The complete date cant be nil!' + end + end +end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 5dc047798..0ef07f95e 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -9,15 +9,21 @@
-
-<%= yield %> +
+

Hey grrrrl...let's get stuff done

+ Ryan Renolds is cheering for your success +
+ <%= yield %> diff --git a/app/views/sessions/create.html.erb b/app/views/sessions/create.html.erb new file mode 100644 index 000000000..c251174fe --- /dev/null +++ b/app/views/sessions/create.html.erb @@ -0,0 +1,2 @@ +

Sessions#create

+

Find me in app/views/sessions/create.html.erb

diff --git a/app/views/tasks/_form.html.erb b/app/views/tasks/_form.html.erb new file mode 100644 index 000000000..566c59a07 --- /dev/null +++ b/app/views/tasks/_form.html.erb @@ -0,0 +1,21 @@ +<%= form_for @task,as: :task, url: action_name do |task_a| %> +

+ <%= task_a.label :thing %> + <%= task_a.text_field :thing %> +

+ +

+ <%= task_a.label :description %> + <%= task_a.text_area :description %> +

+ +

+ <%= task_a.label :Completed %> + <%= task_a.check_box :status %> +

+ +

+ <%= task_a.submit %> +

+ +<% end %> diff --git a/app/views/tasks/edit.html.erb b/app/views/tasks/edit.html.erb index 76b74d77a..b2c48762c 100644 --- a/app/views/tasks/edit.html.erb +++ b/app/views/tasks/edit.html.erb @@ -1,6 +1,6 @@

Edit a Task

-
+ -
+ +<%= render partial: "form", locals: {action_name: "update"} %> diff --git a/app/views/tasks/index.html.erb b/app/views/tasks/index.html.erb index bd355520f..a8a3a5c1b 100644 --- a/app/views/tasks/index.html.erb +++ b/app/views/tasks/index.html.erb @@ -1,7 +1,12 @@

Hey grrrrl...let's get stuff done

Ryan Renolds is cheering for your success -<% @tasks.each do |task| %> +
+ <% if @user %> +

Welcome <%= @user.name %>

+ +

Followers: <%= @user.followercount %>

+ <% @user.tasks.each do |task| %>
    <% if task[:status] %> @@ -19,6 +24,12 @@
  • <%= button_to( "Edit Task", {action: "edit", id: task[:id]}, method: :get ) %>
  • <%= button_to( "Delete Task",{action: "delete", id: task[:id]}, method: :delete, data: {confirm: "Don't just delete because you're lazy... πŸ™„"}) %>
-
-<% end %> + <% end %> + <% else %> +

Please log in to use the task list.

+ <% end %> + <% if flash[:notice] %> +

<%= flash[:notice] %>

+ <% end %> +
diff --git a/app/views/tasks/new.html.erb b/app/views/tasks/new.html.erb index 40189941d..90c5334ff 100644 --- a/app/views/tasks/new.html.erb +++ b/app/views/tasks/new.html.erb @@ -1,5 +1,5 @@

Create a new Task

- + +<%= render partial: "form", locals: {action_name: "create"} %> diff --git a/app/views/users/create.html.erb b/app/views/users/create.html.erb new file mode 100644 index 000000000..48ea02e60 --- /dev/null +++ b/app/views/users/create.html.erb @@ -0,0 +1,2 @@ +

Users#create

+

Find me in app/views/users/create.html.erb

diff --git a/app/views/users/delete.html.erb b/app/views/users/delete.html.erb new file mode 100644 index 000000000..9b228ec05 --- /dev/null +++ b/app/views/users/delete.html.erb @@ -0,0 +1,2 @@ +

Users#delete

+

Find me in app/views/users/delete.html.erb

diff --git a/app/views/users/edit.html.erb b/app/views/users/edit.html.erb new file mode 100644 index 000000000..1881fbdba --- /dev/null +++ b/app/views/users/edit.html.erb @@ -0,0 +1,2 @@ +

Users#edit

+

Find me in app/views/users/edit.html.erb

diff --git a/app/views/users/index.html.erb b/app/views/users/index.html.erb new file mode 100644 index 000000000..51968c88d --- /dev/null +++ b/app/views/users/index.html.erb @@ -0,0 +1,2 @@ +

Users#index

+

Find me in app/views/users/index.html.erb

diff --git a/app/views/users/new.html.erb b/app/views/users/new.html.erb new file mode 100644 index 000000000..c21a1adf1 --- /dev/null +++ b/app/views/users/new.html.erb @@ -0,0 +1,2 @@ +

Users#new

+

Find me in app/views/users/new.html.erb

diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb new file mode 100644 index 000000000..e5fa3adf1 --- /dev/null +++ b/app/views/users/show.html.erb @@ -0,0 +1,2 @@ +

Users#show

+

Find me in app/views/users/show.html.erb

diff --git a/app/views/users/update.html.erb b/app/views/users/update.html.erb new file mode 100644 index 000000000..cabbde176 --- /dev/null +++ b/app/views/users/update.html.erb @@ -0,0 +1,2 @@ +

Users#update

+

Find me in app/views/users/update.html.erb

diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb new file mode 100644 index 000000000..14a33f49a --- /dev/null +++ b/config/initializers/omniauth.rb @@ -0,0 +1,6 @@ +Rails.application.config.middleware.use OmniAuth::Builder do + provider :github, + ENV["GITHUB_CLIENT_ID"], + ENV["GITHUB_CLIENT_SECRET"], + scope: "user:email" +end diff --git a/config/routes.rb b/config/routes.rb index 71f7d5502..cf1b3ecd4 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,21 +1,23 @@ Rails.application.routes.draw do + get 'users/:id/tasks/index' => 'users#show', as: 'userindex' + resources :users root to: 'tasks#index' - get 'tasks/index', as: 'index' + get 'sessions/create' + delete 'users/sessions/destroy' => 'sessions#destroy' + get '/auth/:provider/callback', to: 'sessions#create' + delete 'users/sessions/destroy' => 'sessions#destroy' + get 'tasks/index', as: 'index' get 'tasks/new' => 'tasks#new', as: 'new' post 'tasks/create' => 'tasks#create', as: 'create' - get 'tasks/show/:id' => 'tasks#show', as: 'show' - delete 'tasks/:id/delete' => 'tasks#delete', as: 'delete' -# can this be /delete?? yes, but it's not convention so definitely don't do it for models - get 'tasks/:id/edit' => 'tasks#edit', as: 'edit' - get 'tasks/:id/update' => 'tasks#update', as: 'update' - + patch 'tasks/:id/update' => 'tasks#update', as: 'update' post 'tasks/:id/mark_complete' => 'tasks#mark_complete', as: 'mark_complete' - post 'tasks/:id/mark_incomplete' => 'tasks#mark_incomplete', as: 'mark_incomplete' + + get "/auth/:provider/callback" => "sessions#create" end diff --git a/db/migrate/20161018170109_create_users.rb b/db/migrate/20161018170109_create_users.rb new file mode 100644 index 000000000..f85251a60 --- /dev/null +++ b/db/migrate/20161018170109_create_users.rb @@ -0,0 +1,12 @@ +class CreateUsers < ActiveRecord::Migration + def change + create_table :users do |t| + t.string :uid + t.string :name + t.string :provider + t.string :email + + t.timestamps null: false + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 813476171..f06ef237b 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160929221343) do +ActiveRecord::Schema.define(version: 20161018170109) do create_table "tasks", force: :cascade do |t| t.string "thing" @@ -22,4 +22,13 @@ t.datetime "updated_at", null: false end + create_table "users", force: :cascade do |t| + t.string "uid" + t.string "name" + t.string "provider" + t.string "email" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + end diff --git a/db/seeds.rb b/db/seeds.rb index 4edb1e857..f56f6c82c 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -5,3 +5,18 @@ # # cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) # Mayor.create(name: 'Emanuel', city: cities.first) + +# DO THIS WHEN YOUR SEED FILE ISN'T DOING WHAT IT'S SUPPOSED TO # +myTask = Task.new(thing: "My Title", description: "Something") +myTask.save + +myTask.errors.each do |attribute, message| + Rails.logger.error "#{attribute}: #{message}" +end + +myTask = Task.new(description: "Something") +myTask.save + +myTask.errors.each do |attribute, message| + Rails.logger.error "#{attribute}: #{message}" +end diff --git a/test/controllers/sessions_controller_test.rb b/test/controllers/sessions_controller_test.rb new file mode 100644 index 000000000..caae3255f --- /dev/null +++ b/test/controllers/sessions_controller_test.rb @@ -0,0 +1,38 @@ +require 'test_helper' + +class SessionsControllerTest < ActionController::TestCase + test "the truth" do + assert true + end + + test "should get create" do + get :create + assert_response :success + end + + def login_a_user + request.env['omniauth.auth'] = OmniAuth.config.mock_auth[:github] + get :create, {provider: "github"} + end + + test "Can Create a user" do + assert_difference('User.count', 1) do + login_a_user + assert_response :redirect + assert_redirected_to root_path + assert_equal session[:user_id], User.find_by(uid: OmniAuth.config.mock_auth[:github][:uid], provider: "github").id + end + end + + test "If a user logs in twice it doesn't create a 2nd user" do + assert_difference('User.count', 1) do + login_a_user + end + assert_no_difference('User.count') do + login_a_user + assert_response :redirect + assert_redirected_to root_path + end + end + +end diff --git a/test/controllers/tasks_controller_test.rb b/test/controllers/tasks_controller_test.rb index fd0792be8..c113275e7 100644 --- a/test/controllers/tasks_controller_test.rb +++ b/test/controllers/tasks_controller_test.rb @@ -1,39 +1,57 @@ require 'test_helper' class TasksControllerTest < ActionController::TestCase - test "should get index" do - get :index - assert_response :success - end + # test "should get index" do + # get :index + # assert_response :success + # end + # + # test "should get new" do + # get :new + # assert_response :success + # end + # + # test "should get show" do + # get :show + # assert_response :success + # end + # + # test "should get delete" do + # get :delete + # assert_response :success + # end + # + # test "should get edit" do + # get :edit + # assert_response :success + # end + # + # test "should get update" do + # get :update + # assert_response :success + # end + # + # test "should get create" do + # get :create + # assert_response :success + # end + + test "Make sure a user can only see their tasks" do + session[:user_id] = users(:ada).id + get :show, id: tasks(:adas_task).id #not good enough on its own b/c it doesn't test whether they CAN'T see others' tasks - test "should get new" do - get :new assert_response :success end - test "should get show" do - get :show - assert_response :success - end - - test "should get delete" do - get :delete - assert_response :success - end + test "Make sure a user cannot see another user's tasks" do + session[:user_id] = users(:babbage).id + get :show, id: tasks(:adas_task).id - test "should get edit" do - get :edit - assert_response :success + assert_response :redirect + assert_equal flash[:notice], "You do not have access to that task." end - test "should get update" do - get :update - assert_response :success - end +end - test "should get create" do - get :create - assert_response :success - end -end +# make a model migration so users have many tasks and tasks belong to a user and diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb new file mode 100644 index 000000000..e82d51a0f --- /dev/null +++ b/test/controllers/users_controller_test.rb @@ -0,0 +1,39 @@ +require 'test_helper' + +class UsersControllerTest < ActionController::TestCase + test "should get index" do + get :index + assert_response :success + end + + test "should get show" do + get :show + assert_response :success + end + + test "should get edit" do + get :edit + assert_response :success + end + + test "should get new" do + get :new + assert_response :success + end + + test "should get create" do + get :create + assert_response :success + end + + test "should get update" do + get :update + assert_response :success + end + + test "should get delete" do + get :delete + assert_response :success + end + +end diff --git a/test/fixtures/tasks.yml b/test/fixtures/tasks.yml index 5400c50ed..53e423841 100644 --- a/test/fixtures/tasks.yml +++ b/test/fixtures/tasks.yml @@ -1,13 +1,14 @@ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html -one: - thing: MyString - description: MyString - status: false +adas_task: + thing: "write the 1st code!" + description: "Fortran" + user: :ada + status: true complete_date: 2016-09-29 15:13:43 -two: - thing: MyString - description: MyString +babbages_task: + thing: "make the first computer" + description: "build the thing" + user: :babbage status: false - complete_date: 2016-09-29 15:13:43 diff --git a/test/fixtures/users.yml b/test/fixtures/users.yml new file mode 100644 index 000000000..b6bc4d388 --- /dev/null +++ b/test/fixtures/users.yml @@ -0,0 +1,17 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +ada: + id: 1 + uid: 11234 + name: "Ada" + provider: "github" + email: ada@ada.com + created_at: 2016-09-28 13:57:25 + +babbage: + id: 2 + uid: 14151 + name: "Babbage" + provider: github + email: "b@b.com" + created_at: 2016-09-29 13:57:25 diff --git a/test/models/user_test.rb b/test/models/user_test.rb new file mode 100644 index 000000000..82f61e010 --- /dev/null +++ b/test/models/user_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class UserTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/test_helper.rb b/test/test_helper.rb index 92e39b2d7..9a9406099 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -6,5 +6,9 @@ class ActiveSupport::TestCase # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. fixtures :all - # Add more helper methods to be used by all tests here... + def setup + OmniAuth.config.test_mode = true + + OmniAuth.config.mock_auth[:github] = OmniAuth::AuthHash.new({provider: 'github', uid:'123545', info: {email: "p@oo.com", name: "Poop"}}) + end end From c9b36e349afcf966c705cbeb840986f4b7e7cd82 Mon Sep 17 00:00:00 2001 From: Miriam Cortes Date: Mon, 24 Oct 2016 13:26:47 -0700 Subject: [PATCH 13/17] changes to gitignore file --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitignore b/.gitignore index 050c9d95c..71f234268 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,12 @@ # Ignore bundler config. /.bundle +/.env +.env +.DS_Store +/.DS_Store + + # Ignore the default SQLite database. /db/*.sqlite3 /db/*.sqlite3-journal From 1b1626a0788b8443c168ff8616d7e2c9d3524246 Mon Sep 17 00:00:00 2001 From: Miriam Cortes Date: Wed, 26 Oct 2016 19:25:23 -0700 Subject: [PATCH 14/17] logout working as well as mark complete button functioning correctly --- app/assets/stylesheets/application.css | 7 ++- app/controllers/sessions_controller.rb | 2 +- app/controllers/tasks_controller.rb | 57 ++++++++++++++----- app/models/task.rb | 17 ------ app/views/layouts/application.html.erb | 6 +- app/views/tasks/_form.html.erb | 4 +- app/views/tasks/create.html.erb | 12 ---- app/views/tasks/delete.html.erb | 1 - app/views/tasks/edit.html.erb | 20 ------- app/views/tasks/index.html.erb | 36 +----------- app/views/tasks/new.html.erb | 24 +------- app/views/tasks/show.html.erb | 8 +-- app/views/tasks/update.html.erb | 6 -- app/views/users/show.html.erb | 33 ++++++++++- config/routes.rb | 24 +++----- .../20161024203805_assign_task_to_user.rb | 5 ++ ..._change_datetime_to_string_for_complete.rb | 5 ++ db/schema.rb | 5 +- 18 files changed, 110 insertions(+), 162 deletions(-) create mode 100644 db/migrate/20161024203805_assign_task_to_user.rb create mode 100644 db/migrate/20161027020144_change_datetime_to_string_for_complete.rb diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index adc5eeac0..abb130d4d 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -17,14 +17,15 @@ nav ul { font-size: 1rem; } -li { - display: inline; +p { + display: inline-block; text-align: left; + margin: 2%; } a { color: black; - padding: 3%; + padding: 0%; } form.button_to { diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 25f4c1b11..920660e16 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -12,7 +12,7 @@ def create #Save the merchant ID in the session session[:user_id] = @user.id.to_i - redirect_to userindex_path(@user.id) + redirect_to user_path(@user.id) end def destroy diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb index f811b462f..a3c081ea0 100644 --- a/app/controllers/tasks_controller.rb +++ b/app/controllers/tasks_controller.rb @@ -1,36 +1,36 @@ class TasksController < ApplicationController + before_action :find_user + before_action :find_task, only: [:show, :edit, :update, :mark_complete, :mark_incomplete, :destroy] + def index - @tasks = Task.all + @tasks = Task.where(user_id: @user.id) end def new @task = Task.new + @post_path = user_tasks_path(@user.id) + @post_method = :post end def show - @task = Task.find(params[:id].to_i) - end - - def delete - task.destroy - redirect_to :index end - def task - @task ||= Task.find(params[:id].to_i) + def destroy + @task.destroy + redirect_to user_path(@user) end def edit - show + @post_path = user_task_path(@user.id, @task.id) + @post_method = :put end def update - @task = task @task.thing = params[:task][:thing] @task.description = params[:task][:description] @task.status = params[:task][:status] @task.save - redirect_to :index + redirect_to user_path(@user) end def create @@ -40,14 +40,41 @@ def create @task.description = params[:task][:description] @task.status = params[:task][:status] @task.user_id = @user.id - if @task.status - @task.complete_date = Time.now + if @task.save + redirect_to user_task_path(@user, @task) + else + @error = "Did not save successfully. Please try again." + @post_path = user_tasks_path + @post_method = :post + render :new end + end + + def mark_complete + @task.status = true @task.save - redirect_to :index + redirect_to user_path(@user) + end + + def mark_incomplete + @task.status = false + @task.save + redirect_to user_path(@user) end private + def find_user + if User.exists?(params[:user_id].to_i) == true + return @user = User.find(params[:user_id].to_i) + else + render :status => 404 + end + end + + def find_task + @task = Task.find_by(user_id: @user.id, id: params[:id]) + end + def post_params params.require(:task).permit(:thing, :description) end diff --git a/app/models/task.rb b/app/models/task.rb index b11e07a15..41c397934 100644 --- a/app/models/task.rb +++ b/app/models/task.rb @@ -3,21 +3,4 @@ class Task < ActiveRecord::Base validates :thing, presence: :true validates_with MyValidator - def mark_complete - @task = task - # show - @task.status = true - @task.complete_date = Time.now - @task.save - redirect_to :index - end - - def mark_incomplete - show - @task = task - @task.status = false - @task.complete_date = nil - @task.save - redirect_to :index - end end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 0ef07f95e..0efb16a9d 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -10,9 +10,9 @@