From 35475c1e030c21f7a0591efa5d91f6a9aeee440c Mon Sep 17 00:00:00 2001 From: Ryan Bigg Date: Sun, 26 Oct 2014 13:56:53 +1100 Subject: [PATCH 01/16] Section 3.1.1: The application story --- ticketee/.gitignore | 16 ++ ticketee/Gemfile | 45 +++++ ticketee/Gemfile.lock | 163 ++++++++++++++++++ ticketee/README.rdoc | 28 +++ ticketee/Rakefile | 6 + ticketee/app/assets/images/.keep | 0 .../app/assets/javascripts/application.js | 16 ++ .../app/assets/stylesheets/application.css | 15 ++ .../app/controllers/application_controller.rb | 5 + ticketee/app/controllers/concerns/.keep | 0 ticketee/app/helpers/application_helper.rb | 2 + ticketee/app/mailers/.keep | 0 ticketee/app/models/.keep | 0 ticketee/app/models/concerns/.keep | 0 .../app/views/layouts/application.html.erb | 14 ++ ticketee/bin/bundle | 3 + ticketee/bin/rails | 4 + ticketee/bin/rake | 4 + ticketee/bin/setup | 29 ++++ ticketee/config.ru | 4 + ticketee/config/application.rb | 26 +++ ticketee/config/boot.rb | 3 + ticketee/config/database.yml | 25 +++ ticketee/config/environment.rb | 5 + ticketee/config/environments/development.rb | 41 +++++ ticketee/config/environments/production.rb | 77 +++++++++ ticketee/config/environments/test.rb | 42 +++++ ticketee/config/initializers/assets.rb | 11 ++ .../initializers/backtrace_silencers.rb | 7 + .../config/initializers/cookies_serializer.rb | 3 + .../initializers/filter_parameter_logging.rb | 4 + ticketee/config/initializers/inflections.rb | 16 ++ ticketee/config/initializers/mime_types.rb | 4 + ticketee/config/initializers/session_store.rb | 3 + .../config/initializers/wrap_parameters.rb | 14 ++ ticketee/config/locales/en.yml | 23 +++ ticketee/config/routes.rb | 56 ++++++ ticketee/config/secrets.yml | 22 +++ ticketee/db/seeds.rb | 7 + ticketee/lib/assets/.keep | 0 ticketee/lib/tasks/.keep | 0 ticketee/log/.keep | 0 ticketee/public/404.html | 67 +++++++ ticketee/public/422.html | 67 +++++++ ticketee/public/500.html | 66 +++++++ ticketee/public/favicon.ico | 0 ticketee/public/robots.txt | 5 + ticketee/test/controllers/.keep | 0 ticketee/test/fixtures/.keep | 0 ticketee/test/helpers/.keep | 0 ticketee/test/integration/.keep | 0 ticketee/test/mailers/.keep | 0 ticketee/test/models/.keep | 0 ticketee/test/test_helper.rb | 10 ++ ticketee/vendor/assets/javascripts/.keep | 0 ticketee/vendor/assets/stylesheets/.keep | 0 56 files changed, 958 insertions(+) create mode 100644 ticketee/.gitignore create mode 100644 ticketee/Gemfile create mode 100644 ticketee/Gemfile.lock create mode 100644 ticketee/README.rdoc create mode 100644 ticketee/Rakefile create mode 100644 ticketee/app/assets/images/.keep create mode 100644 ticketee/app/assets/javascripts/application.js create mode 100644 ticketee/app/assets/stylesheets/application.css create mode 100644 ticketee/app/controllers/application_controller.rb create mode 100644 ticketee/app/controllers/concerns/.keep create mode 100644 ticketee/app/helpers/application_helper.rb create mode 100644 ticketee/app/mailers/.keep create mode 100644 ticketee/app/models/.keep create mode 100644 ticketee/app/models/concerns/.keep create mode 100644 ticketee/app/views/layouts/application.html.erb create mode 100755 ticketee/bin/bundle create mode 100755 ticketee/bin/rails create mode 100755 ticketee/bin/rake create mode 100755 ticketee/bin/setup create mode 100644 ticketee/config.ru create mode 100644 ticketee/config/application.rb create mode 100644 ticketee/config/boot.rb create mode 100644 ticketee/config/database.yml create mode 100644 ticketee/config/environment.rb create mode 100644 ticketee/config/environments/development.rb create mode 100644 ticketee/config/environments/production.rb create mode 100644 ticketee/config/environments/test.rb create mode 100644 ticketee/config/initializers/assets.rb create mode 100644 ticketee/config/initializers/backtrace_silencers.rb create mode 100644 ticketee/config/initializers/cookies_serializer.rb create mode 100644 ticketee/config/initializers/filter_parameter_logging.rb create mode 100644 ticketee/config/initializers/inflections.rb create mode 100644 ticketee/config/initializers/mime_types.rb create mode 100644 ticketee/config/initializers/session_store.rb create mode 100644 ticketee/config/initializers/wrap_parameters.rb create mode 100644 ticketee/config/locales/en.yml create mode 100644 ticketee/config/routes.rb create mode 100644 ticketee/config/secrets.yml create mode 100644 ticketee/db/seeds.rb create mode 100644 ticketee/lib/assets/.keep create mode 100644 ticketee/lib/tasks/.keep create mode 100644 ticketee/log/.keep create mode 100644 ticketee/public/404.html create mode 100644 ticketee/public/422.html create mode 100644 ticketee/public/500.html create mode 100644 ticketee/public/favicon.ico create mode 100644 ticketee/public/robots.txt create mode 100644 ticketee/test/controllers/.keep create mode 100644 ticketee/test/fixtures/.keep create mode 100644 ticketee/test/helpers/.keep create mode 100644 ticketee/test/integration/.keep create mode 100644 ticketee/test/mailers/.keep create mode 100644 ticketee/test/models/.keep create mode 100644 ticketee/test/test_helper.rb create mode 100644 ticketee/vendor/assets/javascripts/.keep create mode 100644 ticketee/vendor/assets/stylesheets/.keep diff --git a/ticketee/.gitignore b/ticketee/.gitignore new file mode 100644 index 0000000..6a502e9 --- /dev/null +++ b/ticketee/.gitignore @@ -0,0 +1,16 @@ +# 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' + +# Ignore bundler config. +/.bundle + +# Ignore the default SQLite database. +/db/*.sqlite3 +/db/*.sqlite3-journal + +# Ignore all logfiles and tempfiles. +/log/*.log +/tmp diff --git a/ticketee/Gemfile b/ticketee/Gemfile new file mode 100644 index 0000000..38a613e --- /dev/null +++ b/ticketee/Gemfile @@ -0,0 +1,45 @@ +source 'https://rubygems.org' + + +# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' +gem 'rails', '4.2.0.beta2' +# Use sqlite3 as the database for Active Record +gem 'sqlite3' +# Use SCSS for stylesheets +gem 'sass-rails', '~> 5.0.0.beta1' +# Use Uglifier as compressor for JavaScript assets +gem 'uglifier', '>= 1.3.0' +# Use CoffeeScript for .js.coffee assets and views +gem 'coffee-rails', '~> 4.0.0' +# See https://github.com/sstephenson/execjs#readme for more supported runtimes +# gem 'therubyracer', platforms: :ruby + +# Use jQuery as the JavaScript library +gem 'jquery-rails', '~> 4.0.0.beta2' +# 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 'debugger' anywhere in the code to stop execution and get a debugger console + gem 'byebug' + + # Access an IRB console on exception pages or by using <%= console %> in views + gem 'web-console', '~> 2.0.0.beta4' + + # 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/ticketee/Gemfile.lock b/ticketee/Gemfile.lock new file mode 100644 index 0000000..8dae446 --- /dev/null +++ b/ticketee/Gemfile.lock @@ -0,0 +1,163 @@ +GEM + remote: https://rubygems.org/ + specs: + actionmailer (4.2.0.beta2) + actionpack (= 4.2.0.beta2) + actionview (= 4.2.0.beta2) + activejob (= 4.2.0.beta2) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 1.0, >= 1.0.3) + actionpack (4.2.0.beta2) + actionview (= 4.2.0.beta2) + activesupport (= 4.2.0.beta2) + rack (~> 1.6.0.beta) + rack-test (~> 0.6.2) + rails-dom-testing (~> 1.0, >= 1.0.3) + rails-html-sanitizer (~> 1.0, >= 1.0.1) + actionview (4.2.0.beta2) + activesupport (= 4.2.0.beta2) + builder (~> 3.1) + erubis (~> 2.7.0) + rails-dom-testing (~> 1.0, >= 1.0.3) + rails-html-sanitizer (~> 1.0, >= 1.0.1) + activejob (4.2.0.beta2) + activesupport (= 4.2.0.beta2) + globalid (>= 0.3.0) + activemodel (4.2.0.beta2) + activesupport (= 4.2.0.beta2) + builder (~> 3.1) + activerecord (4.2.0.beta2) + activemodel (= 4.2.0.beta2) + activesupport (= 4.2.0.beta2) + arel (>= 6.0.0.beta1, < 6.1) + activesupport (4.2.0.beta2) + i18n (>= 0.7.0.beta1, < 0.8) + json (~> 1.7, >= 1.7.7) + minitest (~> 5.1) + thread_safe (~> 0.1) + tzinfo (~> 1.1) + arel (6.0.0.beta1) + binding_of_caller (0.7.3.pre1) + debug_inspector (>= 0.0.1) + builder (3.2.2) + byebug (3.5.1) + columnize (~> 0.8) + debugger-linecache (~> 1.2) + slop (~> 3.6) + coffee-rails (4.0.1) + coffee-script (>= 2.2.0) + railties (>= 4.0.0, < 5.0) + coffee-script (2.3.0) + coffee-script-source + execjs + coffee-script-source (1.8.0) + columnize (0.8.9) + debug_inspector (0.0.2) + debugger-linecache (1.2.0) + erubis (2.7.0) + execjs (2.2.2) + globalid (0.3.0) + activesupport (>= 4.1.0) + hike (1.2.3) + i18n (0.7.0.beta1) + jbuilder (2.2.4) + activesupport (>= 3.0.0, < 5) + multi_json (~> 1.2) + jquery-rails (4.0.0.beta2) + rails-dom-testing (~> 1.0) + railties (>= 4.2.0.beta, < 5.0) + thor (>= 0.14, < 2.0) + json (1.8.1) + loofah (2.0.1) + nokogiri (>= 1.5.9) + mail (2.6.1) + mime-types (>= 1.16, < 3) + mime-types (2.4.3) + mini_portile (0.6.0) + minitest (5.4.2) + multi_json (1.10.1) + nokogiri (1.6.3.1) + mini_portile (= 0.6.0) + rack (1.6.0.beta) + rack-test (0.6.2) + rack (>= 1.0) + rails (4.2.0.beta2) + actionmailer (= 4.2.0.beta2) + actionpack (= 4.2.0.beta2) + actionview (= 4.2.0.beta2) + activejob (= 4.2.0.beta2) + activemodel (= 4.2.0.beta2) + activerecord (= 4.2.0.beta2) + activesupport (= 4.2.0.beta2) + bundler (>= 1.3.0, < 2.0) + railties (= 4.2.0.beta2) + sprockets-rails (~> 3.0.0.beta1) + rails-deprecated_sanitizer (1.0.3) + activesupport (>= 4.2.0.alpha) + rails-dom-testing (1.0.4) + activesupport (>= 4.2.0.beta, < 5.0) + nokogiri (~> 1.6.0) + rails-deprecated_sanitizer (>= 1.0.1) + rails-html-sanitizer (1.0.1) + loofah (~> 2.0) + railties (4.2.0.beta2) + actionpack (= 4.2.0.beta2) + activesupport (= 4.2.0.beta2) + rake (>= 0.8.7) + thor (>= 0.18.1, < 2.0) + rake (10.3.2) + rdoc (4.1.2) + json (~> 1.4) + sass (3.4.6) + sass-rails (5.0.0.beta1) + railties (>= 4.0.0, < 5.0) + sass (~> 3.2) + sprockets (~> 2.12) + sprockets-rails (>= 2.0, < 4.0) + sdoc (0.4.1) + json (~> 1.7, >= 1.7.7) + rdoc (~> 4.0) + slop (3.6.0) + spring (1.1.3) + sprockets (2.12.2) + hike (~> 1.2) + multi_json (~> 1.0) + rack (~> 1.0) + tilt (~> 1.1, != 1.3.0) + sprockets-rails (3.0.0.beta1) + actionpack (>= 4.0) + activesupport (>= 4.0) + sprockets (~> 2.8) + sqlite3 (1.3.9) + thor (0.19.1) + thread_safe (0.3.4) + tilt (1.4.1) + turbolinks (2.4.0) + coffee-rails + tzinfo (1.2.2) + thread_safe (~> 0.1) + uglifier (2.5.3) + execjs (>= 0.3.0) + json (>= 1.8.0) + web-console (2.0.0.beta4) + activemodel (~> 4.0) + binding_of_caller (= 0.7.3.pre1) + railties (~> 4.0) + sprockets-rails (>= 2.0, < 4.0) + +PLATFORMS + ruby + +DEPENDENCIES + byebug + coffee-rails (~> 4.0.0) + jbuilder (~> 2.0) + jquery-rails (~> 4.0.0.beta2) + rails (= 4.2.0.beta2) + sass-rails (~> 5.0.0.beta1) + sdoc (~> 0.4.0) + spring + sqlite3 + turbolinks + uglifier (>= 1.3.0) + web-console (~> 2.0.0.beta4) diff --git a/ticketee/README.rdoc b/ticketee/README.rdoc new file mode 100644 index 0000000..dd4e97e --- /dev/null +++ b/ticketee/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/ticketee/Rakefile b/ticketee/Rakefile new file mode 100644 index 0000000..ba6b733 --- /dev/null +++ b/ticketee/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/ticketee/app/assets/images/.keep b/ticketee/app/assets/images/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/app/assets/javascripts/application.js b/ticketee/app/assets/javascripts/application.js new file mode 100644 index 0000000..d6925fa --- /dev/null +++ b/ticketee/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 vendor/assets/javascripts of plugins, if any, 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/sstephenson/sprockets#sprockets-directives) for details +// about supported directives. +// +//= require jquery +//= require jquery_ujs +//= require turbolinks +//= require_tree . diff --git a/ticketee/app/assets/stylesheets/application.css b/ticketee/app/assets/stylesheets/application.css new file mode 100644 index 0000000..a443db3 --- /dev/null +++ b/ticketee/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 vendor/assets/stylesheets of plugins, if any, 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/ticketee/app/controllers/application_controller.rb b/ticketee/app/controllers/application_controller.rb new file mode 100644 index 0000000..d83690e --- /dev/null +++ b/ticketee/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/ticketee/app/controllers/concerns/.keep b/ticketee/app/controllers/concerns/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/app/helpers/application_helper.rb b/ticketee/app/helpers/application_helper.rb new file mode 100644 index 0000000..de6be79 --- /dev/null +++ b/ticketee/app/helpers/application_helper.rb @@ -0,0 +1,2 @@ +module ApplicationHelper +end diff --git a/ticketee/app/mailers/.keep b/ticketee/app/mailers/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/app/models/.keep b/ticketee/app/models/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/app/models/concerns/.keep b/ticketee/app/models/concerns/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/app/views/layouts/application.html.erb b/ticketee/app/views/layouts/application.html.erb new file mode 100644 index 0000000..c67190a --- /dev/null +++ b/ticketee/app/views/layouts/application.html.erb @@ -0,0 +1,14 @@ + + + + Ticketee + <%= 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/ticketee/bin/bundle b/ticketee/bin/bundle new file mode 100755 index 0000000..66e9889 --- /dev/null +++ b/ticketee/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/ticketee/bin/rails b/ticketee/bin/rails new file mode 100755 index 0000000..728cd85 --- /dev/null +++ b/ticketee/bin/rails @@ -0,0 +1,4 @@ +#!/usr/bin/env ruby +APP_PATH = File.expand_path('../../config/application', __FILE__) +require_relative '../config/boot' +require 'rails/commands' diff --git a/ticketee/bin/rake b/ticketee/bin/rake new file mode 100755 index 0000000..1724048 --- /dev/null +++ b/ticketee/bin/rake @@ -0,0 +1,4 @@ +#!/usr/bin/env ruby +require_relative '../config/boot' +require 'rake' +Rake.application.run diff --git a/ticketee/bin/setup b/ticketee/bin/setup new file mode 100755 index 0000000..acdb2c1 --- /dev/null +++ b/ticketee/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/ticketee/config.ru b/ticketee/config.ru new file mode 100644 index 0000000..5bc2a61 --- /dev/null +++ b/ticketee/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/ticketee/config/application.rb b/ticketee/config/application.rb new file mode 100644 index 0000000..503f3d6 --- /dev/null +++ b/ticketee/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 Ticketee + 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/ticketee/config/boot.rb b/ticketee/config/boot.rb new file mode 100644 index 0000000..6b750f0 --- /dev/null +++ b/ticketee/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/ticketee/config/database.yml b/ticketee/config/database.yml new file mode 100644 index 0000000..1c1a37c --- /dev/null +++ b/ticketee/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/ticketee/config/environment.rb b/ticketee/config/environment.rb new file mode 100644 index 0000000..ee8d90d --- /dev/null +++ b/ticketee/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/ticketee/config/environments/development.rb b/ticketee/config/environments/development.rb new file mode 100644 index 0000000..b55e214 --- /dev/null +++ b/ticketee/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/ticketee/config/environments/production.rb b/ticketee/config/environments/production.rb new file mode 100644 index 0000000..7c01713 --- /dev/null +++ b/ticketee/config/environments/production.rb @@ -0,0 +1,77 @@ +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 Rails's static asset server (Apache or NGINX will already do this). + config.serve_static_assets = false + + # 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 + + # Decrease the log volume. + # config.log_level = :info + + # 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/ticketee/config/environments/test.rb b/ticketee/config/environments/test.rb new file mode 100644 index 0000000..32756eb --- /dev/null +++ b/ticketee/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 asset server for tests with Cache-Control for performance. + config.serve_static_assets = 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/ticketee/config/initializers/assets.rb b/ticketee/config/initializers/assets.rb new file mode 100644 index 0000000..01ef3e6 --- /dev/null +++ b/ticketee/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/ticketee/config/initializers/backtrace_silencers.rb b/ticketee/config/initializers/backtrace_silencers.rb new file mode 100644 index 0000000..59385cd --- /dev/null +++ b/ticketee/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/ticketee/config/initializers/cookies_serializer.rb b/ticketee/config/initializers/cookies_serializer.rb new file mode 100644 index 0000000..7f70458 --- /dev/null +++ b/ticketee/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/ticketee/config/initializers/filter_parameter_logging.rb b/ticketee/config/initializers/filter_parameter_logging.rb new file mode 100644 index 0000000..4a994e1 --- /dev/null +++ b/ticketee/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/ticketee/config/initializers/inflections.rb b/ticketee/config/initializers/inflections.rb new file mode 100644 index 0000000..ac033bf --- /dev/null +++ b/ticketee/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/ticketee/config/initializers/mime_types.rb b/ticketee/config/initializers/mime_types.rb new file mode 100644 index 0000000..dc18996 --- /dev/null +++ b/ticketee/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/ticketee/config/initializers/session_store.rb b/ticketee/config/initializers/session_store.rb new file mode 100644 index 0000000..a83ac4a --- /dev/null +++ b/ticketee/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: '_ticketee_session' diff --git a/ticketee/config/initializers/wrap_parameters.rb b/ticketee/config/initializers/wrap_parameters.rb new file mode 100644 index 0000000..33725e9 --- /dev/null +++ b/ticketee/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/ticketee/config/locales/en.yml b/ticketee/config/locales/en.yml new file mode 100644 index 0000000..0653957 --- /dev/null +++ b/ticketee/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/ticketee/config/routes.rb b/ticketee/config/routes.rb new file mode 100644 index 0000000..3f66539 --- /dev/null +++ b/ticketee/config/routes.rb @@ -0,0 +1,56 @@ +Rails.application.routes.draw do + # 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/ticketee/config/secrets.yml b/ticketee/config/secrets.yml new file mode 100644 index 0000000..35e6a16 --- /dev/null +++ b/ticketee/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: 71d1eb692a493a4a819032e4ebad9c00e2ea98acaeb5524bbe96a4f8fd010e342971483b9f43976819188252c454ce17471beecb62fab77a823c0a28aae2979b + +test: + secret_key_base: e192f1d37e02882331568a85ea3c03361ba091accf829c9b3bf0128ccfc1fca5671a86585542b56d6ebf413e15e0d3a5a9e261158e053b6f00be41e625348951 + +# 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/ticketee/db/seeds.rb b/ticketee/db/seeds.rb new file mode 100644 index 0000000..4edb1e8 --- /dev/null +++ b/ticketee/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/ticketee/lib/assets/.keep b/ticketee/lib/assets/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/lib/tasks/.keep b/ticketee/lib/tasks/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/log/.keep b/ticketee/log/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/public/404.html b/ticketee/public/404.html new file mode 100644 index 0000000..b612547 --- /dev/null +++ b/ticketee/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/ticketee/public/422.html b/ticketee/public/422.html new file mode 100644 index 0000000..a21f82b --- /dev/null +++ b/ticketee/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/ticketee/public/500.html b/ticketee/public/500.html new file mode 100644 index 0000000..061abc5 --- /dev/null +++ b/ticketee/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/ticketee/public/favicon.ico b/ticketee/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/public/robots.txt b/ticketee/public/robots.txt new file mode 100644 index 0000000..3c9c7c0 --- /dev/null +++ b/ticketee/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/ticketee/test/controllers/.keep b/ticketee/test/controllers/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/test/fixtures/.keep b/ticketee/test/fixtures/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/test/helpers/.keep b/ticketee/test/helpers/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/test/integration/.keep b/ticketee/test/integration/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/test/mailers/.keep b/ticketee/test/mailers/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/test/models/.keep b/ticketee/test/models/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/test/test_helper.rb b/ticketee/test/test_helper.rb new file mode 100644 index 0000000..92e39b2 --- /dev/null +++ b/ticketee/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/ticketee/vendor/assets/javascripts/.keep b/ticketee/vendor/assets/javascripts/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/vendor/assets/stylesheets/.keep b/ticketee/vendor/assets/stylesheets/.keep new file mode 100644 index 0000000..e69de29 From 10ac2fe2c6b65dd6015e3c3b3c2f591f010163fc Mon Sep 17 00:00:00 2001 From: Ryan Bigg Date: Sun, 26 Oct 2014 15:53:13 +1100 Subject: [PATCH 02/16] Section 3.3.1: Set up gem dependencies and run rspec generator --- ticketee/.rspec | 2 + ticketee/Gemfile | 6 +++ ticketee/Gemfile.lock | 27 +++++++++++ ticketee/bin/rspec | 16 +++++++ ticketee/spec/rails_helper.rb | 50 +++++++++++++++++++++ ticketee/spec/spec_helper.rb | 85 +++++++++++++++++++++++++++++++++++ 6 files changed, 186 insertions(+) create mode 100644 ticketee/.rspec create mode 100755 ticketee/bin/rspec create mode 100644 ticketee/spec/rails_helper.rb create mode 100644 ticketee/spec/spec_helper.rb diff --git a/ticketee/.rspec b/ticketee/.rspec new file mode 100644 index 0000000..83e16f8 --- /dev/null +++ b/ticketee/.rspec @@ -0,0 +1,2 @@ +--color +--require spec_helper diff --git a/ticketee/Gemfile b/ticketee/Gemfile index 38a613e..1ccef7e 100644 --- a/ticketee/Gemfile +++ b/ticketee/Gemfile @@ -41,5 +41,11 @@ group :development, :test do # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring' + + gem 'rspec-rails', '3.1.0' +end + +group :test do + gem 'capybara', '2.4.4' end diff --git a/ticketee/Gemfile.lock b/ticketee/Gemfile.lock index 8dae446..21aa59e 100644 --- a/ticketee/Gemfile.lock +++ b/ticketee/Gemfile.lock @@ -44,6 +44,12 @@ GEM columnize (~> 0.8) debugger-linecache (~> 1.2) slop (~> 3.6) + capybara (2.4.4) + mime-types (>= 1.16) + nokogiri (>= 1.3.3) + rack (>= 1.0.0) + rack-test (>= 0.5.4) + xpath (~> 2.0) coffee-rails (4.0.1) coffee-script (>= 2.2.0) railties (>= 4.0.0, < 5.0) @@ -54,6 +60,7 @@ GEM columnize (0.8.9) debug_inspector (0.0.2) debugger-linecache (1.2.0) + diff-lcs (1.2.5) erubis (2.7.0) execjs (2.2.2) globalid (0.3.0) @@ -108,6 +115,22 @@ GEM rake (10.3.2) rdoc (4.1.2) json (~> 1.4) + rspec-core (3.1.7) + rspec-support (~> 3.1.0) + rspec-expectations (3.1.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.1.0) + rspec-mocks (3.1.3) + rspec-support (~> 3.1.0) + rspec-rails (3.1.0) + actionpack (>= 3.0) + activesupport (>= 3.0) + railties (>= 3.0) + rspec-core (~> 3.1.0) + rspec-expectations (~> 3.1.0) + rspec-mocks (~> 3.1.0) + rspec-support (~> 3.1.0) + rspec-support (3.1.2) sass (3.4.6) sass-rails (5.0.0.beta1) railties (>= 4.0.0, < 5.0) @@ -144,16 +167,20 @@ GEM binding_of_caller (= 0.7.3.pre1) railties (~> 4.0) sprockets-rails (>= 2.0, < 4.0) + xpath (2.0.0) + nokogiri (~> 1.3) PLATFORMS ruby DEPENDENCIES byebug + capybara (= 2.4.4) coffee-rails (~> 4.0.0) jbuilder (~> 2.0) jquery-rails (~> 4.0.0.beta2) rails (= 4.2.0.beta2) + rspec-rails (= 3.1.0) sass-rails (~> 5.0.0.beta1) sdoc (~> 0.4.0) spring diff --git a/ticketee/bin/rspec b/ticketee/bin/rspec new file mode 100755 index 0000000..0c86b5c --- /dev/null +++ b/ticketee/bin/rspec @@ -0,0 +1,16 @@ +#!/usr/bin/env ruby +# +# This file was generated by Bundler. +# +# The application 'rspec' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'pathname' +ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +require 'rubygems' +require 'bundler/setup' + +load Gem.bin_path('rspec-core', 'rspec') diff --git a/ticketee/spec/rails_helper.rb b/ticketee/spec/rails_helper.rb new file mode 100644 index 0000000..e6c0b68 --- /dev/null +++ b/ticketee/spec/rails_helper.rb @@ -0,0 +1,50 @@ +# This file is copied to spec/ when you run 'rails generate rspec:install' +ENV["RAILS_ENV"] ||= 'test' +require 'spec_helper' +require File.expand_path("../../config/environment", __FILE__) +require 'rspec/rails' +# Add additional requires below this line. Rails is not loaded until this point! + +# Requires supporting ruby files with custom matchers and macros, etc, in +# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are +# run as spec files by default. This means that files in spec/support that end +# in _spec.rb will both be required and run as specs, causing the specs to be +# run twice. It is recommended that you do not name files matching this glob to +# end with _spec.rb. You can configure this pattern with the --pattern +# option on the command line or in ~/.rspec, .rspec or `.rspec-local`. +# +# The following line is provided for convenience purposes. It has the downside +# of increasing the boot-up time by auto-requiring all files in the support +# directory. Alternatively, in the individual `*_spec.rb` files, manually +# require only the support files necessary. +# +# Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } + +# Checks for pending migrations before tests are run. +# If you are not using ActiveRecord, you can remove this line. +ActiveRecord::Migration.maintain_test_schema! + +RSpec.configure do |config| + # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures + config.fixture_path = "#{::Rails.root}/spec/fixtures" + + # If you're not using ActiveRecord, or you'd prefer not to run each of your + # examples within a transaction, remove the following line or assign false + # instead of true. + config.use_transactional_fixtures = true + + # RSpec Rails can automatically mix in different behaviours to your tests + # based on their file location, for example enabling you to call `get` and + # `post` in specs under `spec/controllers`. + # + # You can disable this behaviour by removing the line below, and instead + # explicitly tag your specs with their type, e.g.: + # + # RSpec.describe UsersController, :type => :controller do + # # ... + # end + # + # The different available types are documented in the features, such as in + # https://relishapp.com/rspec/rspec-rails/docs + config.infer_spec_type_from_file_location! +end diff --git a/ticketee/spec/spec_helper.rb b/ticketee/spec/spec_helper.rb new file mode 100644 index 0000000..275ba49 --- /dev/null +++ b/ticketee/spec/spec_helper.rb @@ -0,0 +1,85 @@ +# This file was generated by the `rails generate rspec:install` command. Conventionally, all +# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`. +# The generated `.rspec` file contains `--require spec_helper` which will cause this +# file to always be loaded, without a need to explicitly require it in any files. +# +# Given that it is always loaded, you are encouraged to keep this file as +# light-weight as possible. Requiring heavyweight dependencies from this file +# will add to the boot time of your test suite on EVERY test run, even for an +# individual file that may not need all of that loaded. Instead, consider making +# a separate helper file that requires the additional dependencies and performs +# the additional setup, and require it from the spec files that actually need it. +# +# The `.rspec` file also contains a few flags that are not defaults but that +# users commonly want. +# +# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration +RSpec.configure do |config| + # rspec-expectations config goes here. You can use an alternate + # assertion/expectation library such as wrong or the stdlib/minitest + # assertions if you prefer. + config.expect_with :rspec do |expectations| + # This option will default to `true` in RSpec 4. It makes the `description` + # and `failure_message` of custom matchers include text for helper methods + # defined using `chain`, e.g.: + # be_bigger_than(2).and_smaller_than(4).description + # # => "be bigger than 2 and smaller than 4" + # ...rather than: + # # => "be bigger than 2" + expectations.include_chain_clauses_in_custom_matcher_descriptions = true + end + + # rspec-mocks config goes here. You can use an alternate test double + # library (such as bogus or mocha) by changing the `mock_with` option here. + config.mock_with :rspec do |mocks| + # Prevents you from mocking or stubbing a method that does not exist on + # a real object. This is generally recommended, and will default to + # `true` in RSpec 4. + mocks.verify_partial_doubles = true + end + +# The settings below are suggested to provide a good initial experience +# with RSpec, but feel free to customize to your heart's content. +=begin + # These two settings work together to allow you to limit a spec run + # to individual examples or groups you care about by tagging them with + # `:focus` metadata. When nothing is tagged with `:focus`, all examples + # get run. + config.filter_run :focus + config.run_all_when_everything_filtered = true + + # Limits the available syntax to the non-monkey patched syntax that is recommended. + # For more details, see: + # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax + # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/ + # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching + config.disable_monkey_patching! + + # Many RSpec users commonly either run the entire suite or an individual + # file, and it's useful to allow more verbose output when running an + # individual spec file. + if config.files_to_run.one? + # Use the documentation formatter for detailed output, + # unless a formatter has already been configured + # (e.g. via a command-line flag). + config.default_formatter = 'doc' + end + + # Print the 10 slowest examples and example groups at the + # end of the spec run, to help surface which specs are running + # particularly slow. + config.profile_examples = 10 + + # Run specs in random order to surface order dependencies. If you find an + # order dependency and want to debug it, you can fix the order by providing + # the seed, which is printed after each run. + # --seed 1234 + config.order = :random + + # Seed global randomization in this process using the `--seed` CLI option. + # Setting this allows you to use `--seed` to deterministically reproduce + # test failures related to randomization by passing the same `--seed` value + # as the one that triggered the failure. + Kernel.srand config.seed +=end +end From 9279a78eb01fdae9b2a66ed85d78165363e232f1 Mon Sep 17 00:00:00 2001 From: Ryan Bigg Date: Sun, 26 Oct 2014 20:57:23 +1100 Subject: [PATCH 03/16] Section 3.4.3: 'Create a new project' feature complete. --- .../app/assets/javascripts/projects.js.coffee | 3 ++ .../app/assets/stylesheets/projects.css.scss | 3 ++ .../app/controllers/projects_controller.rb | 28 +++++++++++++++++++ ticketee/app/helpers/projects_helper.rb | 2 ++ ticketee/app/models/project.rb | 2 ++ .../app/views/layouts/application.html.erb | 6 +++- ticketee/app/views/projects/index.html.erb | 1 + ticketee/app/views/projects/new.html.erb | 12 ++++++++ ticketee/app/views/projects/show.html.erb | 1 + ticketee/config/routes.rb | 2 ++ .../migrate/20141026051051_create_projects.rb | 10 +++++++ ticketee/db/schema.rb | 23 +++++++++++++++ .../controllers/projects_controller_spec.rb | 5 ++++ .../spec/features/creating_projects_spec.rb | 12 ++++++++ 14 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 ticketee/app/assets/javascripts/projects.js.coffee create mode 100644 ticketee/app/assets/stylesheets/projects.css.scss create mode 100644 ticketee/app/controllers/projects_controller.rb create mode 100644 ticketee/app/helpers/projects_helper.rb create mode 100644 ticketee/app/models/project.rb create mode 100644 ticketee/app/views/projects/index.html.erb create mode 100644 ticketee/app/views/projects/new.html.erb create mode 100644 ticketee/app/views/projects/show.html.erb create mode 100644 ticketee/db/migrate/20141026051051_create_projects.rb create mode 100644 ticketee/db/schema.rb create mode 100644 ticketee/spec/controllers/projects_controller_spec.rb create mode 100644 ticketee/spec/features/creating_projects_spec.rb diff --git a/ticketee/app/assets/javascripts/projects.js.coffee b/ticketee/app/assets/javascripts/projects.js.coffee new file mode 100644 index 0000000..24f83d1 --- /dev/null +++ b/ticketee/app/assets/javascripts/projects.js.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/ticketee/app/assets/stylesheets/projects.css.scss b/ticketee/app/assets/stylesheets/projects.css.scss new file mode 100644 index 0000000..d019266 --- /dev/null +++ b/ticketee/app/assets/stylesheets/projects.css.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the projects controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/ticketee/app/controllers/projects_controller.rb b/ticketee/app/controllers/projects_controller.rb new file mode 100644 index 0000000..9f3022a --- /dev/null +++ b/ticketee/app/controllers/projects_controller.rb @@ -0,0 +1,28 @@ +class ProjectsController < ApplicationController + def index + end + + def new + @project = Project.new + end + + def create + @project = Project.new(project_params) + if @project.save + flash[:notice] = "Project has been created." + redirect_to @project + else + # nothing, yet + end + end + + def show + @project = Project.find(params[:id]) + end + + private + + def project_params + params.require(:project).permit(:name, :description) + end +end diff --git a/ticketee/app/helpers/projects_helper.rb b/ticketee/app/helpers/projects_helper.rb new file mode 100644 index 0000000..db5c5ce --- /dev/null +++ b/ticketee/app/helpers/projects_helper.rb @@ -0,0 +1,2 @@ +module ProjectsHelper +end diff --git a/ticketee/app/models/project.rb b/ticketee/app/models/project.rb new file mode 100644 index 0000000..5bc7957 --- /dev/null +++ b/ticketee/app/models/project.rb @@ -0,0 +1,2 @@ +class Project < ActiveRecord::Base +end diff --git a/ticketee/app/views/layouts/application.html.erb b/ticketee/app/views/layouts/application.html.erb index c67190a..8e49337 100644 --- a/ticketee/app/views/layouts/application.html.erb +++ b/ticketee/app/views/layouts/application.html.erb @@ -7,7 +7,11 @@ <%= csrf_meta_tags %> - +<% flash.each do |key, value| %> +
+ <%= value %> +
+<% end %> <%= yield %> diff --git a/ticketee/app/views/projects/index.html.erb b/ticketee/app/views/projects/index.html.erb new file mode 100644 index 0000000..e893a38 --- /dev/null +++ b/ticketee/app/views/projects/index.html.erb @@ -0,0 +1 @@ +<%= link_to "New Project", new_project_path %> diff --git a/ticketee/app/views/projects/new.html.erb b/ticketee/app/views/projects/new.html.erb new file mode 100644 index 0000000..e63fb34 --- /dev/null +++ b/ticketee/app/views/projects/new.html.erb @@ -0,0 +1,12 @@ +

New Project

+<%= form_for(@project) do |f| %> +

+ <%= f.label :name %>
+ <%= f.text_field :name %> +

+

+ <%= f.label :description %>
+ <%= f.text_field :description %> +

+ <%= f.submit %> +<% end %> diff --git a/ticketee/app/views/projects/show.html.erb b/ticketee/app/views/projects/show.html.erb new file mode 100644 index 0000000..69c6ef8 --- /dev/null +++ b/ticketee/app/views/projects/show.html.erb @@ -0,0 +1 @@ +

<%= @project.name %>

diff --git a/ticketee/config/routes.rb b/ticketee/config/routes.rb index 3f66539..05acc35 100644 --- a/ticketee/config/routes.rb +++ b/ticketee/config/routes.rb @@ -1,4 +1,6 @@ Rails.application.routes.draw do + root "projects#index" + resources :projects # 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/ticketee/db/migrate/20141026051051_create_projects.rb b/ticketee/db/migrate/20141026051051_create_projects.rb new file mode 100644 index 0000000..a2905bc --- /dev/null +++ b/ticketee/db/migrate/20141026051051_create_projects.rb @@ -0,0 +1,10 @@ +class CreateProjects < ActiveRecord::Migration + def change + create_table :projects do |t| + t.string :name + t.string :description + + t.timestamps null: false + end + end +end diff --git a/ticketee/db/schema.rb b/ticketee/db/schema.rb new file mode 100644 index 0000000..e7a8edf --- /dev/null +++ b/ticketee/db/schema.rb @@ -0,0 +1,23 @@ +# 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: 20141026051051) do + + create_table "projects", force: true do |t| + t.string "name" + t.string "description" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + +end diff --git a/ticketee/spec/controllers/projects_controller_spec.rb b/ticketee/spec/controllers/projects_controller_spec.rb new file mode 100644 index 0000000..381640b --- /dev/null +++ b/ticketee/spec/controllers/projects_controller_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe ProjectsController, :type => :controller do + +end diff --git a/ticketee/spec/features/creating_projects_spec.rb b/ticketee/spec/features/creating_projects_spec.rb new file mode 100644 index 0000000..f8e1513 --- /dev/null +++ b/ticketee/spec/features/creating_projects_spec.rb @@ -0,0 +1,12 @@ +require 'rails_helper' + +feature 'Creating Projects' do + scenario "can create a project" do + visit '/' + click_link 'New Project' + fill_in 'Name', with: 'Sublime Text 3' + fill_in 'Description', with: 'A text-editor for all operating systems' + click_button 'Create Project' + expect(page).to have_content('Project has been created.') + end +end From b2d3dd439d1d8d4b027bd7f6c550e5ddea6f3f27 Mon Sep 17 00:00:00 2001 From: Ryan Bigg Date: Sun, 26 Oct 2014 21:13:58 +1100 Subject: [PATCH 04/16] Section 3.4.4: Add title functionality for show page --- ticketee/app/helpers/application_helper.rb | 7 +++++++ ticketee/app/views/layouts/application.html.erb | 8 +++++++- ticketee/app/views/projects/show.html.erb | 2 ++ ticketee/spec/features/creating_projects_spec.rb | 5 +++++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/ticketee/app/helpers/application_helper.rb b/ticketee/app/helpers/application_helper.rb index de6be79..1f1fea7 100644 --- a/ticketee/app/helpers/application_helper.rb +++ b/ticketee/app/helpers/application_helper.rb @@ -1,2 +1,9 @@ module ApplicationHelper + def title(*parts) + unless parts.empty? + content_for :title do + (parts << "Ticketee").join(" - ") + end + end + end end diff --git a/ticketee/app/views/layouts/application.html.erb b/ticketee/app/views/layouts/application.html.erb index 8e49337..d6820a7 100644 --- a/ticketee/app/views/layouts/application.html.erb +++ b/ticketee/app/views/layouts/application.html.erb @@ -1,7 +1,13 @@ - Ticketee + + <% if content_for?(:title) %> + <%= yield(:title) %> + <% else %> + Ticketee + <% end %> + <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> <%= csrf_meta_tags %> diff --git a/ticketee/app/views/projects/show.html.erb b/ticketee/app/views/projects/show.html.erb index 69c6ef8..44010c3 100644 --- a/ticketee/app/views/projects/show.html.erb +++ b/ticketee/app/views/projects/show.html.erb @@ -1 +1,3 @@ +<% title(@project.name, "Projects") %> +

<%= @project.name %>

diff --git a/ticketee/spec/features/creating_projects_spec.rb b/ticketee/spec/features/creating_projects_spec.rb index f8e1513..48d77e7 100644 --- a/ticketee/spec/features/creating_projects_spec.rb +++ b/ticketee/spec/features/creating_projects_spec.rb @@ -8,5 +8,10 @@ fill_in 'Description', with: 'A text-editor for all operating systems' click_button 'Create Project' expect(page).to have_content('Project has been created.') + + project = Project.find_by(name: "Sublime Text 3") + expect(page.current_url).to eql(project_url(project)) + title = "Sublime Text 3 - Projects - Ticketee" + expect(page).to have_title(title) end end From 45b3f29be31c7ea8ccb858173f019befb0a609e9 Mon Sep 17 00:00:00 2001 From: Ryan Bigg Date: Mon, 3 Nov 2014 17:06:21 +1100 Subject: [PATCH 05/16] Remove ticketee, start afresh{ --- ticketee/.gitignore | 16 -- ticketee/.rspec | 2 - ticketee/Gemfile | 51 ----- ticketee/Gemfile.lock | 190 ------------------ ticketee/README.rdoc | 28 --- ticketee/Rakefile | 6 - ticketee/app/assets/images/.keep | 0 .../app/assets/javascripts/application.js | 16 -- .../app/assets/javascripts/projects.js.coffee | 3 - .../app/assets/stylesheets/application.css | 15 -- .../app/assets/stylesheets/projects.css.scss | 3 - .../app/controllers/application_controller.rb | 5 - ticketee/app/controllers/concerns/.keep | 0 .../app/controllers/projects_controller.rb | 28 --- ticketee/app/helpers/application_helper.rb | 9 - ticketee/app/helpers/projects_helper.rb | 2 - ticketee/app/mailers/.keep | 0 ticketee/app/models/.keep | 0 ticketee/app/models/concerns/.keep | 0 ticketee/app/models/project.rb | 2 - .../app/views/layouts/application.html.erb | 24 --- ticketee/app/views/projects/index.html.erb | 1 - ticketee/app/views/projects/new.html.erb | 12 -- ticketee/app/views/projects/show.html.erb | 3 - ticketee/bin/bundle | 3 - ticketee/bin/rails | 4 - ticketee/bin/rake | 4 - ticketee/bin/rspec | 16 -- ticketee/bin/setup | 29 --- ticketee/config.ru | 4 - ticketee/config/application.rb | 26 --- ticketee/config/boot.rb | 3 - ticketee/config/database.yml | 25 --- ticketee/config/environment.rb | 5 - ticketee/config/environments/development.rb | 41 ---- ticketee/config/environments/production.rb | 77 ------- ticketee/config/environments/test.rb | 42 ---- ticketee/config/initializers/assets.rb | 11 - .../initializers/backtrace_silencers.rb | 7 - .../config/initializers/cookies_serializer.rb | 3 - .../initializers/filter_parameter_logging.rb | 4 - ticketee/config/initializers/inflections.rb | 16 -- ticketee/config/initializers/mime_types.rb | 4 - ticketee/config/initializers/session_store.rb | 3 - .../config/initializers/wrap_parameters.rb | 14 -- ticketee/config/locales/en.yml | 23 --- ticketee/config/routes.rb | 58 ------ ticketee/config/secrets.yml | 22 -- .../migrate/20141026051051_create_projects.rb | 10 - ticketee/db/schema.rb | 23 --- ticketee/db/seeds.rb | 7 - ticketee/lib/assets/.keep | 0 ticketee/lib/tasks/.keep | 0 ticketee/log/.keep | 0 ticketee/public/404.html | 67 ------ ticketee/public/422.html | 67 ------ ticketee/public/500.html | 66 ------ ticketee/public/favicon.ico | 0 ticketee/public/robots.txt | 5 - .../controllers/projects_controller_spec.rb | 5 - .../spec/features/creating_projects_spec.rb | 17 -- ticketee/spec/rails_helper.rb | 50 ----- ticketee/spec/spec_helper.rb | 85 -------- ticketee/test/controllers/.keep | 0 ticketee/test/fixtures/.keep | 0 ticketee/test/helpers/.keep | 0 ticketee/test/integration/.keep | 0 ticketee/test/mailers/.keep | 0 ticketee/test/models/.keep | 0 ticketee/test/test_helper.rb | 10 - ticketee/vendor/assets/javascripts/.keep | 0 ticketee/vendor/assets/stylesheets/.keep | 0 72 files changed, 1272 deletions(-) delete mode 100644 ticketee/.gitignore delete mode 100644 ticketee/.rspec delete mode 100644 ticketee/Gemfile delete mode 100644 ticketee/Gemfile.lock delete mode 100644 ticketee/README.rdoc delete mode 100644 ticketee/Rakefile delete mode 100644 ticketee/app/assets/images/.keep delete mode 100644 ticketee/app/assets/javascripts/application.js delete mode 100644 ticketee/app/assets/javascripts/projects.js.coffee delete mode 100644 ticketee/app/assets/stylesheets/application.css delete mode 100644 ticketee/app/assets/stylesheets/projects.css.scss delete mode 100644 ticketee/app/controllers/application_controller.rb delete mode 100644 ticketee/app/controllers/concerns/.keep delete mode 100644 ticketee/app/controllers/projects_controller.rb delete mode 100644 ticketee/app/helpers/application_helper.rb delete mode 100644 ticketee/app/helpers/projects_helper.rb delete mode 100644 ticketee/app/mailers/.keep delete mode 100644 ticketee/app/models/.keep delete mode 100644 ticketee/app/models/concerns/.keep delete mode 100644 ticketee/app/models/project.rb delete mode 100644 ticketee/app/views/layouts/application.html.erb delete mode 100644 ticketee/app/views/projects/index.html.erb delete mode 100644 ticketee/app/views/projects/new.html.erb delete mode 100644 ticketee/app/views/projects/show.html.erb delete mode 100755 ticketee/bin/bundle delete mode 100755 ticketee/bin/rails delete mode 100755 ticketee/bin/rake delete mode 100755 ticketee/bin/rspec delete mode 100755 ticketee/bin/setup delete mode 100644 ticketee/config.ru delete mode 100644 ticketee/config/application.rb delete mode 100644 ticketee/config/boot.rb delete mode 100644 ticketee/config/database.yml delete mode 100644 ticketee/config/environment.rb delete mode 100644 ticketee/config/environments/development.rb delete mode 100644 ticketee/config/environments/production.rb delete mode 100644 ticketee/config/environments/test.rb delete mode 100644 ticketee/config/initializers/assets.rb delete mode 100644 ticketee/config/initializers/backtrace_silencers.rb delete mode 100644 ticketee/config/initializers/cookies_serializer.rb delete mode 100644 ticketee/config/initializers/filter_parameter_logging.rb delete mode 100644 ticketee/config/initializers/inflections.rb delete mode 100644 ticketee/config/initializers/mime_types.rb delete mode 100644 ticketee/config/initializers/session_store.rb delete mode 100644 ticketee/config/initializers/wrap_parameters.rb delete mode 100644 ticketee/config/locales/en.yml delete mode 100644 ticketee/config/routes.rb delete mode 100644 ticketee/config/secrets.yml delete mode 100644 ticketee/db/migrate/20141026051051_create_projects.rb delete mode 100644 ticketee/db/schema.rb delete mode 100644 ticketee/db/seeds.rb delete mode 100644 ticketee/lib/assets/.keep delete mode 100644 ticketee/lib/tasks/.keep delete mode 100644 ticketee/log/.keep delete mode 100644 ticketee/public/404.html delete mode 100644 ticketee/public/422.html delete mode 100644 ticketee/public/500.html delete mode 100644 ticketee/public/favicon.ico delete mode 100644 ticketee/public/robots.txt delete mode 100644 ticketee/spec/controllers/projects_controller_spec.rb delete mode 100644 ticketee/spec/features/creating_projects_spec.rb delete mode 100644 ticketee/spec/rails_helper.rb delete mode 100644 ticketee/spec/spec_helper.rb delete mode 100644 ticketee/test/controllers/.keep delete mode 100644 ticketee/test/fixtures/.keep delete mode 100644 ticketee/test/helpers/.keep delete mode 100644 ticketee/test/integration/.keep delete mode 100644 ticketee/test/mailers/.keep delete mode 100644 ticketee/test/models/.keep delete mode 100644 ticketee/test/test_helper.rb delete mode 100644 ticketee/vendor/assets/javascripts/.keep delete mode 100644 ticketee/vendor/assets/stylesheets/.keep diff --git a/ticketee/.gitignore b/ticketee/.gitignore deleted file mode 100644 index 6a502e9..0000000 --- a/ticketee/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -# 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' - -# Ignore bundler config. -/.bundle - -# Ignore the default SQLite database. -/db/*.sqlite3 -/db/*.sqlite3-journal - -# Ignore all logfiles and tempfiles. -/log/*.log -/tmp diff --git a/ticketee/.rspec b/ticketee/.rspec deleted file mode 100644 index 83e16f8..0000000 --- a/ticketee/.rspec +++ /dev/null @@ -1,2 +0,0 @@ ---color ---require spec_helper diff --git a/ticketee/Gemfile b/ticketee/Gemfile deleted file mode 100644 index 1ccef7e..0000000 --- a/ticketee/Gemfile +++ /dev/null @@ -1,51 +0,0 @@ -source 'https://rubygems.org' - - -# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' -gem 'rails', '4.2.0.beta2' -# Use sqlite3 as the database for Active Record -gem 'sqlite3' -# Use SCSS for stylesheets -gem 'sass-rails', '~> 5.0.0.beta1' -# Use Uglifier as compressor for JavaScript assets -gem 'uglifier', '>= 1.3.0' -# Use CoffeeScript for .js.coffee assets and views -gem 'coffee-rails', '~> 4.0.0' -# See https://github.com/sstephenson/execjs#readme for more supported runtimes -# gem 'therubyracer', platforms: :ruby - -# Use jQuery as the JavaScript library -gem 'jquery-rails', '~> 4.0.0.beta2' -# 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 'debugger' anywhere in the code to stop execution and get a debugger console - gem 'byebug' - - # Access an IRB console on exception pages or by using <%= console %> in views - gem 'web-console', '~> 2.0.0.beta4' - - # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring - gem 'spring' - - gem 'rspec-rails', '3.1.0' -end - -group :test do - gem 'capybara', '2.4.4' -end - diff --git a/ticketee/Gemfile.lock b/ticketee/Gemfile.lock deleted file mode 100644 index 21aa59e..0000000 --- a/ticketee/Gemfile.lock +++ /dev/null @@ -1,190 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - actionmailer (4.2.0.beta2) - actionpack (= 4.2.0.beta2) - actionview (= 4.2.0.beta2) - activejob (= 4.2.0.beta2) - mail (~> 2.5, >= 2.5.4) - rails-dom-testing (~> 1.0, >= 1.0.3) - actionpack (4.2.0.beta2) - actionview (= 4.2.0.beta2) - activesupport (= 4.2.0.beta2) - rack (~> 1.6.0.beta) - rack-test (~> 0.6.2) - rails-dom-testing (~> 1.0, >= 1.0.3) - rails-html-sanitizer (~> 1.0, >= 1.0.1) - actionview (4.2.0.beta2) - activesupport (= 4.2.0.beta2) - builder (~> 3.1) - erubis (~> 2.7.0) - rails-dom-testing (~> 1.0, >= 1.0.3) - rails-html-sanitizer (~> 1.0, >= 1.0.1) - activejob (4.2.0.beta2) - activesupport (= 4.2.0.beta2) - globalid (>= 0.3.0) - activemodel (4.2.0.beta2) - activesupport (= 4.2.0.beta2) - builder (~> 3.1) - activerecord (4.2.0.beta2) - activemodel (= 4.2.0.beta2) - activesupport (= 4.2.0.beta2) - arel (>= 6.0.0.beta1, < 6.1) - activesupport (4.2.0.beta2) - i18n (>= 0.7.0.beta1, < 0.8) - json (~> 1.7, >= 1.7.7) - minitest (~> 5.1) - thread_safe (~> 0.1) - tzinfo (~> 1.1) - arel (6.0.0.beta1) - binding_of_caller (0.7.3.pre1) - debug_inspector (>= 0.0.1) - builder (3.2.2) - byebug (3.5.1) - columnize (~> 0.8) - debugger-linecache (~> 1.2) - slop (~> 3.6) - capybara (2.4.4) - mime-types (>= 1.16) - nokogiri (>= 1.3.3) - rack (>= 1.0.0) - rack-test (>= 0.5.4) - xpath (~> 2.0) - coffee-rails (4.0.1) - coffee-script (>= 2.2.0) - railties (>= 4.0.0, < 5.0) - coffee-script (2.3.0) - coffee-script-source - execjs - coffee-script-source (1.8.0) - columnize (0.8.9) - debug_inspector (0.0.2) - debugger-linecache (1.2.0) - diff-lcs (1.2.5) - erubis (2.7.0) - execjs (2.2.2) - globalid (0.3.0) - activesupport (>= 4.1.0) - hike (1.2.3) - i18n (0.7.0.beta1) - jbuilder (2.2.4) - activesupport (>= 3.0.0, < 5) - multi_json (~> 1.2) - jquery-rails (4.0.0.beta2) - rails-dom-testing (~> 1.0) - railties (>= 4.2.0.beta, < 5.0) - thor (>= 0.14, < 2.0) - json (1.8.1) - loofah (2.0.1) - nokogiri (>= 1.5.9) - mail (2.6.1) - mime-types (>= 1.16, < 3) - mime-types (2.4.3) - mini_portile (0.6.0) - minitest (5.4.2) - multi_json (1.10.1) - nokogiri (1.6.3.1) - mini_portile (= 0.6.0) - rack (1.6.0.beta) - rack-test (0.6.2) - rack (>= 1.0) - rails (4.2.0.beta2) - actionmailer (= 4.2.0.beta2) - actionpack (= 4.2.0.beta2) - actionview (= 4.2.0.beta2) - activejob (= 4.2.0.beta2) - activemodel (= 4.2.0.beta2) - activerecord (= 4.2.0.beta2) - activesupport (= 4.2.0.beta2) - bundler (>= 1.3.0, < 2.0) - railties (= 4.2.0.beta2) - sprockets-rails (~> 3.0.0.beta1) - rails-deprecated_sanitizer (1.0.3) - activesupport (>= 4.2.0.alpha) - rails-dom-testing (1.0.4) - activesupport (>= 4.2.0.beta, < 5.0) - nokogiri (~> 1.6.0) - rails-deprecated_sanitizer (>= 1.0.1) - rails-html-sanitizer (1.0.1) - loofah (~> 2.0) - railties (4.2.0.beta2) - actionpack (= 4.2.0.beta2) - activesupport (= 4.2.0.beta2) - rake (>= 0.8.7) - thor (>= 0.18.1, < 2.0) - rake (10.3.2) - rdoc (4.1.2) - json (~> 1.4) - rspec-core (3.1.7) - rspec-support (~> 3.1.0) - rspec-expectations (3.1.2) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.1.0) - rspec-mocks (3.1.3) - rspec-support (~> 3.1.0) - rspec-rails (3.1.0) - actionpack (>= 3.0) - activesupport (>= 3.0) - railties (>= 3.0) - rspec-core (~> 3.1.0) - rspec-expectations (~> 3.1.0) - rspec-mocks (~> 3.1.0) - rspec-support (~> 3.1.0) - rspec-support (3.1.2) - sass (3.4.6) - sass-rails (5.0.0.beta1) - railties (>= 4.0.0, < 5.0) - sass (~> 3.2) - sprockets (~> 2.12) - sprockets-rails (>= 2.0, < 4.0) - sdoc (0.4.1) - json (~> 1.7, >= 1.7.7) - rdoc (~> 4.0) - slop (3.6.0) - spring (1.1.3) - sprockets (2.12.2) - hike (~> 1.2) - multi_json (~> 1.0) - rack (~> 1.0) - tilt (~> 1.1, != 1.3.0) - sprockets-rails (3.0.0.beta1) - actionpack (>= 4.0) - activesupport (>= 4.0) - sprockets (~> 2.8) - sqlite3 (1.3.9) - thor (0.19.1) - thread_safe (0.3.4) - tilt (1.4.1) - turbolinks (2.4.0) - coffee-rails - tzinfo (1.2.2) - thread_safe (~> 0.1) - uglifier (2.5.3) - execjs (>= 0.3.0) - json (>= 1.8.0) - web-console (2.0.0.beta4) - activemodel (~> 4.0) - binding_of_caller (= 0.7.3.pre1) - railties (~> 4.0) - sprockets-rails (>= 2.0, < 4.0) - xpath (2.0.0) - nokogiri (~> 1.3) - -PLATFORMS - ruby - -DEPENDENCIES - byebug - capybara (= 2.4.4) - coffee-rails (~> 4.0.0) - jbuilder (~> 2.0) - jquery-rails (~> 4.0.0.beta2) - rails (= 4.2.0.beta2) - rspec-rails (= 3.1.0) - sass-rails (~> 5.0.0.beta1) - sdoc (~> 0.4.0) - spring - sqlite3 - turbolinks - uglifier (>= 1.3.0) - web-console (~> 2.0.0.beta4) diff --git a/ticketee/README.rdoc b/ticketee/README.rdoc deleted file mode 100644 index dd4e97e..0000000 --- a/ticketee/README.rdoc +++ /dev/null @@ -1,28 +0,0 @@ -== 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/ticketee/Rakefile b/ticketee/Rakefile deleted file mode 100644 index ba6b733..0000000 --- a/ticketee/Rakefile +++ /dev/null @@ -1,6 +0,0 @@ -# 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/ticketee/app/assets/images/.keep b/ticketee/app/assets/images/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/ticketee/app/assets/javascripts/application.js b/ticketee/app/assets/javascripts/application.js deleted file mode 100644 index d6925fa..0000000 --- a/ticketee/app/assets/javascripts/application.js +++ /dev/null @@ -1,16 +0,0 @@ -// 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 vendor/assets/javascripts of plugins, if any, 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/sstephenson/sprockets#sprockets-directives) for details -// about supported directives. -// -//= require jquery -//= require jquery_ujs -//= require turbolinks -//= require_tree . diff --git a/ticketee/app/assets/javascripts/projects.js.coffee b/ticketee/app/assets/javascripts/projects.js.coffee deleted file mode 100644 index 24f83d1..0000000 --- a/ticketee/app/assets/javascripts/projects.js.coffee +++ /dev/null @@ -1,3 +0,0 @@ -# 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/ticketee/app/assets/stylesheets/application.css b/ticketee/app/assets/stylesheets/application.css deleted file mode 100644 index a443db3..0000000 --- a/ticketee/app/assets/stylesheets/application.css +++ /dev/null @@ -1,15 +0,0 @@ -/* - * 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 vendor/assets/stylesheets of plugins, if any, 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/ticketee/app/assets/stylesheets/projects.css.scss b/ticketee/app/assets/stylesheets/projects.css.scss deleted file mode 100644 index d019266..0000000 --- a/ticketee/app/assets/stylesheets/projects.css.scss +++ /dev/null @@ -1,3 +0,0 @@ -// Place all the styles related to the projects controller here. -// They will automatically be included in application.css. -// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/ticketee/app/controllers/application_controller.rb b/ticketee/app/controllers/application_controller.rb deleted file mode 100644 index d83690e..0000000 --- a/ticketee/app/controllers/application_controller.rb +++ /dev/null @@ -1,5 +0,0 @@ -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/ticketee/app/controllers/concerns/.keep b/ticketee/app/controllers/concerns/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/ticketee/app/controllers/projects_controller.rb b/ticketee/app/controllers/projects_controller.rb deleted file mode 100644 index 9f3022a..0000000 --- a/ticketee/app/controllers/projects_controller.rb +++ /dev/null @@ -1,28 +0,0 @@ -class ProjectsController < ApplicationController - def index - end - - def new - @project = Project.new - end - - def create - @project = Project.new(project_params) - if @project.save - flash[:notice] = "Project has been created." - redirect_to @project - else - # nothing, yet - end - end - - def show - @project = Project.find(params[:id]) - end - - private - - def project_params - params.require(:project).permit(:name, :description) - end -end diff --git a/ticketee/app/helpers/application_helper.rb b/ticketee/app/helpers/application_helper.rb deleted file mode 100644 index 1f1fea7..0000000 --- a/ticketee/app/helpers/application_helper.rb +++ /dev/null @@ -1,9 +0,0 @@ -module ApplicationHelper - def title(*parts) - unless parts.empty? - content_for :title do - (parts << "Ticketee").join(" - ") - end - end - end -end diff --git a/ticketee/app/helpers/projects_helper.rb b/ticketee/app/helpers/projects_helper.rb deleted file mode 100644 index db5c5ce..0000000 --- a/ticketee/app/helpers/projects_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module ProjectsHelper -end diff --git a/ticketee/app/mailers/.keep b/ticketee/app/mailers/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/ticketee/app/models/.keep b/ticketee/app/models/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/ticketee/app/models/concerns/.keep b/ticketee/app/models/concerns/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/ticketee/app/models/project.rb b/ticketee/app/models/project.rb deleted file mode 100644 index 5bc7957..0000000 --- a/ticketee/app/models/project.rb +++ /dev/null @@ -1,2 +0,0 @@ -class Project < ActiveRecord::Base -end diff --git a/ticketee/app/views/layouts/application.html.erb b/ticketee/app/views/layouts/application.html.erb deleted file mode 100644 index d6820a7..0000000 --- a/ticketee/app/views/layouts/application.html.erb +++ /dev/null @@ -1,24 +0,0 @@ - - - - - <% if content_for?(:title) %> - <%= yield(:title) %> - <% else %> - Ticketee - <% end %> - - <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> - <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> - <%= csrf_meta_tags %> - - -<% flash.each do |key, value| %> -
- <%= value %> -
-<% end %> -<%= yield %> - - - diff --git a/ticketee/app/views/projects/index.html.erb b/ticketee/app/views/projects/index.html.erb deleted file mode 100644 index e893a38..0000000 --- a/ticketee/app/views/projects/index.html.erb +++ /dev/null @@ -1 +0,0 @@ -<%= link_to "New Project", new_project_path %> diff --git a/ticketee/app/views/projects/new.html.erb b/ticketee/app/views/projects/new.html.erb deleted file mode 100644 index e63fb34..0000000 --- a/ticketee/app/views/projects/new.html.erb +++ /dev/null @@ -1,12 +0,0 @@ -

New Project

-<%= form_for(@project) do |f| %> -

- <%= f.label :name %>
- <%= f.text_field :name %> -

-

- <%= f.label :description %>
- <%= f.text_field :description %> -

- <%= f.submit %> -<% end %> diff --git a/ticketee/app/views/projects/show.html.erb b/ticketee/app/views/projects/show.html.erb deleted file mode 100644 index 44010c3..0000000 --- a/ticketee/app/views/projects/show.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -<% title(@project.name, "Projects") %> - -

<%= @project.name %>

diff --git a/ticketee/bin/bundle b/ticketee/bin/bundle deleted file mode 100755 index 66e9889..0000000 --- a/ticketee/bin/bundle +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env ruby -ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) -load Gem.bin_path('bundler', 'bundle') diff --git a/ticketee/bin/rails b/ticketee/bin/rails deleted file mode 100755 index 728cd85..0000000 --- a/ticketee/bin/rails +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env ruby -APP_PATH = File.expand_path('../../config/application', __FILE__) -require_relative '../config/boot' -require 'rails/commands' diff --git a/ticketee/bin/rake b/ticketee/bin/rake deleted file mode 100755 index 1724048..0000000 --- a/ticketee/bin/rake +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env ruby -require_relative '../config/boot' -require 'rake' -Rake.application.run diff --git a/ticketee/bin/rspec b/ticketee/bin/rspec deleted file mode 100755 index 0c86b5c..0000000 --- a/ticketee/bin/rspec +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env ruby -# -# This file was generated by Bundler. -# -# The application 'rspec' is installed as part of a gem, and -# this file is here to facilitate running it. -# - -require 'pathname' -ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile", - Pathname.new(__FILE__).realpath) - -require 'rubygems' -require 'bundler/setup' - -load Gem.bin_path('rspec-core', 'rspec') diff --git a/ticketee/bin/setup b/ticketee/bin/setup deleted file mode 100755 index acdb2c1..0000000 --- a/ticketee/bin/setup +++ /dev/null @@ -1,29 +0,0 @@ -#!/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/ticketee/config.ru b/ticketee/config.ru deleted file mode 100644 index 5bc2a61..0000000 --- a/ticketee/config.ru +++ /dev/null @@ -1,4 +0,0 @@ -# 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/ticketee/config/application.rb b/ticketee/config/application.rb deleted file mode 100644 index 503f3d6..0000000 --- a/ticketee/config/application.rb +++ /dev/null @@ -1,26 +0,0 @@ -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 Ticketee - 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/ticketee/config/boot.rb b/ticketee/config/boot.rb deleted file mode 100644 index 6b750f0..0000000 --- a/ticketee/config/boot.rb +++ /dev/null @@ -1,3 +0,0 @@ -ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) - -require 'bundler/setup' # Set up gems listed in the Gemfile. diff --git a/ticketee/config/database.yml b/ticketee/config/database.yml deleted file mode 100644 index 1c1a37c..0000000 --- a/ticketee/config/database.yml +++ /dev/null @@ -1,25 +0,0 @@ -# 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/ticketee/config/environment.rb b/ticketee/config/environment.rb deleted file mode 100644 index ee8d90d..0000000 --- a/ticketee/config/environment.rb +++ /dev/null @@ -1,5 +0,0 @@ -# Load the Rails application. -require File.expand_path('../application', __FILE__) - -# Initialize the Rails application. -Rails.application.initialize! diff --git a/ticketee/config/environments/development.rb b/ticketee/config/environments/development.rb deleted file mode 100644 index b55e214..0000000 --- a/ticketee/config/environments/development.rb +++ /dev/null @@ -1,41 +0,0 @@ -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/ticketee/config/environments/production.rb b/ticketee/config/environments/production.rb deleted file mode 100644 index 7c01713..0000000 --- a/ticketee/config/environments/production.rb +++ /dev/null @@ -1,77 +0,0 @@ -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 Rails's static asset server (Apache or NGINX will already do this). - config.serve_static_assets = false - - # 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 - - # Decrease the log volume. - # config.log_level = :info - - # 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/ticketee/config/environments/test.rb b/ticketee/config/environments/test.rb deleted file mode 100644 index 32756eb..0000000 --- a/ticketee/config/environments/test.rb +++ /dev/null @@ -1,42 +0,0 @@ -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 asset server for tests with Cache-Control for performance. - config.serve_static_assets = 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/ticketee/config/initializers/assets.rb b/ticketee/config/initializers/assets.rb deleted file mode 100644 index 01ef3e6..0000000 --- a/ticketee/config/initializers/assets.rb +++ /dev/null @@ -1,11 +0,0 @@ -# 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/ticketee/config/initializers/backtrace_silencers.rb b/ticketee/config/initializers/backtrace_silencers.rb deleted file mode 100644 index 59385cd..0000000 --- a/ticketee/config/initializers/backtrace_silencers.rb +++ /dev/null @@ -1,7 +0,0 @@ -# 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/ticketee/config/initializers/cookies_serializer.rb b/ticketee/config/initializers/cookies_serializer.rb deleted file mode 100644 index 7f70458..0000000 --- a/ticketee/config/initializers/cookies_serializer.rb +++ /dev/null @@ -1,3 +0,0 @@ -# Be sure to restart your server when you modify this file. - -Rails.application.config.action_dispatch.cookies_serializer = :json diff --git a/ticketee/config/initializers/filter_parameter_logging.rb b/ticketee/config/initializers/filter_parameter_logging.rb deleted file mode 100644 index 4a994e1..0000000 --- a/ticketee/config/initializers/filter_parameter_logging.rb +++ /dev/null @@ -1,4 +0,0 @@ -# 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/ticketee/config/initializers/inflections.rb b/ticketee/config/initializers/inflections.rb deleted file mode 100644 index ac033bf..0000000 --- a/ticketee/config/initializers/inflections.rb +++ /dev/null @@ -1,16 +0,0 @@ -# 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/ticketee/config/initializers/mime_types.rb b/ticketee/config/initializers/mime_types.rb deleted file mode 100644 index dc18996..0000000 --- a/ticketee/config/initializers/mime_types.rb +++ /dev/null @@ -1,4 +0,0 @@ -# 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/ticketee/config/initializers/session_store.rb b/ticketee/config/initializers/session_store.rb deleted file mode 100644 index a83ac4a..0000000 --- a/ticketee/config/initializers/session_store.rb +++ /dev/null @@ -1,3 +0,0 @@ -# Be sure to restart your server when you modify this file. - -Rails.application.config.session_store :cookie_store, key: '_ticketee_session' diff --git a/ticketee/config/initializers/wrap_parameters.rb b/ticketee/config/initializers/wrap_parameters.rb deleted file mode 100644 index 33725e9..0000000 --- a/ticketee/config/initializers/wrap_parameters.rb +++ /dev/null @@ -1,14 +0,0 @@ -# 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/ticketee/config/locales/en.yml b/ticketee/config/locales/en.yml deleted file mode 100644 index 0653957..0000000 --- a/ticketee/config/locales/en.yml +++ /dev/null @@ -1,23 +0,0 @@ -# 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/ticketee/config/routes.rb b/ticketee/config/routes.rb deleted file mode 100644 index 05acc35..0000000 --- a/ticketee/config/routes.rb +++ /dev/null @@ -1,58 +0,0 @@ -Rails.application.routes.draw do - root "projects#index" - resources :projects - # 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/ticketee/config/secrets.yml b/ticketee/config/secrets.yml deleted file mode 100644 index 35e6a16..0000000 --- a/ticketee/config/secrets.yml +++ /dev/null @@ -1,22 +0,0 @@ -# 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: 71d1eb692a493a4a819032e4ebad9c00e2ea98acaeb5524bbe96a4f8fd010e342971483b9f43976819188252c454ce17471beecb62fab77a823c0a28aae2979b - -test: - secret_key_base: e192f1d37e02882331568a85ea3c03361ba091accf829c9b3bf0128ccfc1fca5671a86585542b56d6ebf413e15e0d3a5a9e261158e053b6f00be41e625348951 - -# 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/ticketee/db/migrate/20141026051051_create_projects.rb b/ticketee/db/migrate/20141026051051_create_projects.rb deleted file mode 100644 index a2905bc..0000000 --- a/ticketee/db/migrate/20141026051051_create_projects.rb +++ /dev/null @@ -1,10 +0,0 @@ -class CreateProjects < ActiveRecord::Migration - def change - create_table :projects do |t| - t.string :name - t.string :description - - t.timestamps null: false - end - end -end diff --git a/ticketee/db/schema.rb b/ticketee/db/schema.rb deleted file mode 100644 index e7a8edf..0000000 --- a/ticketee/db/schema.rb +++ /dev/null @@ -1,23 +0,0 @@ -# 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: 20141026051051) do - - create_table "projects", force: true do |t| - t.string "name" - t.string "description" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - end - -end diff --git a/ticketee/db/seeds.rb b/ticketee/db/seeds.rb deleted file mode 100644 index 4edb1e8..0000000 --- a/ticketee/db/seeds.rb +++ /dev/null @@ -1,7 +0,0 @@ -# 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/ticketee/lib/assets/.keep b/ticketee/lib/assets/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/ticketee/lib/tasks/.keep b/ticketee/lib/tasks/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/ticketee/log/.keep b/ticketee/log/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/ticketee/public/404.html b/ticketee/public/404.html deleted file mode 100644 index b612547..0000000 --- a/ticketee/public/404.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - 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/ticketee/public/422.html b/ticketee/public/422.html deleted file mode 100644 index a21f82b..0000000 --- a/ticketee/public/422.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - 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/ticketee/public/500.html b/ticketee/public/500.html deleted file mode 100644 index 061abc5..0000000 --- a/ticketee/public/500.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - 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/ticketee/public/favicon.ico b/ticketee/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/ticketee/public/robots.txt b/ticketee/public/robots.txt deleted file mode 100644 index 3c9c7c0..0000000 --- a/ticketee/public/robots.txt +++ /dev/null @@ -1,5 +0,0 @@ -# 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/ticketee/spec/controllers/projects_controller_spec.rb b/ticketee/spec/controllers/projects_controller_spec.rb deleted file mode 100644 index 381640b..0000000 --- a/ticketee/spec/controllers/projects_controller_spec.rb +++ /dev/null @@ -1,5 +0,0 @@ -require 'rails_helper' - -RSpec.describe ProjectsController, :type => :controller do - -end diff --git a/ticketee/spec/features/creating_projects_spec.rb b/ticketee/spec/features/creating_projects_spec.rb deleted file mode 100644 index 48d77e7..0000000 --- a/ticketee/spec/features/creating_projects_spec.rb +++ /dev/null @@ -1,17 +0,0 @@ -require 'rails_helper' - -feature 'Creating Projects' do - scenario "can create a project" do - visit '/' - click_link 'New Project' - fill_in 'Name', with: 'Sublime Text 3' - fill_in 'Description', with: 'A text-editor for all operating systems' - click_button 'Create Project' - expect(page).to have_content('Project has been created.') - - project = Project.find_by(name: "Sublime Text 3") - expect(page.current_url).to eql(project_url(project)) - title = "Sublime Text 3 - Projects - Ticketee" - expect(page).to have_title(title) - end -end diff --git a/ticketee/spec/rails_helper.rb b/ticketee/spec/rails_helper.rb deleted file mode 100644 index e6c0b68..0000000 --- a/ticketee/spec/rails_helper.rb +++ /dev/null @@ -1,50 +0,0 @@ -# This file is copied to spec/ when you run 'rails generate rspec:install' -ENV["RAILS_ENV"] ||= 'test' -require 'spec_helper' -require File.expand_path("../../config/environment", __FILE__) -require 'rspec/rails' -# Add additional requires below this line. Rails is not loaded until this point! - -# Requires supporting ruby files with custom matchers and macros, etc, in -# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are -# run as spec files by default. This means that files in spec/support that end -# in _spec.rb will both be required and run as specs, causing the specs to be -# run twice. It is recommended that you do not name files matching this glob to -# end with _spec.rb. You can configure this pattern with the --pattern -# option on the command line or in ~/.rspec, .rspec or `.rspec-local`. -# -# The following line is provided for convenience purposes. It has the downside -# of increasing the boot-up time by auto-requiring all files in the support -# directory. Alternatively, in the individual `*_spec.rb` files, manually -# require only the support files necessary. -# -# Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } - -# Checks for pending migrations before tests are run. -# If you are not using ActiveRecord, you can remove this line. -ActiveRecord::Migration.maintain_test_schema! - -RSpec.configure do |config| - # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures - config.fixture_path = "#{::Rails.root}/spec/fixtures" - - # If you're not using ActiveRecord, or you'd prefer not to run each of your - # examples within a transaction, remove the following line or assign false - # instead of true. - config.use_transactional_fixtures = true - - # RSpec Rails can automatically mix in different behaviours to your tests - # based on their file location, for example enabling you to call `get` and - # `post` in specs under `spec/controllers`. - # - # You can disable this behaviour by removing the line below, and instead - # explicitly tag your specs with their type, e.g.: - # - # RSpec.describe UsersController, :type => :controller do - # # ... - # end - # - # The different available types are documented in the features, such as in - # https://relishapp.com/rspec/rspec-rails/docs - config.infer_spec_type_from_file_location! -end diff --git a/ticketee/spec/spec_helper.rb b/ticketee/spec/spec_helper.rb deleted file mode 100644 index 275ba49..0000000 --- a/ticketee/spec/spec_helper.rb +++ /dev/null @@ -1,85 +0,0 @@ -# This file was generated by the `rails generate rspec:install` command. Conventionally, all -# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`. -# The generated `.rspec` file contains `--require spec_helper` which will cause this -# file to always be loaded, without a need to explicitly require it in any files. -# -# Given that it is always loaded, you are encouraged to keep this file as -# light-weight as possible. Requiring heavyweight dependencies from this file -# will add to the boot time of your test suite on EVERY test run, even for an -# individual file that may not need all of that loaded. Instead, consider making -# a separate helper file that requires the additional dependencies and performs -# the additional setup, and require it from the spec files that actually need it. -# -# The `.rspec` file also contains a few flags that are not defaults but that -# users commonly want. -# -# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration -RSpec.configure do |config| - # rspec-expectations config goes here. You can use an alternate - # assertion/expectation library such as wrong or the stdlib/minitest - # assertions if you prefer. - config.expect_with :rspec do |expectations| - # This option will default to `true` in RSpec 4. It makes the `description` - # and `failure_message` of custom matchers include text for helper methods - # defined using `chain`, e.g.: - # be_bigger_than(2).and_smaller_than(4).description - # # => "be bigger than 2 and smaller than 4" - # ...rather than: - # # => "be bigger than 2" - expectations.include_chain_clauses_in_custom_matcher_descriptions = true - end - - # rspec-mocks config goes here. You can use an alternate test double - # library (such as bogus or mocha) by changing the `mock_with` option here. - config.mock_with :rspec do |mocks| - # Prevents you from mocking or stubbing a method that does not exist on - # a real object. This is generally recommended, and will default to - # `true` in RSpec 4. - mocks.verify_partial_doubles = true - end - -# The settings below are suggested to provide a good initial experience -# with RSpec, but feel free to customize to your heart's content. -=begin - # These two settings work together to allow you to limit a spec run - # to individual examples or groups you care about by tagging them with - # `:focus` metadata. When nothing is tagged with `:focus`, all examples - # get run. - config.filter_run :focus - config.run_all_when_everything_filtered = true - - # Limits the available syntax to the non-monkey patched syntax that is recommended. - # For more details, see: - # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax - # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/ - # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching - config.disable_monkey_patching! - - # Many RSpec users commonly either run the entire suite or an individual - # file, and it's useful to allow more verbose output when running an - # individual spec file. - if config.files_to_run.one? - # Use the documentation formatter for detailed output, - # unless a formatter has already been configured - # (e.g. via a command-line flag). - config.default_formatter = 'doc' - end - - # Print the 10 slowest examples and example groups at the - # end of the spec run, to help surface which specs are running - # particularly slow. - config.profile_examples = 10 - - # Run specs in random order to surface order dependencies. If you find an - # order dependency and want to debug it, you can fix the order by providing - # the seed, which is printed after each run. - # --seed 1234 - config.order = :random - - # Seed global randomization in this process using the `--seed` CLI option. - # Setting this allows you to use `--seed` to deterministically reproduce - # test failures related to randomization by passing the same `--seed` value - # as the one that triggered the failure. - Kernel.srand config.seed -=end -end diff --git a/ticketee/test/controllers/.keep b/ticketee/test/controllers/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/ticketee/test/fixtures/.keep b/ticketee/test/fixtures/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/ticketee/test/helpers/.keep b/ticketee/test/helpers/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/ticketee/test/integration/.keep b/ticketee/test/integration/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/ticketee/test/mailers/.keep b/ticketee/test/mailers/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/ticketee/test/models/.keep b/ticketee/test/models/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/ticketee/test/test_helper.rb b/ticketee/test/test_helper.rb deleted file mode 100644 index 92e39b2..0000000 --- a/ticketee/test/test_helper.rb +++ /dev/null @@ -1,10 +0,0 @@ -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/ticketee/vendor/assets/javascripts/.keep b/ticketee/vendor/assets/javascripts/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/ticketee/vendor/assets/stylesheets/.keep b/ticketee/vendor/assets/stylesheets/.keep deleted file mode 100644 index e69de29..0000000 From 98ee7a5b6c8c62dacd41933bbb1bfb94d0d835b8 Mon Sep 17 00:00:00 2001 From: Ryan Bigg Date: Mon, 3 Nov 2014 17:10:29 +1100 Subject: [PATCH 06/16] Section 3.3.1: Set up gem dependencies and run rspec generator --- ticketee/.gitignore | 16 ++ ticketee/.rspec | 2 + ticketee/Gemfile | 51 +++++ ticketee/Gemfile.lock | 190 ++++++++++++++++++ ticketee/README.rdoc | 28 +++ ticketee/Rakefile | 6 + ticketee/app/assets/images/.keep | 0 .../app/assets/javascripts/application.js | 16 ++ .../app/assets/stylesheets/application.css | 15 ++ .../app/controllers/application_controller.rb | 5 + ticketee/app/controllers/concerns/.keep | 0 ticketee/app/helpers/application_helper.rb | 2 + ticketee/app/mailers/.keep | 0 ticketee/app/models/.keep | 0 ticketee/app/models/concerns/.keep | 0 .../app/views/layouts/application.html.erb | 14 ++ ticketee/bin/bundle | 3 + ticketee/bin/rails | 8 + ticketee/bin/rake | 8 + ticketee/bin/rspec | 16 ++ ticketee/bin/setup | 29 +++ ticketee/bin/spring | 18 ++ ticketee/config.ru | 4 + ticketee/config/application.rb | 26 +++ ticketee/config/boot.rb | 3 + ticketee/config/database.yml | 25 +++ ticketee/config/environment.rb | 5 + ticketee/config/environments/development.rb | 41 ++++ ticketee/config/environments/production.rb | 77 +++++++ ticketee/config/environments/test.rb | 42 ++++ ticketee/config/initializers/assets.rb | 11 + .../initializers/backtrace_silencers.rb | 7 + .../config/initializers/cookies_serializer.rb | 3 + .../initializers/filter_parameter_logging.rb | 4 + ticketee/config/initializers/inflections.rb | 16 ++ ticketee/config/initializers/mime_types.rb | 4 + ticketee/config/initializers/session_store.rb | 3 + .../config/initializers/wrap_parameters.rb | 14 ++ ticketee/config/locales/en.yml | 23 +++ ticketee/config/routes.rb | 56 ++++++ ticketee/config/secrets.yml | 22 ++ ticketee/db/seeds.rb | 7 + ticketee/lib/assets/.keep | 0 ticketee/lib/tasks/.keep | 0 ticketee/log/.keep | 0 ticketee/public/404.html | 67 ++++++ ticketee/public/422.html | 67 ++++++ ticketee/public/500.html | 66 ++++++ ticketee/public/favicon.ico | 0 ticketee/public/robots.txt | 5 + ticketee/spec/rails_helper.rb | 50 +++++ ticketee/spec/spec_helper.rb | 85 ++++++++ ticketee/test/controllers/.keep | 0 ticketee/test/fixtures/.keep | 0 ticketee/test/helpers/.keep | 0 ticketee/test/integration/.keep | 0 ticketee/test/mailers/.keep | 0 ticketee/test/models/.keep | 0 ticketee/test/test_helper.rb | 10 + ticketee/vendor/assets/javascripts/.keep | 0 ticketee/vendor/assets/stylesheets/.keep | 0 61 files changed, 1170 insertions(+) create mode 100644 ticketee/.gitignore create mode 100644 ticketee/.rspec create mode 100644 ticketee/Gemfile create mode 100644 ticketee/Gemfile.lock create mode 100644 ticketee/README.rdoc create mode 100644 ticketee/Rakefile create mode 100644 ticketee/app/assets/images/.keep create mode 100644 ticketee/app/assets/javascripts/application.js create mode 100644 ticketee/app/assets/stylesheets/application.css create mode 100644 ticketee/app/controllers/application_controller.rb create mode 100644 ticketee/app/controllers/concerns/.keep create mode 100644 ticketee/app/helpers/application_helper.rb create mode 100644 ticketee/app/mailers/.keep create mode 100644 ticketee/app/models/.keep create mode 100644 ticketee/app/models/concerns/.keep create mode 100644 ticketee/app/views/layouts/application.html.erb create mode 100755 ticketee/bin/bundle create mode 100755 ticketee/bin/rails create mode 100755 ticketee/bin/rake create mode 100755 ticketee/bin/rspec create mode 100755 ticketee/bin/setup create mode 100755 ticketee/bin/spring create mode 100644 ticketee/config.ru create mode 100644 ticketee/config/application.rb create mode 100644 ticketee/config/boot.rb create mode 100644 ticketee/config/database.yml create mode 100644 ticketee/config/environment.rb create mode 100644 ticketee/config/environments/development.rb create mode 100644 ticketee/config/environments/production.rb create mode 100644 ticketee/config/environments/test.rb create mode 100644 ticketee/config/initializers/assets.rb create mode 100644 ticketee/config/initializers/backtrace_silencers.rb create mode 100644 ticketee/config/initializers/cookies_serializer.rb create mode 100644 ticketee/config/initializers/filter_parameter_logging.rb create mode 100644 ticketee/config/initializers/inflections.rb create mode 100644 ticketee/config/initializers/mime_types.rb create mode 100644 ticketee/config/initializers/session_store.rb create mode 100644 ticketee/config/initializers/wrap_parameters.rb create mode 100644 ticketee/config/locales/en.yml create mode 100644 ticketee/config/routes.rb create mode 100644 ticketee/config/secrets.yml create mode 100644 ticketee/db/seeds.rb create mode 100644 ticketee/lib/assets/.keep create mode 100644 ticketee/lib/tasks/.keep create mode 100644 ticketee/log/.keep create mode 100644 ticketee/public/404.html create mode 100644 ticketee/public/422.html create mode 100644 ticketee/public/500.html create mode 100644 ticketee/public/favicon.ico create mode 100644 ticketee/public/robots.txt create mode 100644 ticketee/spec/rails_helper.rb create mode 100644 ticketee/spec/spec_helper.rb create mode 100644 ticketee/test/controllers/.keep create mode 100644 ticketee/test/fixtures/.keep create mode 100644 ticketee/test/helpers/.keep create mode 100644 ticketee/test/integration/.keep create mode 100644 ticketee/test/mailers/.keep create mode 100644 ticketee/test/models/.keep create mode 100644 ticketee/test/test_helper.rb create mode 100644 ticketee/vendor/assets/javascripts/.keep create mode 100644 ticketee/vendor/assets/stylesheets/.keep diff --git a/ticketee/.gitignore b/ticketee/.gitignore new file mode 100644 index 0000000..6a502e9 --- /dev/null +++ b/ticketee/.gitignore @@ -0,0 +1,16 @@ +# 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' + +# Ignore bundler config. +/.bundle + +# Ignore the default SQLite database. +/db/*.sqlite3 +/db/*.sqlite3-journal + +# Ignore all logfiles and tempfiles. +/log/*.log +/tmp diff --git a/ticketee/.rspec b/ticketee/.rspec new file mode 100644 index 0000000..83e16f8 --- /dev/null +++ b/ticketee/.rspec @@ -0,0 +1,2 @@ +--color +--require spec_helper diff --git a/ticketee/Gemfile b/ticketee/Gemfile new file mode 100644 index 0000000..c4d79c0 --- /dev/null +++ b/ticketee/Gemfile @@ -0,0 +1,51 @@ +source 'https://rubygems.org' + + +# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' +gem 'rails', '4.2.0.beta4' +# Use sqlite3 as the database for Active Record +gem 'sqlite3' +# Use SCSS for stylesheets +gem 'sass-rails', '~> 5.0.0.beta1' +# 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/sstephenson/execjs#readme for more supported runtimes +# gem 'therubyracer', platforms: :ruby + +# Use jQuery as the JavaScript library +gem 'jquery-rails', '~> 4.0.0.beta2' +# 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' + + # Access an IRB console on exception pages or by using <%= console %> in views + gem 'web-console', '~> 2.0.0.beta4' + + # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring + gem 'spring' + + gem 'rspec-rails', '~> 3.1.0' +end + +group :test do + gem 'capybara', '~> 2.4' +end + diff --git a/ticketee/Gemfile.lock b/ticketee/Gemfile.lock new file mode 100644 index 0000000..7639c9e --- /dev/null +++ b/ticketee/Gemfile.lock @@ -0,0 +1,190 @@ +GEM + remote: https://rubygems.org/ + specs: + actionmailer (4.2.0.beta4) + actionpack (= 4.2.0.beta4) + actionview (= 4.2.0.beta4) + activejob (= 4.2.0.beta4) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 1.0, >= 1.0.4) + actionpack (4.2.0.beta4) + actionview (= 4.2.0.beta4) + activesupport (= 4.2.0.beta4) + rack (~> 1.6.0.beta) + rack-test (~> 0.6.2) + rails-dom-testing (~> 1.0, >= 1.0.4) + rails-html-sanitizer (~> 1.0, >= 1.0.1) + actionview (4.2.0.beta4) + activesupport (= 4.2.0.beta4) + builder (~> 3.1) + erubis (~> 2.7.0) + rails-dom-testing (~> 1.0, >= 1.0.4) + rails-html-sanitizer (~> 1.0, >= 1.0.1) + activejob (4.2.0.beta4) + activesupport (= 4.2.0.beta4) + globalid (>= 0.3.0) + activemodel (4.2.0.beta4) + activesupport (= 4.2.0.beta4) + builder (~> 3.1) + activerecord (4.2.0.beta4) + activemodel (= 4.2.0.beta4) + activesupport (= 4.2.0.beta4) + arel (>= 6.0.0.beta2, < 6.1) + activesupport (4.2.0.beta4) + i18n (>= 0.7.0.beta1, < 0.8) + json (~> 1.7, >= 1.7.7) + minitest (~> 5.1) + thread_safe (~> 0.1) + tzinfo (~> 1.1) + arel (6.0.0.beta2) + binding_of_caller (0.7.3.pre1) + debug_inspector (>= 0.0.1) + builder (3.2.2) + byebug (3.5.1) + columnize (~> 0.8) + debugger-linecache (~> 1.2) + slop (~> 3.6) + capybara (2.4.4) + mime-types (>= 1.16) + nokogiri (>= 1.3.3) + rack (>= 1.0.0) + rack-test (>= 0.5.4) + xpath (~> 2.0) + coffee-rails (4.1.0) + coffee-script (>= 2.2.0) + railties (>= 4.0.0, < 5.0) + coffee-script (2.3.0) + coffee-script-source + execjs + coffee-script-source (1.8.0) + columnize (0.8.9) + debug_inspector (0.0.2) + debugger-linecache (1.2.0) + diff-lcs (1.2.5) + erubis (2.7.0) + execjs (2.2.2) + globalid (0.3.0) + activesupport (>= 4.1.0) + hike (1.2.3) + i18n (0.7.0.beta1) + jbuilder (2.2.4) + activesupport (>= 3.0.0, < 5) + multi_json (~> 1.2) + jquery-rails (4.0.0.beta2) + rails-dom-testing (~> 1.0) + railties (>= 4.2.0.beta, < 5.0) + thor (>= 0.14, < 2.0) + json (1.8.1) + loofah (2.0.1) + nokogiri (>= 1.5.9) + mail (2.6.1) + mime-types (>= 1.16, < 3) + mime-types (2.4.3) + mini_portile (0.6.0) + minitest (5.4.2) + multi_json (1.10.1) + nokogiri (1.6.3.1) + mini_portile (= 0.6.0) + rack (1.6.0.beta) + rack-test (0.6.2) + rack (>= 1.0) + rails (4.2.0.beta4) + actionmailer (= 4.2.0.beta4) + actionpack (= 4.2.0.beta4) + actionview (= 4.2.0.beta4) + activejob (= 4.2.0.beta4) + activemodel (= 4.2.0.beta4) + activerecord (= 4.2.0.beta4) + activesupport (= 4.2.0.beta4) + bundler (>= 1.3.0, < 2.0) + railties (= 4.2.0.beta4) + sprockets-rails (~> 3.0.0.beta1) + rails-deprecated_sanitizer (1.0.3) + activesupport (>= 4.2.0.alpha) + rails-dom-testing (1.0.4) + activesupport (>= 4.2.0.beta, < 5.0) + nokogiri (~> 1.6.0) + rails-deprecated_sanitizer (>= 1.0.1) + rails-html-sanitizer (1.0.1) + loofah (~> 2.0) + railties (4.2.0.beta4) + actionpack (= 4.2.0.beta4) + activesupport (= 4.2.0.beta4) + rake (>= 0.8.7) + thor (>= 0.18.1, < 2.0) + rake (10.3.2) + rdoc (4.1.2) + json (~> 1.4) + rspec-core (3.1.7) + rspec-support (~> 3.1.0) + rspec-expectations (3.1.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.1.0) + rspec-mocks (3.1.3) + rspec-support (~> 3.1.0) + rspec-rails (3.1.0) + actionpack (>= 3.0) + activesupport (>= 3.0) + railties (>= 3.0) + rspec-core (~> 3.1.0) + rspec-expectations (~> 3.1.0) + rspec-mocks (~> 3.1.0) + rspec-support (~> 3.1.0) + rspec-support (3.1.2) + sass (3.4.7) + sass-rails (5.0.0.beta1) + railties (>= 4.0.0, < 5.0) + sass (~> 3.2) + sprockets (~> 2.12) + sprockets-rails (>= 2.0, < 4.0) + sdoc (0.4.1) + json (~> 1.7, >= 1.7.7) + rdoc (~> 4.0) + slop (3.6.0) + spring (1.1.3) + sprockets (2.12.3) + hike (~> 1.2) + multi_json (~> 1.0) + rack (~> 1.0) + tilt (~> 1.1, != 1.3.0) + sprockets-rails (3.0.0.beta1) + actionpack (>= 4.0) + activesupport (>= 4.0) + sprockets (~> 2.8) + sqlite3 (1.3.10) + thor (0.19.1) + thread_safe (0.3.4) + tilt (1.4.1) + turbolinks (2.5.1) + coffee-rails + tzinfo (1.2.2) + thread_safe (~> 0.1) + uglifier (2.5.3) + execjs (>= 0.3.0) + json (>= 1.8.0) + web-console (2.0.0.beta4) + activemodel (~> 4.0) + binding_of_caller (= 0.7.3.pre1) + railties (~> 4.0) + sprockets-rails (>= 2.0, < 4.0) + xpath (2.0.0) + nokogiri (~> 1.3) + +PLATFORMS + ruby + +DEPENDENCIES + byebug + capybara (~> 2.4) + coffee-rails (~> 4.1.0) + jbuilder (~> 2.0) + jquery-rails (~> 4.0.0.beta2) + rails (= 4.2.0.beta4) + rspec-rails (~> 3.1.0) + sass-rails (~> 5.0.0.beta1) + sdoc (~> 0.4.0) + spring + sqlite3 + turbolinks + uglifier (>= 1.3.0) + web-console (~> 2.0.0.beta4) diff --git a/ticketee/README.rdoc b/ticketee/README.rdoc new file mode 100644 index 0000000..dd4e97e --- /dev/null +++ b/ticketee/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/ticketee/Rakefile b/ticketee/Rakefile new file mode 100644 index 0000000..ba6b733 --- /dev/null +++ b/ticketee/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/ticketee/app/assets/images/.keep b/ticketee/app/assets/images/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/app/assets/javascripts/application.js b/ticketee/app/assets/javascripts/application.js new file mode 100644 index 0000000..d6925fa --- /dev/null +++ b/ticketee/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 vendor/assets/javascripts of plugins, if any, 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/sstephenson/sprockets#sprockets-directives) for details +// about supported directives. +// +//= require jquery +//= require jquery_ujs +//= require turbolinks +//= require_tree . diff --git a/ticketee/app/assets/stylesheets/application.css b/ticketee/app/assets/stylesheets/application.css new file mode 100644 index 0000000..a443db3 --- /dev/null +++ b/ticketee/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 vendor/assets/stylesheets of plugins, if any, 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/ticketee/app/controllers/application_controller.rb b/ticketee/app/controllers/application_controller.rb new file mode 100644 index 0000000..d83690e --- /dev/null +++ b/ticketee/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/ticketee/app/controllers/concerns/.keep b/ticketee/app/controllers/concerns/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/app/helpers/application_helper.rb b/ticketee/app/helpers/application_helper.rb new file mode 100644 index 0000000..de6be79 --- /dev/null +++ b/ticketee/app/helpers/application_helper.rb @@ -0,0 +1,2 @@ +module ApplicationHelper +end diff --git a/ticketee/app/mailers/.keep b/ticketee/app/mailers/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/app/models/.keep b/ticketee/app/models/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/app/models/concerns/.keep b/ticketee/app/models/concerns/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/app/views/layouts/application.html.erb b/ticketee/app/views/layouts/application.html.erb new file mode 100644 index 0000000..c67190a --- /dev/null +++ b/ticketee/app/views/layouts/application.html.erb @@ -0,0 +1,14 @@ + + + + Ticketee + <%= 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/ticketee/bin/bundle b/ticketee/bin/bundle new file mode 100755 index 0000000..66e9889 --- /dev/null +++ b/ticketee/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/ticketee/bin/rails b/ticketee/bin/rails new file mode 100755 index 0000000..7feb6a3 --- /dev/null +++ b/ticketee/bin/rails @@ -0,0 +1,8 @@ +#!/usr/bin/env ruby +begin + load File.expand_path("../spring", __FILE__) +rescue LoadError +end +APP_PATH = File.expand_path('../../config/application', __FILE__) +require_relative '../config/boot' +require 'rails/commands' diff --git a/ticketee/bin/rake b/ticketee/bin/rake new file mode 100755 index 0000000..8017a02 --- /dev/null +++ b/ticketee/bin/rake @@ -0,0 +1,8 @@ +#!/usr/bin/env ruby +begin + load File.expand_path("../spring", __FILE__) +rescue LoadError +end +require_relative '../config/boot' +require 'rake' +Rake.application.run diff --git a/ticketee/bin/rspec b/ticketee/bin/rspec new file mode 100755 index 0000000..0c86b5c --- /dev/null +++ b/ticketee/bin/rspec @@ -0,0 +1,16 @@ +#!/usr/bin/env ruby +# +# This file was generated by Bundler. +# +# The application 'rspec' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'pathname' +ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile", + Pathname.new(__FILE__).realpath) + +require 'rubygems' +require 'bundler/setup' + +load Gem.bin_path('rspec-core', 'rspec') diff --git a/ticketee/bin/setup b/ticketee/bin/setup new file mode 100755 index 0000000..acdb2c1 --- /dev/null +++ b/ticketee/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/ticketee/bin/spring b/ticketee/bin/spring new file mode 100755 index 0000000..253ec37 --- /dev/null +++ b/ticketee/bin/spring @@ -0,0 +1,18 @@ +#!/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) + ENV["GEM_PATH"] = ([Bundler.bundle_path.to_s] + Gem.path).join(File::PATH_SEPARATOR) + ENV["GEM_HOME"] = "" + Gem.paths = ENV + + gem "spring", match[1] + require "spring/binstub" + end +end diff --git a/ticketee/config.ru b/ticketee/config.ru new file mode 100644 index 0000000..5bc2a61 --- /dev/null +++ b/ticketee/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/ticketee/config/application.rb b/ticketee/config/application.rb new file mode 100644 index 0000000..503f3d6 --- /dev/null +++ b/ticketee/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 Ticketee + 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/ticketee/config/boot.rb b/ticketee/config/boot.rb new file mode 100644 index 0000000..6b750f0 --- /dev/null +++ b/ticketee/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/ticketee/config/database.yml b/ticketee/config/database.yml new file mode 100644 index 0000000..1c1a37c --- /dev/null +++ b/ticketee/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/ticketee/config/environment.rb b/ticketee/config/environment.rb new file mode 100644 index 0000000..ee8d90d --- /dev/null +++ b/ticketee/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/ticketee/config/environments/development.rb b/ticketee/config/environments/development.rb new file mode 100644 index 0000000..b55e214 --- /dev/null +++ b/ticketee/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/ticketee/config/environments/production.rb b/ticketee/config/environments/production.rb new file mode 100644 index 0000000..7c01713 --- /dev/null +++ b/ticketee/config/environments/production.rb @@ -0,0 +1,77 @@ +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 Rails's static asset server (Apache or NGINX will already do this). + config.serve_static_assets = false + + # 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 + + # Decrease the log volume. + # config.log_level = :info + + # 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/ticketee/config/environments/test.rb b/ticketee/config/environments/test.rb new file mode 100644 index 0000000..32756eb --- /dev/null +++ b/ticketee/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 asset server for tests with Cache-Control for performance. + config.serve_static_assets = 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/ticketee/config/initializers/assets.rb b/ticketee/config/initializers/assets.rb new file mode 100644 index 0000000..01ef3e6 --- /dev/null +++ b/ticketee/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/ticketee/config/initializers/backtrace_silencers.rb b/ticketee/config/initializers/backtrace_silencers.rb new file mode 100644 index 0000000..59385cd --- /dev/null +++ b/ticketee/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/ticketee/config/initializers/cookies_serializer.rb b/ticketee/config/initializers/cookies_serializer.rb new file mode 100644 index 0000000..7f70458 --- /dev/null +++ b/ticketee/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/ticketee/config/initializers/filter_parameter_logging.rb b/ticketee/config/initializers/filter_parameter_logging.rb new file mode 100644 index 0000000..4a994e1 --- /dev/null +++ b/ticketee/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/ticketee/config/initializers/inflections.rb b/ticketee/config/initializers/inflections.rb new file mode 100644 index 0000000..ac033bf --- /dev/null +++ b/ticketee/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/ticketee/config/initializers/mime_types.rb b/ticketee/config/initializers/mime_types.rb new file mode 100644 index 0000000..dc18996 --- /dev/null +++ b/ticketee/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/ticketee/config/initializers/session_store.rb b/ticketee/config/initializers/session_store.rb new file mode 100644 index 0000000..a83ac4a --- /dev/null +++ b/ticketee/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: '_ticketee_session' diff --git a/ticketee/config/initializers/wrap_parameters.rb b/ticketee/config/initializers/wrap_parameters.rb new file mode 100644 index 0000000..33725e9 --- /dev/null +++ b/ticketee/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/ticketee/config/locales/en.yml b/ticketee/config/locales/en.yml new file mode 100644 index 0000000..0653957 --- /dev/null +++ b/ticketee/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/ticketee/config/routes.rb b/ticketee/config/routes.rb new file mode 100644 index 0000000..3f66539 --- /dev/null +++ b/ticketee/config/routes.rb @@ -0,0 +1,56 @@ +Rails.application.routes.draw do + # 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/ticketee/config/secrets.yml b/ticketee/config/secrets.yml new file mode 100644 index 0000000..dfbb331 --- /dev/null +++ b/ticketee/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: dfb61152d39d3585e42319198c202b76fe8cc4c01187aad27ad51e8836f9249a4ea6c36b47746ac455947cdd3a0573ce1dbd99f166b893d5d53a4e13ab80a729 + +test: + secret_key_base: b54f3456d880e6b042720215384c25b82eb7c406b7c954c97829fa14e79dd6e7328de7b12c1908716e2bf7ee3e1443a91c286ac3e1cd6599a31d60ac250944b7 + +# 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/ticketee/db/seeds.rb b/ticketee/db/seeds.rb new file mode 100644 index 0000000..4edb1e8 --- /dev/null +++ b/ticketee/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/ticketee/lib/assets/.keep b/ticketee/lib/assets/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/lib/tasks/.keep b/ticketee/lib/tasks/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/log/.keep b/ticketee/log/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/public/404.html b/ticketee/public/404.html new file mode 100644 index 0000000..b612547 --- /dev/null +++ b/ticketee/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/ticketee/public/422.html b/ticketee/public/422.html new file mode 100644 index 0000000..a21f82b --- /dev/null +++ b/ticketee/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/ticketee/public/500.html b/ticketee/public/500.html new file mode 100644 index 0000000..061abc5 --- /dev/null +++ b/ticketee/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/ticketee/public/favicon.ico b/ticketee/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/public/robots.txt b/ticketee/public/robots.txt new file mode 100644 index 0000000..3c9c7c0 --- /dev/null +++ b/ticketee/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/ticketee/spec/rails_helper.rb b/ticketee/spec/rails_helper.rb new file mode 100644 index 0000000..e6c0b68 --- /dev/null +++ b/ticketee/spec/rails_helper.rb @@ -0,0 +1,50 @@ +# This file is copied to spec/ when you run 'rails generate rspec:install' +ENV["RAILS_ENV"] ||= 'test' +require 'spec_helper' +require File.expand_path("../../config/environment", __FILE__) +require 'rspec/rails' +# Add additional requires below this line. Rails is not loaded until this point! + +# Requires supporting ruby files with custom matchers and macros, etc, in +# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are +# run as spec files by default. This means that files in spec/support that end +# in _spec.rb will both be required and run as specs, causing the specs to be +# run twice. It is recommended that you do not name files matching this glob to +# end with _spec.rb. You can configure this pattern with the --pattern +# option on the command line or in ~/.rspec, .rspec or `.rspec-local`. +# +# The following line is provided for convenience purposes. It has the downside +# of increasing the boot-up time by auto-requiring all files in the support +# directory. Alternatively, in the individual `*_spec.rb` files, manually +# require only the support files necessary. +# +# Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } + +# Checks for pending migrations before tests are run. +# If you are not using ActiveRecord, you can remove this line. +ActiveRecord::Migration.maintain_test_schema! + +RSpec.configure do |config| + # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures + config.fixture_path = "#{::Rails.root}/spec/fixtures" + + # If you're not using ActiveRecord, or you'd prefer not to run each of your + # examples within a transaction, remove the following line or assign false + # instead of true. + config.use_transactional_fixtures = true + + # RSpec Rails can automatically mix in different behaviours to your tests + # based on their file location, for example enabling you to call `get` and + # `post` in specs under `spec/controllers`. + # + # You can disable this behaviour by removing the line below, and instead + # explicitly tag your specs with their type, e.g.: + # + # RSpec.describe UsersController, :type => :controller do + # # ... + # end + # + # The different available types are documented in the features, such as in + # https://relishapp.com/rspec/rspec-rails/docs + config.infer_spec_type_from_file_location! +end diff --git a/ticketee/spec/spec_helper.rb b/ticketee/spec/spec_helper.rb new file mode 100644 index 0000000..275ba49 --- /dev/null +++ b/ticketee/spec/spec_helper.rb @@ -0,0 +1,85 @@ +# This file was generated by the `rails generate rspec:install` command. Conventionally, all +# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`. +# The generated `.rspec` file contains `--require spec_helper` which will cause this +# file to always be loaded, without a need to explicitly require it in any files. +# +# Given that it is always loaded, you are encouraged to keep this file as +# light-weight as possible. Requiring heavyweight dependencies from this file +# will add to the boot time of your test suite on EVERY test run, even for an +# individual file that may not need all of that loaded. Instead, consider making +# a separate helper file that requires the additional dependencies and performs +# the additional setup, and require it from the spec files that actually need it. +# +# The `.rspec` file also contains a few flags that are not defaults but that +# users commonly want. +# +# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration +RSpec.configure do |config| + # rspec-expectations config goes here. You can use an alternate + # assertion/expectation library such as wrong or the stdlib/minitest + # assertions if you prefer. + config.expect_with :rspec do |expectations| + # This option will default to `true` in RSpec 4. It makes the `description` + # and `failure_message` of custom matchers include text for helper methods + # defined using `chain`, e.g.: + # be_bigger_than(2).and_smaller_than(4).description + # # => "be bigger than 2 and smaller than 4" + # ...rather than: + # # => "be bigger than 2" + expectations.include_chain_clauses_in_custom_matcher_descriptions = true + end + + # rspec-mocks config goes here. You can use an alternate test double + # library (such as bogus or mocha) by changing the `mock_with` option here. + config.mock_with :rspec do |mocks| + # Prevents you from mocking or stubbing a method that does not exist on + # a real object. This is generally recommended, and will default to + # `true` in RSpec 4. + mocks.verify_partial_doubles = true + end + +# The settings below are suggested to provide a good initial experience +# with RSpec, but feel free to customize to your heart's content. +=begin + # These two settings work together to allow you to limit a spec run + # to individual examples or groups you care about by tagging them with + # `:focus` metadata. When nothing is tagged with `:focus`, all examples + # get run. + config.filter_run :focus + config.run_all_when_everything_filtered = true + + # Limits the available syntax to the non-monkey patched syntax that is recommended. + # For more details, see: + # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax + # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/ + # - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching + config.disable_monkey_patching! + + # Many RSpec users commonly either run the entire suite or an individual + # file, and it's useful to allow more verbose output when running an + # individual spec file. + if config.files_to_run.one? + # Use the documentation formatter for detailed output, + # unless a formatter has already been configured + # (e.g. via a command-line flag). + config.default_formatter = 'doc' + end + + # Print the 10 slowest examples and example groups at the + # end of the spec run, to help surface which specs are running + # particularly slow. + config.profile_examples = 10 + + # Run specs in random order to surface order dependencies. If you find an + # order dependency and want to debug it, you can fix the order by providing + # the seed, which is printed after each run. + # --seed 1234 + config.order = :random + + # Seed global randomization in this process using the `--seed` CLI option. + # Setting this allows you to use `--seed` to deterministically reproduce + # test failures related to randomization by passing the same `--seed` value + # as the one that triggered the failure. + Kernel.srand config.seed +=end +end diff --git a/ticketee/test/controllers/.keep b/ticketee/test/controllers/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/test/fixtures/.keep b/ticketee/test/fixtures/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/test/helpers/.keep b/ticketee/test/helpers/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/test/integration/.keep b/ticketee/test/integration/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/test/mailers/.keep b/ticketee/test/mailers/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/test/models/.keep b/ticketee/test/models/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/test/test_helper.rb b/ticketee/test/test_helper.rb new file mode 100644 index 0000000..92e39b2 --- /dev/null +++ b/ticketee/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/ticketee/vendor/assets/javascripts/.keep b/ticketee/vendor/assets/javascripts/.keep new file mode 100644 index 0000000..e69de29 diff --git a/ticketee/vendor/assets/stylesheets/.keep b/ticketee/vendor/assets/stylesheets/.keep new file mode 100644 index 0000000..e69de29 From 1f820f8a797a189921379957fc1149325275685f Mon Sep 17 00:00:00 2001 From: Ryan Bigg Date: Tue, 4 Nov 2014 10:53:55 +1100 Subject: [PATCH 07/16] Section 3.4.3: 'Create a new project' feature complete. --- .../app/assets/javascripts/projects.coffee | 3 + .../app/assets/stylesheets/projects.css.scss | 3 + .../app/controllers/projects_controller.rb | 29 ++++++++++ ticketee/app/helpers/projects_helper.rb | 2 + ticketee/app/models/project.rb | 2 + .../app/views/layouts/application.html.erb | 6 ++ ticketee/app/views/projects/index.html.erb | 1 + ticketee/app/views/projects/new.html.erb | 14 +++++ ticketee/app/views/projects/show.html.erb | 1 + ticketee/config/routes.rb | 55 +------------------ .../migrate/20141103223843_create_projects.rb | 10 ++++ ticketee/db/schema.rb | 23 ++++++++ .../controllers/projects_controller_spec.rb | 5 ++ .../spec/features/creating_projects_spec.rb | 15 +++++ 14 files changed, 116 insertions(+), 53 deletions(-) create mode 100644 ticketee/app/assets/javascripts/projects.coffee create mode 100644 ticketee/app/assets/stylesheets/projects.css.scss create mode 100644 ticketee/app/controllers/projects_controller.rb create mode 100644 ticketee/app/helpers/projects_helper.rb create mode 100644 ticketee/app/models/project.rb create mode 100644 ticketee/app/views/projects/index.html.erb create mode 100644 ticketee/app/views/projects/new.html.erb create mode 100644 ticketee/app/views/projects/show.html.erb create mode 100644 ticketee/db/migrate/20141103223843_create_projects.rb create mode 100644 ticketee/db/schema.rb create mode 100644 ticketee/spec/controllers/projects_controller_spec.rb create mode 100644 ticketee/spec/features/creating_projects_spec.rb diff --git a/ticketee/app/assets/javascripts/projects.coffee b/ticketee/app/assets/javascripts/projects.coffee new file mode 100644 index 0000000..24f83d1 --- /dev/null +++ b/ticketee/app/assets/javascripts/projects.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/ticketee/app/assets/stylesheets/projects.css.scss b/ticketee/app/assets/stylesheets/projects.css.scss new file mode 100644 index 0000000..d019266 --- /dev/null +++ b/ticketee/app/assets/stylesheets/projects.css.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the projects controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/ticketee/app/controllers/projects_controller.rb b/ticketee/app/controllers/projects_controller.rb new file mode 100644 index 0000000..85b4434 --- /dev/null +++ b/ticketee/app/controllers/projects_controller.rb @@ -0,0 +1,29 @@ +class ProjectsController < ApplicationController + def index + end + + def new + @project = Project.new + end + + def create + @project = Project.new(project_params) + + if @project.save + flash[:notice] = "Project has been created." + redirect_to @project + else + # nothing, yet + end + end + + def show + @project = Project.find(params[:id]) + end + + private + + def project_params + params.require(:project).permit(:name, :description) + end +end diff --git a/ticketee/app/helpers/projects_helper.rb b/ticketee/app/helpers/projects_helper.rb new file mode 100644 index 0000000..db5c5ce --- /dev/null +++ b/ticketee/app/helpers/projects_helper.rb @@ -0,0 +1,2 @@ +module ProjectsHelper +end diff --git a/ticketee/app/models/project.rb b/ticketee/app/models/project.rb new file mode 100644 index 0000000..5bc7957 --- /dev/null +++ b/ticketee/app/models/project.rb @@ -0,0 +1,2 @@ +class Project < ActiveRecord::Base +end diff --git a/ticketee/app/views/layouts/application.html.erb b/ticketee/app/views/layouts/application.html.erb index c67190a..9012308 100644 --- a/ticketee/app/views/layouts/application.html.erb +++ b/ticketee/app/views/layouts/application.html.erb @@ -8,6 +8,12 @@ +<% flash.each do |key, message| %> +
+ <%= message %> +
+<% end %> + <%= yield %> diff --git a/ticketee/app/views/projects/index.html.erb b/ticketee/app/views/projects/index.html.erb new file mode 100644 index 0000000..e893a38 --- /dev/null +++ b/ticketee/app/views/projects/index.html.erb @@ -0,0 +1 @@ +<%= link_to "New Project", new_project_path %> diff --git a/ticketee/app/views/projects/new.html.erb b/ticketee/app/views/projects/new.html.erb new file mode 100644 index 0000000..13eb81c --- /dev/null +++ b/ticketee/app/views/projects/new.html.erb @@ -0,0 +1,14 @@ +

New Project

+<%= form_for(@project) do |f| %> +

+ <%= f.label :name %>
+ <%= f.text_field :name %> +

+ +

+ <%= f.label :description %>
+ <%= f.text_field :description %> +

+ + <%= f.submit %> +<% end %> diff --git a/ticketee/app/views/projects/show.html.erb b/ticketee/app/views/projects/show.html.erb new file mode 100644 index 0000000..69c6ef8 --- /dev/null +++ b/ticketee/app/views/projects/show.html.erb @@ -0,0 +1 @@ +

<%= @project.name %>

diff --git a/ticketee/config/routes.rb b/ticketee/config/routes.rb index 3f66539..dba34bc 100644 --- a/ticketee/config/routes.rb +++ b/ticketee/config/routes.rb @@ -1,56 +1,5 @@ Rails.application.routes.draw do - # The priority is based upon order of creation: first created -> highest priority. - # See how all your routes lay out with "rake routes". + root 'projects#index' - # 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 + resources :projects end diff --git a/ticketee/db/migrate/20141103223843_create_projects.rb b/ticketee/db/migrate/20141103223843_create_projects.rb new file mode 100644 index 0000000..a2905bc --- /dev/null +++ b/ticketee/db/migrate/20141103223843_create_projects.rb @@ -0,0 +1,10 @@ +class CreateProjects < ActiveRecord::Migration + def change + create_table :projects do |t| + t.string :name + t.string :description + + t.timestamps null: false + end + end +end diff --git a/ticketee/db/schema.rb b/ticketee/db/schema.rb new file mode 100644 index 0000000..b298dab --- /dev/null +++ b/ticketee/db/schema.rb @@ -0,0 +1,23 @@ +# 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: 20141103223843) do + + create_table "projects", force: true do |t| + t.string "name" + t.string "description" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + +end diff --git a/ticketee/spec/controllers/projects_controller_spec.rb b/ticketee/spec/controllers/projects_controller_spec.rb new file mode 100644 index 0000000..381640b --- /dev/null +++ b/ticketee/spec/controllers/projects_controller_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe ProjectsController, :type => :controller do + +end diff --git a/ticketee/spec/features/creating_projects_spec.rb b/ticketee/spec/features/creating_projects_spec.rb new file mode 100644 index 0000000..b3b8896 --- /dev/null +++ b/ticketee/spec/features/creating_projects_spec.rb @@ -0,0 +1,15 @@ +require 'rails_helper' + +feature 'Creating Projects' do + scenario 'can create a project' do + visit '/' + + click_link 'New Project' + + fill_in 'Name', with: 'Sublime Text 3' + fill_in 'Description', with: 'A text-editor for everyone' + click_button 'Create Project' + + expect(page).to have_content('Project has been created.') + end +end From fba1ad9da038cd65cb5ff66b075d135f9094342b Mon Sep 17 00:00:00 2001 From: Ryan Bigg Date: Tue, 4 Nov 2014 11:05:10 +1100 Subject: [PATCH 08/16] Section 3.4.4: Add title functionality for show page --- ticketee/app/helpers/application_helper.rb | 7 +++++++ ticketee/app/views/layouts/application.html.erb | 8 +++++++- ticketee/app/views/projects/show.html.erb | 1 + ticketee/spec/features/creating_projects_spec.rb | 7 +++++++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/ticketee/app/helpers/application_helper.rb b/ticketee/app/helpers/application_helper.rb index de6be79..1f1fea7 100644 --- a/ticketee/app/helpers/application_helper.rb +++ b/ticketee/app/helpers/application_helper.rb @@ -1,2 +1,9 @@ module ApplicationHelper + def title(*parts) + unless parts.empty? + content_for :title do + (parts << "Ticketee").join(" - ") + end + end + end end diff --git a/ticketee/app/views/layouts/application.html.erb b/ticketee/app/views/layouts/application.html.erb index 9012308..36c4cec 100644 --- a/ticketee/app/views/layouts/application.html.erb +++ b/ticketee/app/views/layouts/application.html.erb @@ -1,7 +1,13 @@ - Ticketee + + <% if content_for?(:title) %> + <%= yield(:title) %> + <% else %> + Ticketee + <% end %> + <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> <%= csrf_meta_tags %> diff --git a/ticketee/app/views/projects/show.html.erb b/ticketee/app/views/projects/show.html.erb index 69c6ef8..15e85cc 100644 --- a/ticketee/app/views/projects/show.html.erb +++ b/ticketee/app/views/projects/show.html.erb @@ -1 +1,2 @@ +<% title(@project.name, "Projects") %>

<%= @project.name %>

diff --git a/ticketee/spec/features/creating_projects_spec.rb b/ticketee/spec/features/creating_projects_spec.rb index b3b8896..73e51d3 100644 --- a/ticketee/spec/features/creating_projects_spec.rb +++ b/ticketee/spec/features/creating_projects_spec.rb @@ -11,5 +11,12 @@ click_button 'Create Project' expect(page).to have_content('Project has been created.') + + project = Project.where(name: "Sublime Text 3").first + + expect(page.current_url).to eql(project_url(project)) + + title = "Sublime Text 3 - Projects - Ticketee" + expect(page).to have_title(title) end end From cb1984ee20c070142e5ce42d4e7f2bf2849a9930 Mon Sep 17 00:00:00 2001 From: Ryan Bigg Date: Tue, 4 Nov 2014 11:15:37 +1100 Subject: [PATCH 09/16] Section 3.4.5: Add validation to ensure names are specified when creating projects --- ticketee/app/controllers/projects_controller.rb | 3 ++- ticketee/app/models/project.rb | 1 + ticketee/app/views/projects/new.html.erb | 12 ++++++++++++ .../spec/features/creating_projects_spec.rb | 17 +++++++++++++---- 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/ticketee/app/controllers/projects_controller.rb b/ticketee/app/controllers/projects_controller.rb index 85b4434..c7d9b15 100644 --- a/ticketee/app/controllers/projects_controller.rb +++ b/ticketee/app/controllers/projects_controller.rb @@ -13,7 +13,8 @@ def create flash[:notice] = "Project has been created." redirect_to @project else - # nothing, yet + flash[:alert] = "Project has not been created." + render "new" end end diff --git a/ticketee/app/models/project.rb b/ticketee/app/models/project.rb index 5bc7957..afcbfc5 100644 --- a/ticketee/app/models/project.rb +++ b/ticketee/app/models/project.rb @@ -1,2 +1,3 @@ class Project < ActiveRecord::Base + validates :name, presence: true end diff --git a/ticketee/app/views/projects/new.html.erb b/ticketee/app/views/projects/new.html.erb index 13eb81c..88534b4 100644 --- a/ticketee/app/views/projects/new.html.erb +++ b/ticketee/app/views/projects/new.html.erb @@ -1,5 +1,17 @@

New Project

<%= form_for(@project) do |f| %> +<% if @project.errors.any? %> +
+

<%= pluralize(@project.errors.count, "error") %> + prohibited this project from being saved:

+ +
    + <% @project.errors.full_messages.each do |msg| %> +
  • <%= msg %>
  • + <% end %> +
+
+<% end %>

<%= f.label :name %>
<%= f.text_field :name %> diff --git a/ticketee/spec/features/creating_projects_spec.rb b/ticketee/spec/features/creating_projects_spec.rb index 73e51d3..c4972c7 100644 --- a/ticketee/spec/features/creating_projects_spec.rb +++ b/ticketee/spec/features/creating_projects_spec.rb @@ -1,22 +1,31 @@ require 'rails_helper' feature 'Creating Projects' do - scenario 'can create a project' do + before do visit '/' click_link 'New Project' + end + scenario 'can create a project' do fill_in 'Name', with: 'Sublime Text 3' - fill_in 'Description', with: 'A text-editor for everyone' + fill_in 'Description', with: 'A text-editor for OS X' click_button 'Create Project' expect(page).to have_content('Project has been created.') - project = Project.where(name: "Sublime Text 3").first + project = Project.where(name: 'Sublime Text 3').first expect(page.current_url).to eql(project_url(project)) - title = "Sublime Text 3 - Projects - Ticketee" + title = 'Sublime Text 3 - Projects - Ticketee' expect(page).to have_title(title) end + + scenario "can not create a project without a name" do + click_button 'Create Project' + + expect(page).to have_content("Project has not been created.") + expect(page).to have_content("Name can't be blank") + end end From cdf7f62cd83de91ec491c310dc017dd0672c6184 Mon Sep 17 00:00:00 2001 From: Ryan Bigg Date: Tue, 4 Nov 2014 12:01:51 +1100 Subject: [PATCH 10/16] Section 4.1.2: Add the ability to view a list of all projects --- ticketee/Gemfile | 1 + ticketee/Gemfile.lock | 6 ++++++ ticketee/app/controllers/projects_controller.rb | 1 + ticketee/app/views/projects/index.html.erb | 7 +++++++ ticketee/spec/factories/project_factory.rb | 5 +++++ ticketee/spec/features/viewing_projects_spec.rb | 10 ++++++++++ 6 files changed, 30 insertions(+) create mode 100644 ticketee/spec/factories/project_factory.rb create mode 100644 ticketee/spec/features/viewing_projects_spec.rb diff --git a/ticketee/Gemfile b/ticketee/Gemfile index c4d79c0..4c14916 100644 --- a/ticketee/Gemfile +++ b/ticketee/Gemfile @@ -47,5 +47,6 @@ end group :test do gem 'capybara', '~> 2.4' + gem 'factory_girl_rails', '~> 4.5' end diff --git a/ticketee/Gemfile.lock b/ticketee/Gemfile.lock index 7639c9e..19fdb55 100644 --- a/ticketee/Gemfile.lock +++ b/ticketee/Gemfile.lock @@ -63,6 +63,11 @@ GEM diff-lcs (1.2.5) erubis (2.7.0) execjs (2.2.2) + factory_girl (4.5.0) + activesupport (>= 3.0.0) + factory_girl_rails (4.5.0) + factory_girl (~> 4.5.0) + railties (>= 3.0.0) globalid (0.3.0) activesupport (>= 4.1.0) hike (1.2.3) @@ -177,6 +182,7 @@ DEPENDENCIES byebug capybara (~> 2.4) coffee-rails (~> 4.1.0) + factory_girl_rails (~> 4.5) jbuilder (~> 2.0) jquery-rails (~> 4.0.0.beta2) rails (= 4.2.0.beta4) diff --git a/ticketee/app/controllers/projects_controller.rb b/ticketee/app/controllers/projects_controller.rb index c7d9b15..3f234a9 100644 --- a/ticketee/app/controllers/projects_controller.rb +++ b/ticketee/app/controllers/projects_controller.rb @@ -1,5 +1,6 @@ class ProjectsController < ApplicationController def index + @projects = Project.all end def new diff --git a/ticketee/app/views/projects/index.html.erb b/ticketee/app/views/projects/index.html.erb index e893a38..74c9f69 100644 --- a/ticketee/app/views/projects/index.html.erb +++ b/ticketee/app/views/projects/index.html.erb @@ -1 +1,8 @@ <%= link_to "New Project", new_project_path %> + +

Projects

+
    + <% @projects.each do |project| %> +
  • <%= link_to project.name, project %>
  • + <% end %> +
diff --git a/ticketee/spec/factories/project_factory.rb b/ticketee/spec/factories/project_factory.rb new file mode 100644 index 0000000..c9ef96d --- /dev/null +++ b/ticketee/spec/factories/project_factory.rb @@ -0,0 +1,5 @@ +FactoryGirl.define do + factory :project do + name "Example project" + end +end diff --git a/ticketee/spec/features/viewing_projects_spec.rb b/ticketee/spec/features/viewing_projects_spec.rb new file mode 100644 index 0000000..4b4dfac --- /dev/null +++ b/ticketee/spec/features/viewing_projects_spec.rb @@ -0,0 +1,10 @@ +require 'rails_helper' + +feature 'Viewing projects' do + scenario 'Listing all projects' do + project = FactoryGirl.create(:project, name: 'Sublime Text 3') + visit '/' + click_link 'Sublime Text 3' + expect(page.current_url).to eql(project_url(project)) + end +end From 2bc0c1ca9b6c07da73c66919b397e5ad001a723e Mon Sep 17 00:00:00 2001 From: Ryan Bigg Date: Tue, 4 Nov 2014 12:16:02 +1100 Subject: [PATCH 11/16] Section 4.2.2: Projects can now be updated --- .../app/controllers/projects_controller.rb | 16 ++++++++++++ ticketee/app/views/projects/_form.html.erb | 25 +++++++++++++++++++ ticketee/app/views/projects/edit.html.erb | 3 +++ ticketee/app/views/projects/new.html.erb | 25 +------------------ ticketee/app/views/projects/show.html.erb | 1 + .../spec/features/editing_projects_spec.rb | 18 +++++++++++++ 6 files changed, 64 insertions(+), 24 deletions(-) create mode 100644 ticketee/app/views/projects/_form.html.erb create mode 100644 ticketee/app/views/projects/edit.html.erb create mode 100644 ticketee/spec/features/editing_projects_spec.rb diff --git a/ticketee/app/controllers/projects_controller.rb b/ticketee/app/controllers/projects_controller.rb index 3f234a9..319d32a 100644 --- a/ticketee/app/controllers/projects_controller.rb +++ b/ticketee/app/controllers/projects_controller.rb @@ -23,6 +23,22 @@ def show @project = Project.find(params[:id]) end + def edit + @project = Project.find(params[:id]) + end + + def update + @project = Project.find(params[:id]) + + if @project.update(project_params) + flash[:notice] = "Project has been updated." + redirect_to @project + else + flash[:alert] = "Project has not been updated." + render "edit" + end + end + private def project_params diff --git a/ticketee/app/views/projects/_form.html.erb b/ticketee/app/views/projects/_form.html.erb new file mode 100644 index 0000000..d997193 --- /dev/null +++ b/ticketee/app/views/projects/_form.html.erb @@ -0,0 +1,25 @@ +<%= form_for(@project) do |f| %> + <% if @project.errors.any? %> +
+

<%= pluralize(@project.errors.count, "error") %> + prohibited this project from being saved:

+ +
    + <% @project.errors.full_messages.each do |msg| %> +
  • <%= msg %>
  • + <% end %> +
+
+ <% end %> +

+ <%= f.label :name %>
+ <%= f.text_field :name %> +

+ +

+ <%= f.label :description %>
+ <%= f.text_field :description %> +

+ + <%= f.submit %> +<% end %> diff --git a/ticketee/app/views/projects/edit.html.erb b/ticketee/app/views/projects/edit.html.erb new file mode 100644 index 0000000..5910726 --- /dev/null +++ b/ticketee/app/views/projects/edit.html.erb @@ -0,0 +1,3 @@ +

Edit project

+ +<%= render "form" %> diff --git a/ticketee/app/views/projects/new.html.erb b/ticketee/app/views/projects/new.html.erb index 88534b4..18a11c8 100644 --- a/ticketee/app/views/projects/new.html.erb +++ b/ticketee/app/views/projects/new.html.erb @@ -1,26 +1,3 @@

New Project

-<%= form_for(@project) do |f| %> -<% if @project.errors.any? %> -
-

<%= pluralize(@project.errors.count, "error") %> - prohibited this project from being saved:

-
    - <% @project.errors.full_messages.each do |msg| %> -
  • <%= msg %>
  • - <% end %> -
-
-<% end %> -

- <%= f.label :name %>
- <%= f.text_field :name %> -

- -

- <%= f.label :description %>
- <%= f.text_field :description %> -

- - <%= f.submit %> -<% end %> +<%= render "form" %> diff --git a/ticketee/app/views/projects/show.html.erb b/ticketee/app/views/projects/show.html.erb index 15e85cc..1fef02f 100644 --- a/ticketee/app/views/projects/show.html.erb +++ b/ticketee/app/views/projects/show.html.erb @@ -1,2 +1,3 @@ <% title(@project.name, "Projects") %>

<%= @project.name %>

+<%= link_to "Edit Project", edit_project_path(@project) %> diff --git a/ticketee/spec/features/editing_projects_spec.rb b/ticketee/spec/features/editing_projects_spec.rb new file mode 100644 index 0000000..32d83b2 --- /dev/null +++ b/ticketee/spec/features/editing_projects_spec.rb @@ -0,0 +1,18 @@ +require "rails_helper" + +feature "Editing Projects" do + before do + FactoryGirl.create(:project, name: "Sublime Text 3") + + visit "/" + click_link "Sublime Text 3" + click_link "Edit Project" + end + + scenario "Updating a project" do + fill_in "Name", with: "Sublime Text 3 beta" + click_button "Update Project" + + expect(page).to have_content("Project has been updated.") + end +end From 525f0b0af4b5ffd7146ae2c04431958700b7f01c Mon Sep 17 00:00:00 2001 From: Ryan Bigg Date: Tue, 4 Nov 2014 12:21:22 +1100 Subject: [PATCH 12/16] Section 4.3: Projects can now be deleted --- ticketee/app/controllers/projects_controller.rb | 9 +++++++++ ticketee/app/views/projects/show.html.erb | 6 ++++++ .../spec/features/deleting_projects_spec.rb | 17 +++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 ticketee/spec/features/deleting_projects_spec.rb diff --git a/ticketee/app/controllers/projects_controller.rb b/ticketee/app/controllers/projects_controller.rb index 319d32a..937b384 100644 --- a/ticketee/app/controllers/projects_controller.rb +++ b/ticketee/app/controllers/projects_controller.rb @@ -39,6 +39,15 @@ def update end end + def destroy + @project = Project.find(params[:id]) + @project.destroy + + flash[:notice] = "Project has been destroyed." + + redirect_to projects_path + end + private def project_params diff --git a/ticketee/app/views/projects/show.html.erb b/ticketee/app/views/projects/show.html.erb index 1fef02f..0479bfa 100644 --- a/ticketee/app/views/projects/show.html.erb +++ b/ticketee/app/views/projects/show.html.erb @@ -1,3 +1,9 @@ <% title(@project.name, "Projects") %>

<%= @project.name %>

<%= link_to "Edit Project", edit_project_path(@project) %> +<%= link_to "Delete Project", + project_path(@project), + method: :delete, + data: { confirm: + "Are you sure you want to delete this project?" + } %> diff --git a/ticketee/spec/features/deleting_projects_spec.rb b/ticketee/spec/features/deleting_projects_spec.rb new file mode 100644 index 0000000..67e63db --- /dev/null +++ b/ticketee/spec/features/deleting_projects_spec.rb @@ -0,0 +1,17 @@ +require "rails_helper" + +feature "Deleting projects" do + scenario "Deleting a project" do + FactoryGirl.create(:project, name: "Sublime Text 3") + + visit "/" + click_link "Sublime Text 3" + click_link "Delete Project" + + expect(page).to have_content("Project has been destroyed.") + + visit "/" + + expect(page).to have_no_content("Sublime Text 3") + end +end From 1871362cba530e7e78c9caedbdab604ae29f7508 Mon Sep 17 00:00:00 2001 From: Ryan Bigg Date: Tue, 4 Nov 2014 12:39:26 +1100 Subject: [PATCH 13/16] Section 4.4.2: Redirect the users back to the projects page if they try going to a project that does not exist --- .../app/controllers/projects_controller.rb | 24 ++++++++++--------- .../controllers/projects_controller_spec.rb | 7 ++++++ 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/ticketee/app/controllers/projects_controller.rb b/ticketee/app/controllers/projects_controller.rb index 937b384..d6d6f35 100644 --- a/ticketee/app/controllers/projects_controller.rb +++ b/ticketee/app/controllers/projects_controller.rb @@ -1,4 +1,8 @@ class ProjectsController < ApplicationController + before_action :set_project, only: [:show, + :edit, + :update, + :destroy] def index @projects = Project.all end @@ -19,17 +23,7 @@ def create end end - def show - @project = Project.find(params[:id]) - end - - def edit - @project = Project.find(params[:id]) - end - def update - @project = Project.find(params[:id]) - if @project.update(project_params) flash[:notice] = "Project has been updated." redirect_to @project @@ -40,7 +34,6 @@ def update end def destroy - @project = Project.find(params[:id]) @project.destroy flash[:notice] = "Project has been destroyed." @@ -50,6 +43,15 @@ def destroy private + def set_project + @project = Project.find(params[:id]) + rescue ActiveRecord::RecordNotFound + flash[:alert] = "The project you were looking" + + " for could not be found." + + redirect_to projects_path + end + def project_params params.require(:project).permit(:name, :description) end diff --git a/ticketee/spec/controllers/projects_controller_spec.rb b/ticketee/spec/controllers/projects_controller_spec.rb index 381640b..70fb702 100644 --- a/ticketee/spec/controllers/projects_controller_spec.rb +++ b/ticketee/spec/controllers/projects_controller_spec.rb @@ -1,5 +1,12 @@ require 'rails_helper' RSpec.describe ProjectsController, :type => :controller do + it "displays an error for a missing project" do + get :show, id: "not-here" + expect(response).to redirect_to(projects_path) + message = "The project you were looking for could not be found." + + expect(flash[:alert]).to eql(message) + end end From a597e05c591870736c8c5375d36d397f6f54733c Mon Sep 17 00:00:00 2001 From: Ryan Bigg Date: Tue, 4 Nov 2014 15:10:49 +1100 Subject: [PATCH 14/16] WIP bootstrap This doesn't work because of reasons unknown. Related to railsbook/rails_4_in_action#11 --- ticketee/Gemfile | 2 ++ ticketee/Gemfile.lock | 3 +++ ticketee/app/assets/stylesheets/application.css | 2 ++ 3 files changed, 7 insertions(+) diff --git a/ticketee/Gemfile b/ticketee/Gemfile index 4c14916..2f0bdb1 100644 --- a/ticketee/Gemfile +++ b/ticketee/Gemfile @@ -32,6 +32,8 @@ gem 'sdoc', '~> 0.4.0', group: :doc # Use Capistrano for deployment # gem 'capistrano-rails', group: :development +gem 'bootstrap-sass', '~> 3.3' + group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug' diff --git a/ticketee/Gemfile.lock b/ticketee/Gemfile.lock index 19fdb55..a5b644b 100644 --- a/ticketee/Gemfile.lock +++ b/ticketee/Gemfile.lock @@ -39,6 +39,8 @@ GEM arel (6.0.0.beta2) binding_of_caller (0.7.3.pre1) debug_inspector (>= 0.0.1) + bootstrap-sass (3.3.0.1) + sass (~> 3.2) builder (3.2.2) byebug (3.5.1) columnize (~> 0.8) @@ -179,6 +181,7 @@ PLATFORMS ruby DEPENDENCIES + bootstrap-sass (~> 3.3) byebug capybara (~> 2.4) coffee-rails (~> 4.1.0) diff --git a/ticketee/app/assets/stylesheets/application.css b/ticketee/app/assets/stylesheets/application.css index a443db3..924dc4e 100644 --- a/ticketee/app/assets/stylesheets/application.css +++ b/ticketee/app/assets/stylesheets/application.css @@ -1,3 +1,5 @@ +@import "bootstrap"; + /* * This is a manifest file that'll be compiled into application.css, which will include all the files * listed below. From 5a3ef6374297519a29e904364c4502ad8f6df4bf Mon Sep 17 00:00:00 2001 From: Ryan Bigg Date: Tue, 4 Nov 2014 15:16:38 +1100 Subject: [PATCH 15/16] Add bootstrap-sprockets --- ticketee/app/assets/stylesheets/application.css | 1 + 1 file changed, 1 insertion(+) diff --git a/ticketee/app/assets/stylesheets/application.css b/ticketee/app/assets/stylesheets/application.css index 924dc4e..d6aeb4d 100644 --- a/ticketee/app/assets/stylesheets/application.css +++ b/ticketee/app/assets/stylesheets/application.css @@ -1,3 +1,4 @@ +@import "bootstrap-sprockets"; @import "bootstrap"; /* From c03619d64c22b3611c0a1e546060374b957a5903 Mon Sep 17 00:00:00 2001 From: Gleb Mazovetskiy Date: Tue, 4 Nov 2014 13:43:06 +0100 Subject: [PATCH 16/16] fix bootstrap import --- .../{projects.css.scss => _projects.css.scss} | 0 .../app/assets/stylesheets/application.css | 18 ------------------ .../assets/stylesheets/application.css.sass | 4 ++++ 3 files changed, 4 insertions(+), 18 deletions(-) rename ticketee/app/assets/stylesheets/{projects.css.scss => _projects.css.scss} (100%) delete mode 100644 ticketee/app/assets/stylesheets/application.css create mode 100644 ticketee/app/assets/stylesheets/application.css.sass diff --git a/ticketee/app/assets/stylesheets/projects.css.scss b/ticketee/app/assets/stylesheets/_projects.css.scss similarity index 100% rename from ticketee/app/assets/stylesheets/projects.css.scss rename to ticketee/app/assets/stylesheets/_projects.css.scss diff --git a/ticketee/app/assets/stylesheets/application.css b/ticketee/app/assets/stylesheets/application.css deleted file mode 100644 index d6aeb4d..0000000 --- a/ticketee/app/assets/stylesheets/application.css +++ /dev/null @@ -1,18 +0,0 @@ -@import "bootstrap-sprockets"; -@import "bootstrap"; - -/* - * 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 vendor/assets/stylesheets of plugins, if any, 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/ticketee/app/assets/stylesheets/application.css.sass b/ticketee/app/assets/stylesheets/application.css.sass new file mode 100644 index 0000000..8f8519b --- /dev/null +++ b/ticketee/app/assets/stylesheets/application.css.sass @@ -0,0 +1,4 @@ +@import "bootstrap-sprockets" +@import "bootstrap" + +@import "projects"