From ae37616de991cb7da859a3bed6cc822ade41ca81 Mon Sep 17 00:00:00 2001 From: asmockler Date: Wed, 16 Mar 2016 02:35:55 -0600 Subject: [PATCH] :sunrise_over_mountains: --- .gitignore | 13 ++ Gemfile | 36 ++++ Gemfile.lock | 158 ++++++++++++++++++ README.md | 0 Rakefile | 6 + app/assets/fonts/DIN Alternate Bold.ttf | Bin 0 -> 147024 bytes app/assets/images/.keep | 0 app/assets/javascripts/application.js | 16 ++ app/assets/javascripts/words.js | 49 ++++++ app/assets/stylesheets/application.css | 16 ++ app/assets/stylesheets/global.scss | 18 ++ app/assets/stylesheets/scaffolds.scss | 73 ++++++++ app/assets/stylesheets/words.scss | 21 +++ app/controllers/application_controller.rb | 5 + app/controllers/concerns/.keep | 0 app/controllers/words_controller.rb | 74 ++++++++ app/helpers/application_helper.rb | 2 + app/helpers/words_helper.rb | 2 + app/mailers/.keep | 0 app/models/.keep | 0 app/models/concerns/.keep | 0 app/models/word.rb | 2 + app/views/layouts/application.html.erb | 14 ++ app/views/words/_form.html.erb | 17 ++ app/views/words/edit.html.erb | 6 + app/views/words/index.html.erb | 25 +++ app/views/words/index.json.jbuilder | 4 + app/views/words/new.html.erb | 7 + app/views/words/show.html.erb | 4 + app/views/words/show.json.jbuilder | 1 + bin/bundle | 3 + bin/rails | 9 + bin/rake | 9 + bin/setup | 29 ++++ bin/spring | 15 ++ config.ru | 4 + config/application.rb | 26 +++ config/boot.rb | 3 + config/database.yml | 85 ++++++++++ config/environment.rb | 5 + config/environments/development.rb | 41 +++++ config/environments/production.rb | 79 +++++++++ config/environments/test.rb | 42 +++++ config/initializers/assets.rb | 11 ++ config/initializers/backtrace_silencers.rb | 7 + config/initializers/cookies_serializer.rb | 3 + .../initializers/filter_parameter_logging.rb | 4 + config/initializers/inflections.rb | 16 ++ config/initializers/mime_types.rb | 4 + config/initializers/session_store.rb | 3 + config/initializers/wrap_parameters.rb | 14 ++ config/locales/en.yml | 23 +++ config/routes.rb | 4 + config/secrets.yml | 22 +++ db/migrate/20160316071351_create_words.rb | 11 ++ db/schema.rb | 29 ++++ db/seeds.rb | 7 + lib/assets/.keep | 0 lib/tasks/.keep | 0 log/.keep | 0 public/404.html | 67 ++++++++ public/422.html | 67 ++++++++ public/500.html | 66 ++++++++ public/favicon.ico | 0 public/robots.txt | 5 + test/controllers/.keep | 0 test/controllers/words_controller_test.rb | 49 ++++++ test/fixtures/.keep | 0 test/fixtures/words.yml | 11 ++ test/helpers/.keep | 0 test/integration/.keep | 0 test/mailers/.keep | 0 test/models/.keep | 0 test/models/word_test.rb | 7 + test/test_helper.rb | 10 ++ vendor/assets/javascripts/.keep | 0 vendor/assets/stylesheets/.keep | 0 77 files changed, 1359 insertions(+) create mode 100644 .gitignore create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 README.md create mode 100644 Rakefile create mode 100644 app/assets/fonts/DIN Alternate Bold.ttf create mode 100644 app/assets/images/.keep create mode 100644 app/assets/javascripts/application.js create mode 100644 app/assets/javascripts/words.js create mode 100644 app/assets/stylesheets/application.css create mode 100644 app/assets/stylesheets/global.scss create mode 100644 app/assets/stylesheets/scaffolds.scss create mode 100644 app/assets/stylesheets/words.scss create mode 100644 app/controllers/application_controller.rb create mode 100644 app/controllers/concerns/.keep create mode 100644 app/controllers/words_controller.rb create mode 100644 app/helpers/application_helper.rb create mode 100644 app/helpers/words_helper.rb create mode 100644 app/mailers/.keep create mode 100644 app/models/.keep create mode 100644 app/models/concerns/.keep create mode 100644 app/models/word.rb create mode 100644 app/views/layouts/application.html.erb create mode 100644 app/views/words/_form.html.erb create mode 100644 app/views/words/edit.html.erb create mode 100644 app/views/words/index.html.erb create mode 100644 app/views/words/index.json.jbuilder create mode 100644 app/views/words/new.html.erb create mode 100644 app/views/words/show.html.erb create mode 100644 app/views/words/show.json.jbuilder create mode 100755 bin/bundle create mode 100755 bin/rails create mode 100755 bin/rake create mode 100755 bin/setup create mode 100755 bin/spring create mode 100644 config.ru create mode 100644 config/application.rb create mode 100644 config/boot.rb create mode 100644 config/database.yml create mode 100644 config/environment.rb create mode 100644 config/environments/development.rb create mode 100644 config/environments/production.rb create mode 100644 config/environments/test.rb create mode 100644 config/initializers/assets.rb create mode 100644 config/initializers/backtrace_silencers.rb create mode 100644 config/initializers/cookies_serializer.rb create mode 100644 config/initializers/filter_parameter_logging.rb create mode 100644 config/initializers/inflections.rb create mode 100644 config/initializers/mime_types.rb create mode 100644 config/initializers/session_store.rb create mode 100644 config/initializers/wrap_parameters.rb create mode 100644 config/locales/en.yml create mode 100644 config/routes.rb create mode 100644 config/secrets.yml create mode 100644 db/migrate/20160316071351_create_words.rb create mode 100644 db/schema.rb create mode 100644 db/seeds.rb create mode 100644 lib/assets/.keep create mode 100644 lib/tasks/.keep create mode 100644 log/.keep create mode 100644 public/404.html create mode 100644 public/422.html create mode 100644 public/500.html create mode 100644 public/favicon.ico create mode 100644 public/robots.txt create mode 100644 test/controllers/.keep create mode 100644 test/controllers/words_controller_test.rb create mode 100644 test/fixtures/.keep create mode 100644 test/fixtures/words.yml create mode 100644 test/helpers/.keep create mode 100644 test/integration/.keep create mode 100644 test/mailers/.keep create mode 100644 test/models/.keep create mode 100644 test/models/word_test.rb create mode 100644 test/test_helper.rb create mode 100644 vendor/assets/javascripts/.keep create mode 100644 vendor/assets/stylesheets/.keep diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5b61ab0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +# 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 all logfiles and tempfiles. +/log/* +!/log/.keep +/tmp diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..cfee958 --- /dev/null +++ b/Gemfile @@ -0,0 +1,36 @@ +source 'https://rubygems.org' + +gem 'rails', '4.2.6' +gem 'pg', '~> 0.15' +gem 'sass-rails', '~> 5.0' +gem 'uglifier', '>= 1.3.0' +gem 'coffee-rails', '~> 4.1.0' + +gem 'jquery-rails' +gem 'turbolinks' +gem 'jbuilder', '~> 2.0' +gem 'sdoc', '~> 0.4.0', group: :doc + +gem 'normalize-rails' + +# Use ActiveModel has_secure_password +# gem 'bcrypt', '~> 3.1.7' + +# Use Unicorn as the app server +# gem 'unicorn' + +# Use Capistrano for deployment +# gem 'capistrano-rails', group: :development + +group :development, :test do + # Call 'byebug' anywhere in the code to stop execution and get a debugger console + gem 'byebug' +end + +group :development do + # Access an IRB console on exception pages or by using <%= console %> in views + gem 'web-console', '~> 2.0' + + # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring + gem 'spring' +end diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..6c9f1da --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,158 @@ +GEM + remote: https://rubygems.org/ + specs: + actionmailer (4.2.6) + actionpack (= 4.2.6) + actionview (= 4.2.6) + activejob (= 4.2.6) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 1.0, >= 1.0.5) + actionpack (4.2.6) + actionview (= 4.2.6) + activesupport (= 4.2.6) + rack (~> 1.6) + rack-test (~> 0.6.2) + rails-dom-testing (~> 1.0, >= 1.0.5) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + actionview (4.2.6) + activesupport (= 4.2.6) + builder (~> 3.1) + erubis (~> 2.7.0) + rails-dom-testing (~> 1.0, >= 1.0.5) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + activejob (4.2.6) + activesupport (= 4.2.6) + globalid (>= 0.3.0) + activemodel (4.2.6) + activesupport (= 4.2.6) + builder (~> 3.1) + activerecord (4.2.6) + activemodel (= 4.2.6) + activesupport (= 4.2.6) + arel (~> 6.0) + activesupport (4.2.6) + i18n (~> 0.7) + json (~> 1.7, >= 1.7.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + arel (6.0.3) + binding_of_caller (0.7.2) + debug_inspector (>= 0.0.1) + builder (3.2.2) + byebug (8.2.2) + coffee-rails (4.1.1) + coffee-script (>= 2.2.0) + railties (>= 4.0.0, < 5.1.x) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.10.0) + concurrent-ruby (1.0.1) + debug_inspector (0.0.2) + erubis (2.7.0) + execjs (2.6.0) + globalid (0.3.6) + activesupport (>= 4.1.0) + i18n (0.7.0) + jbuilder (2.4.1) + activesupport (>= 3.0.0, < 5.1) + multi_json (~> 1.2) + jquery-rails (4.1.1) + rails-dom-testing (>= 1, < 3) + railties (>= 4.2.0) + thor (>= 0.14, < 2.0) + json (1.8.3) + loofah (2.0.3) + nokogiri (>= 1.5.9) + mail (2.6.3) + mime-types (>= 1.16, < 3) + mime-types (2.99.1) + mini_portile2 (2.0.0) + minitest (5.8.4) + multi_json (1.11.2) + nokogiri (1.6.7.2) + mini_portile2 (~> 2.0.0.rc2) + normalize-rails (3.0.3) + pg (0.18.4) + rack (1.6.4) + rack-test (0.6.3) + rack (>= 1.0) + rails (4.2.6) + actionmailer (= 4.2.6) + actionpack (= 4.2.6) + actionview (= 4.2.6) + activejob (= 4.2.6) + activemodel (= 4.2.6) + activerecord (= 4.2.6) + activesupport (= 4.2.6) + bundler (>= 1.3.0, < 2.0) + railties (= 4.2.6) + sprockets-rails + rails-deprecated_sanitizer (1.0.3) + activesupport (>= 4.2.0.alpha) + rails-dom-testing (1.0.7) + activesupport (>= 4.2.0.beta, < 5.0) + nokogiri (~> 1.6.0) + rails-deprecated_sanitizer (>= 1.0.1) + rails-html-sanitizer (1.0.3) + loofah (~> 2.0) + railties (4.2.6) + actionpack (= 4.2.6) + activesupport (= 4.2.6) + rake (>= 0.8.7) + thor (>= 0.18.1, < 2.0) + rake (11.1.1) + rdoc (4.2.2) + json (~> 1.4) + sass (3.4.21) + sass-rails (5.0.4) + railties (>= 4.0.0, < 5.0) + sass (~> 3.1) + sprockets (>= 2.8, < 4.0) + sprockets-rails (>= 2.0, < 4.0) + tilt (>= 1.1, < 3) + sdoc (0.4.1) + json (~> 1.7, >= 1.7.7) + rdoc (~> 4.0) + spring (1.6.4) + sprockets (3.5.2) + concurrent-ruby (~> 1.0) + rack (> 1, < 3) + sprockets-rails (3.0.4) + actionpack (>= 4.0) + activesupport (>= 4.0) + sprockets (>= 3.0.0) + thor (0.19.1) + thread_safe (0.3.5) + tilt (2.0.2) + turbolinks (2.5.3) + coffee-rails + tzinfo (1.2.2) + thread_safe (~> 0.1) + uglifier (2.7.2) + execjs (>= 0.3.0) + json (>= 1.8.0) + web-console (2.3.0) + activemodel (>= 4.0) + binding_of_caller (>= 0.7.2) + railties (>= 4.0) + sprockets-rails (>= 2.0, < 4.0) + +PLATFORMS + ruby + +DEPENDENCIES + byebug + coffee-rails (~> 4.1.0) + jbuilder (~> 2.0) + jquery-rails + normalize-rails + pg (~> 0.15) + rails (= 4.2.6) + sass-rails (~> 5.0) + sdoc (~> 0.4.0) + spring + turbolinks + uglifier (>= 1.3.0) + web-console (~> 2.0) diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000..ba6b733 --- /dev/null +++ b/Rakefile @@ -0,0 +1,6 @@ +# Add your own tasks in files placed in lib/tasks ending in .rake, +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. + +require File.expand_path('../config/application', __FILE__) + +Rails.application.load_tasks diff --git a/app/assets/fonts/DIN Alternate Bold.ttf b/app/assets/fonts/DIN Alternate Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..65af42492d844adec3c76578c9bdf8e29166a90c GIT binary patch literal 147024 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/.keep b/app/assets/images/.keep new file mode 100644 index 0000000..e69de29 diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js new file mode 100644 index 0000000..e07c5a8 --- /dev/null +++ b/app/assets/javascripts/application.js @@ -0,0 +1,16 @@ +// This is a manifest file that'll be compiled into application.js, which will include all the files +// listed below. +// +// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, +// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. +// +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// compiled file. +// +// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details +// about supported directives. +// +//= require jquery +//= require jquery_ujs +//= require turbolinks +//= require_tree . diff --git a/app/assets/javascripts/words.js b/app/assets/javascripts/words.js new file mode 100644 index 0000000..eefef42 --- /dev/null +++ b/app/assets/javascripts/words.js @@ -0,0 +1,49 @@ +'use strict' + +// Get the width of a string +String.prototype.width = function(font) { + var f = font || '12px arial', + o = $('
' + this + '
') + .css({'position': 'absolute', 'float': 'left', 'white-space': 'nowrap', 'visibility': 'hidden', 'font': f}) + .appendTo($('body')), + w = o.width(); + o.remove(); + return w; +} + +$(function () { + + // Get the inputs as needed + const jqInput = $('.word-input') + const jqInputWidth = jqInput.innerWidth() + const input = jqInput[0] + + // Get the maximum font size, according to what is set on the page + const maxFontSize = parseInt(jqInput.css('font-size'), 10) + + // Resize the text if necessary so it always fits on the screen + jqInput.on('keyup', (e) => { + let currentFontSize = parseInt(jqInput.css('font-size'), 10) + + // While the value's width is greater than the input width, + // decrease the size + while (e.target.value.width(jqInput.css('font')) > jqInputWidth) { + currentFontSize -= 1 + jqInput.css('font-size', currentFontSize) + } + + // While the value's width is less than the input width and + // less than the maxFontSize, increase the size + while (e.target.value.width(jqInput.css('font')) < jqInputWidth && currentFontSize < maxFontSize) { + currentFontSize += 1 + jqInput.css('font-size', currentFontSize) + } + }) + + // Prevent spaces (force one-word responses) + jqInput.on('keydown', (e) => { + if (e.keyCode === 32) + e.preventDefault() + }) + +}) diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css new file mode 100644 index 0000000..75a12b5 --- /dev/null +++ b/app/assets/stylesheets/application.css @@ -0,0 +1,16 @@ +/* + * This is a manifest file that'll be compiled into application.css, which will include all the files + * listed below. + * + * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, + * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path. + * + * You're free to add application-wide styles to this file and they'll appear at the bottom of the + * compiled file so the styles you add here take precedence over styles defined in any styles + * defined in the other CSS/SCSS files in this directory. It is generally better to create a new + * file per style scope. + * + *= require normalize-rails + *= require_tree . + *= require_self + */ diff --git a/app/assets/stylesheets/global.scss b/app/assets/stylesheets/global.scss new file mode 100644 index 0000000..4f4f24f --- /dev/null +++ b/app/assets/stylesheets/global.scss @@ -0,0 +1,18 @@ +@font-face { + font-family: 'DIN Alternate'; + src: url('../fonts/DIN Alternate Bold.ttf') format('truetype'); +} + +* { + box-sizing: border-box; +} + +html, body { + width: 100%; + height: 100%; + font-family: 'DIN Alternate'!important; +} + +body { + padding: 40px 60px; +} diff --git a/app/assets/stylesheets/scaffolds.scss b/app/assets/stylesheets/scaffolds.scss new file mode 100644 index 0000000..ed7a765 --- /dev/null +++ b/app/assets/stylesheets/scaffolds.scss @@ -0,0 +1,73 @@ +body { + background-color: #fff; + color: #333; + font-family: verdana, arial, helvetica, sans-serif; + font-size: 13px; + line-height: 18px; +} + +p, ol, ul, td { + font-family: verdana, arial, helvetica, sans-serif; + font-size: 13px; + line-height: 18px; +} + +pre { + background-color: #eee; + padding: 10px; + font-size: 11px; +} + +a { + color: #000; + + &:visited { + color: #666; + } + + &:hover { + color: #fff; + background-color: #000; + } +} + +div { + &.field, &.actions { + margin-bottom: 10px; + } +} + +#notice { + color: green; +} + +.field_with_errors { + padding: 2px; + background-color: red; + display: table; +} + +#error_explanation { + width: 450px; + border: 2px solid red; + padding: 7px; + padding-bottom: 0; + margin-bottom: 20px; + background-color: #f0f0f0; + + h2 { + text-align: left; + font-weight: bold; + padding: 5px 5px 5px 15px; + font-size: 12px; + margin: -7px; + margin-bottom: 0px; + background-color: #c00; + color: #fff; + } + + ul li { + font-size: 12px; + list-style: square; + } +} diff --git a/app/assets/stylesheets/words.scss b/app/assets/stylesheets/words.scss new file mode 100644 index 0000000..1654889 --- /dev/null +++ b/app/assets/stylesheets/words.scss @@ -0,0 +1,21 @@ +// Place all the styles related to the words controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ + +.new-word { + h1 { + font-size: 70px; + margin-bottom: 80px; + } + + input.word-input { + font-size: 290px; + border: 0; + width: 100%; + padding: 0; + + &:focus { + outline: none; + } + } +} diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb new file mode 100644 index 0000000..d83690e --- /dev/null +++ b/app/controllers/application_controller.rb @@ -0,0 +1,5 @@ +class ApplicationController < ActionController::Base + # Prevent CSRF attacks by raising an exception. + # For APIs, you may want to use :null_session instead. + protect_from_forgery with: :exception +end diff --git a/app/controllers/concerns/.keep b/app/controllers/concerns/.keep new file mode 100644 index 0000000..e69de29 diff --git a/app/controllers/words_controller.rb b/app/controllers/words_controller.rb new file mode 100644 index 0000000..d4dca63 --- /dev/null +++ b/app/controllers/words_controller.rb @@ -0,0 +1,74 @@ +class WordsController < ApplicationController + before_action :set_word, only: [:show, :edit, :update, :destroy] + + # GET /words + # GET /words.json + def index + @words = Word.all + end + + # GET /words/1 + # GET /words/1.json + def show + end + + # GET /words/new + def new + @word = Word.new + end + + # GET /words/1/edit + def edit + end + + # POST /words + # POST /words.json + def create + @word = Word.new(word_params) + + respond_to do |format| + if @word.save + format.html { redirect_to @word, notice: 'Word was successfully created.' } + format.json { render :show, status: :created, location: @word } + else + format.html { render :new } + format.json { render json: @word.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /words/1 + # PATCH/PUT /words/1.json + def update + respond_to do |format| + if @word.update(word_params) + format.html { redirect_to @word, notice: 'Word was successfully updated.' } + format.json { render :show, status: :ok, location: @word } + else + format.html { render :edit } + format.json { render json: @word.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /words/1 + # DELETE /words/1.json + def destroy + @word.destroy + respond_to do |format| + format.html { redirect_to words_url, notice: 'Word was successfully destroyed.' } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_word + @word = Word.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def word_params + params.fetch(:word, {}) + end +end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb new file mode 100644 index 0000000..de6be79 --- /dev/null +++ b/app/helpers/application_helper.rb @@ -0,0 +1,2 @@ +module ApplicationHelper +end diff --git a/app/helpers/words_helper.rb b/app/helpers/words_helper.rb new file mode 100644 index 0000000..a402dcb --- /dev/null +++ b/app/helpers/words_helper.rb @@ -0,0 +1,2 @@ +module WordsHelper +end diff --git a/app/mailers/.keep b/app/mailers/.keep new file mode 100644 index 0000000..e69de29 diff --git a/app/models/.keep b/app/models/.keep new file mode 100644 index 0000000..e69de29 diff --git a/app/models/concerns/.keep b/app/models/concerns/.keep new file mode 100644 index 0000000..e69de29 diff --git a/app/models/word.rb b/app/models/word.rb new file mode 100644 index 0000000..db3c06f --- /dev/null +++ b/app/models/word.rb @@ -0,0 +1,2 @@ +class Word < ActiveRecord::Base +end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb new file mode 100644 index 0000000..eb5874c --- /dev/null +++ b/app/views/layouts/application.html.erb @@ -0,0 +1,14 @@ + + + + KatrinaRicksBFA + <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> + <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> + <%= csrf_meta_tags %> + + + +<%= yield %> + + + diff --git a/app/views/words/_form.html.erb b/app/views/words/_form.html.erb new file mode 100644 index 0000000..6385687 --- /dev/null +++ b/app/views/words/_form.html.erb @@ -0,0 +1,17 @@ +<%= form_for(@word) do |f| %> + <% if @word.errors.any? %> +
+

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

+ +
    + <% @word.errors.full_messages.each do |message| %> +
  • <%= message %>
  • + <% end %> +
+
+ <% end %> + +
+ <%= f.submit %> +
+<% end %> diff --git a/app/views/words/edit.html.erb b/app/views/words/edit.html.erb new file mode 100644 index 0000000..6d40090 --- /dev/null +++ b/app/views/words/edit.html.erb @@ -0,0 +1,6 @@ +

Editing Word

+ +<%= render 'form' %> + +<%= link_to 'Show', @word %> | +<%= link_to 'Back', words_path %> diff --git a/app/views/words/index.html.erb b/app/views/words/index.html.erb new file mode 100644 index 0000000..f0c73c8 --- /dev/null +++ b/app/views/words/index.html.erb @@ -0,0 +1,25 @@ +

<%= notice %>

+ +

Listing Words

+ + + + + + + + + + <% @words.each do |word| %> + + + + + + <% end %> + +
<%= link_to 'Show', word %><%= link_to 'Edit', edit_word_path(word) %><%= link_to 'Destroy', word, method: :delete, data: { confirm: 'Are you sure?' } %>
+ +
+ +<%= link_to 'New Word', new_word_path %> diff --git a/app/views/words/index.json.jbuilder b/app/views/words/index.json.jbuilder new file mode 100644 index 0000000..716ded5 --- /dev/null +++ b/app/views/words/index.json.jbuilder @@ -0,0 +1,4 @@ +json.array!(@words) do |word| + json.extract! word, :id + json.url word_url(word, format: :json) +end diff --git a/app/views/words/new.html.erb b/app/views/words/new.html.erb new file mode 100644 index 0000000..6202e4d --- /dev/null +++ b/app/views/words/new.html.erb @@ -0,0 +1,7 @@ +
+

describe your experience in one word:

+ + <%= form_for :words do |f| %> + <%= f.text_field :word, class: "word-input", autofocus: true %> + <% end %> +
diff --git a/app/views/words/show.html.erb b/app/views/words/show.html.erb new file mode 100644 index 0000000..c0e5d08 --- /dev/null +++ b/app/views/words/show.html.erb @@ -0,0 +1,4 @@ +

<%= notice %>

+ +<%= link_to 'Edit', edit_word_path(@word) %> | +<%= link_to 'Back', words_path %> diff --git a/app/views/words/show.json.jbuilder b/app/views/words/show.json.jbuilder new file mode 100644 index 0000000..3a79554 --- /dev/null +++ b/app/views/words/show.json.jbuilder @@ -0,0 +1 @@ +json.extract! @word, :id, :created_at, :updated_at diff --git a/bin/bundle b/bin/bundle new file mode 100755 index 0000000..66e9889 --- /dev/null +++ b/bin/bundle @@ -0,0 +1,3 @@ +#!/usr/bin/env ruby +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) +load Gem.bin_path('bundler', 'bundle') diff --git a/bin/rails b/bin/rails new file mode 100755 index 0000000..0138d79 --- /dev/null +++ b/bin/rails @@ -0,0 +1,9 @@ +#!/usr/bin/env ruby +begin + load File.expand_path('../spring', __FILE__) +rescue LoadError => e + raise unless e.message.include?('spring') +end +APP_PATH = File.expand_path('../../config/application', __FILE__) +require_relative '../config/boot' +require 'rails/commands' diff --git a/bin/rake b/bin/rake new file mode 100755 index 0000000..d87d5f5 --- /dev/null +++ b/bin/rake @@ -0,0 +1,9 @@ +#!/usr/bin/env ruby +begin + load File.expand_path('../spring', __FILE__) +rescue LoadError => e + raise unless e.message.include?('spring') +end +require_relative '../config/boot' +require 'rake' +Rake.application.run diff --git a/bin/setup b/bin/setup new file mode 100755 index 0000000..acdb2c1 --- /dev/null +++ b/bin/setup @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +require 'pathname' + +# path to your application root. +APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) + +Dir.chdir APP_ROOT do + # This script is a starting point to setup your application. + # Add necessary setup steps to this file: + + puts "== Installing dependencies ==" + system "gem install bundler --conservative" + system "bundle check || bundle install" + + # puts "\n== Copying sample files ==" + # unless File.exist?("config/database.yml") + # system "cp config/database.yml.sample config/database.yml" + # end + + puts "\n== Preparing database ==" + system "bin/rake db:setup" + + puts "\n== Removing old logs and tempfiles ==" + system "rm -f log/*" + system "rm -rf tmp/cache" + + puts "\n== Restarting application server ==" + system "touch tmp/restart.txt" +end diff --git a/bin/spring b/bin/spring new file mode 100755 index 0000000..7fe232c --- /dev/null +++ b/bin/spring @@ -0,0 +1,15 @@ +#!/usr/bin/env ruby + +# This file loads spring without using Bundler, in order to be fast. +# It gets overwritten when you run the `spring binstub` command. + +unless defined?(Spring) + require 'rubygems' + require 'bundler' + + if (match = Bundler.default_lockfile.read.match(/^GEM$.*?^ (?: )*spring \((.*?)\)$.*?^$/m)) + Gem.paths = { 'GEM_PATH' => [Bundler.bundle_path.to_s, *Gem.path].uniq.join(Gem.path_separator) } + gem 'spring', match[1] + require 'spring/binstub' + end +end diff --git a/config.ru b/config.ru new file mode 100644 index 0000000..bd83b25 --- /dev/null +++ b/config.ru @@ -0,0 +1,4 @@ +# This file is used by Rack-based servers to start the application. + +require ::File.expand_path('../config/environment', __FILE__) +run Rails.application diff --git a/config/application.rb b/config/application.rb new file mode 100644 index 0000000..c268dad --- /dev/null +++ b/config/application.rb @@ -0,0 +1,26 @@ +require File.expand_path('../boot', __FILE__) + +require 'rails/all' + +# Require the gems listed in Gemfile, including any gems +# you've limited to :test, :development, or :production. +Bundler.require(*Rails.groups) + +module KatrinaRicksBFA + class Application < Rails::Application + # Settings in config/environments/* take precedence over those specified here. + # Application configuration should go into files in config/initializers + # -- all .rb files in that directory are automatically loaded. + + # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. + # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. + # config.time_zone = 'Central Time (US & Canada)' + + # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. + # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] + # config.i18n.default_locale = :de + + # Do not swallow errors in after_commit/after_rollback callbacks. + config.active_record.raise_in_transactional_callbacks = true + end +end diff --git a/config/boot.rb b/config/boot.rb new file mode 100644 index 0000000..6b750f0 --- /dev/null +++ b/config/boot.rb @@ -0,0 +1,3 @@ +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) + +require 'bundler/setup' # Set up gems listed in the Gemfile. diff --git a/config/database.yml b/config/database.yml new file mode 100644 index 0000000..824e664 --- /dev/null +++ b/config/database.yml @@ -0,0 +1,85 @@ +# PostgreSQL. Versions 8.2 and up are supported. +# +# Install the pg driver: +# gem install pg +# On OS X with Homebrew: +# gem install pg -- --with-pg-config=/usr/local/bin/pg_config +# On OS X with MacPorts: +# gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config +# On Windows: +# gem install pg +# Choose the win32 build. +# Install PostgreSQL and put its /bin directory on your path. +# +# Configure Using Gemfile +# gem 'pg' +# +default: &default + adapter: postgresql + encoding: unicode + # For details on connection pooling, see rails configuration guide + # http://guides.rubyonrails.org/configuring.html#database-pooling + pool: 5 + +development: + <<: *default + database: KatrinaRicksBFA_development + + # The specified database role being used to connect to postgres. + # To create additional roles in postgres see `$ createuser --help`. + # When left blank, postgres will use the default role. This is + # the same name as the operating system user that initialized the database. + #username: KatrinaRicksBFA + + # The password associated with the postgres role (username). + #password: + + # Connect on a TCP socket. Omitted by default since the client uses a + # domain socket that doesn't need configuration. Windows does not have + # domain sockets, so uncomment these lines. + #host: localhost + + # The TCP port the server listens on. Defaults to 5432. + # If your server runs on a different port number, change accordingly. + #port: 5432 + + # Schema search path. The server defaults to $user,public + #schema_search_path: myapp,sharedapp,public + + # Minimum log levels, in increasing order: + # debug5, debug4, debug3, debug2, debug1, + # log, notice, warning, error, fatal, and panic + # Defaults to warning. + #min_messages: notice + +# 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: KatrinaRicksBFA_test + +# As with config/secrets.yml, you never want to store sensitive information, +# like your database password, in your source code. If your source code is +# ever seen by anyone, they now have access to your database. +# +# Instead, provide the password as a unix environment variable when you boot +# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database +# for a full rundown on how to provide these environment variables in a +# production deployment. +# +# On Heroku and other platform providers, you may have a full connection URL +# available as an environment variable. For example: +# +# DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase" +# +# You can use this database configuration with: +# +# production: +# url: <%= ENV['DATABASE_URL'] %> +# +production: + <<: *default + database: KatrinaRicksBFA_production + username: KatrinaRicksBFA + password: <%= ENV['KATRINARICKSBFA_DATABASE_PASSWORD'] %> diff --git a/config/environment.rb b/config/environment.rb new file mode 100644 index 0000000..ee8d90d --- /dev/null +++ b/config/environment.rb @@ -0,0 +1,5 @@ +# Load the Rails application. +require File.expand_path('../application', __FILE__) + +# Initialize the Rails application. +Rails.application.initialize! diff --git a/config/environments/development.rb b/config/environments/development.rb new file mode 100644 index 0000000..b55e214 --- /dev/null +++ b/config/environments/development.rb @@ -0,0 +1,41 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # In the development environment your application's code is reloaded on + # every request. This slows down response time but is perfect for development + # since you don't have to restart the web server when you make code changes. + config.cache_classes = false + + # Do not eager load code on boot. + config.eager_load = false + + # Show full error reports and disable caching. + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + + # Don't care if the mailer can't send. + config.action_mailer.raise_delivery_errors = false + + # Print deprecation notices to the Rails logger. + config.active_support.deprecation = :log + + # Raise an error on page load if there are pending migrations. + config.active_record.migration_error = :page_load + + # Debug mode disables concatenation and preprocessing of assets. + # This option may cause significant delays in view rendering with a large + # number of complex assets. + config.assets.debug = true + + # Asset digests allow you to set far-future HTTP expiration dates on all assets, + # yet still be able to expire them through the digest params. + config.assets.digest = true + + # Adds additional error checking when serving assets at runtime. + # Checks for improperly declared sprockets dependencies. + # Raises helpful error messages. + config.assets.raise_runtime_errors = true + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true +end diff --git a/config/environments/production.rb b/config/environments/production.rb new file mode 100644 index 0000000..5c1b32e --- /dev/null +++ b/config/environments/production.rb @@ -0,0 +1,79 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # Code is not reloaded between requests. + config.cache_classes = true + + # Eager load code on boot. This eager loads most of Rails and + # your application in memory, allowing both threaded web servers + # and those relying on copy on write to perform better. + # Rake tasks automatically ignore this option for performance. + config.eager_load = true + + # Full error reports are disabled and caching is turned on. + config.consider_all_requests_local = false + config.action_controller.perform_caching = true + + # Enable Rack::Cache to put a simple HTTP cache in front of your application + # Add `rack-cache` to your Gemfile before enabling this. + # For large-scale production use, consider using a caching reverse proxy like + # NGINX, varnish or squid. + # config.action_dispatch.rack_cache = true + + # Disable serving static files from the `/public` folder by default since + # Apache or NGINX already handles this. + config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present? + + # Compress JavaScripts and CSS. + config.assets.js_compressor = :uglifier + # config.assets.css_compressor = :sass + + # Do not fallback to assets pipeline if a precompiled asset is missed. + config.assets.compile = false + + # Asset digests allow you to set far-future HTTP expiration dates on all assets, + # yet still be able to expire them through the digest params. + config.assets.digest = true + + # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb + + # Specifies the header that your server uses for sending files. + # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache + # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX + + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. + # config.force_ssl = true + + # Use the lowest log level to ensure availability of diagnostic information + # when problems arise. + config.log_level = :debug + + # Prepend all log lines with the following tags. + # config.log_tags = [ :subdomain, :uuid ] + + # Use a different logger for distributed setups. + # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) + + # Use a different cache store in production. + # config.cache_store = :mem_cache_store + + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.action_controller.asset_host = 'http://assets.example.com' + + # Ignore bad email addresses and do not raise email delivery errors. + # Set this to true and configure the email server for immediate delivery to raise delivery errors. + # config.action_mailer.raise_delivery_errors = false + + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to + # the I18n.default_locale when a translation cannot be found). + config.i18n.fallbacks = true + + # Send deprecation notices to registered listeners. + config.active_support.deprecation = :notify + + # Use default logging formatter so that PID and timestamp are not suppressed. + config.log_formatter = ::Logger::Formatter.new + + # Do not dump schema after migrations. + config.active_record.dump_schema_after_migration = false +end diff --git a/config/environments/test.rb b/config/environments/test.rb new file mode 100644 index 0000000..1c19f08 --- /dev/null +++ b/config/environments/test.rb @@ -0,0 +1,42 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # The test environment is used exclusively to run your application's + # test suite. You never need to work with it otherwise. Remember that + # your test database is "scratch space" for the test suite and is wiped + # and recreated between test runs. Don't rely on the data there! + config.cache_classes = true + + # Do not eager load code on boot. This avoids loading your whole application + # just for the purpose of running a single test. If you are using a tool that + # preloads Rails for running tests, you may have to set it to true. + config.eager_load = false + + # Configure static file server for tests with Cache-Control for performance. + config.serve_static_files = true + config.static_cache_control = 'public, max-age=3600' + + # Show full error reports and disable caching. + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + + # Raise exceptions instead of rendering exception templates. + config.action_dispatch.show_exceptions = false + + # Disable request forgery protection in test environment. + config.action_controller.allow_forgery_protection = false + + # Tell Action Mailer not to deliver emails to the real world. + # The :test delivery method accumulates sent emails in the + # ActionMailer::Base.deliveries array. + config.action_mailer.delivery_method = :test + + # Randomize the order test cases are executed. + config.active_support.test_order = :random + + # Print deprecation notices to the stderr. + config.active_support.deprecation = :stderr + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true +end diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb new file mode 100644 index 0000000..01ef3e6 --- /dev/null +++ b/config/initializers/assets.rb @@ -0,0 +1,11 @@ +# Be sure to restart your server when you modify this file. + +# Version of your assets, change this if you want to expire all your assets. +Rails.application.config.assets.version = '1.0' + +# Add additional assets to the asset load path +# Rails.application.config.assets.paths << Emoji.images_path + +# Precompile additional assets. +# application.js, application.css, and all non-JS/CSS in app/assets folder are already added. +# Rails.application.config.assets.precompile += %w( search.js ) diff --git a/config/initializers/backtrace_silencers.rb b/config/initializers/backtrace_silencers.rb new file mode 100644 index 0000000..59385cd --- /dev/null +++ b/config/initializers/backtrace_silencers.rb @@ -0,0 +1,7 @@ +# Be sure to restart your server when you modify this file. + +# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. +# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } + +# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. +# Rails.backtrace_cleaner.remove_silencers! diff --git a/config/initializers/cookies_serializer.rb b/config/initializers/cookies_serializer.rb new file mode 100644 index 0000000..7f70458 --- /dev/null +++ b/config/initializers/cookies_serializer.rb @@ -0,0 +1,3 @@ +# Be sure to restart your server when you modify this file. + +Rails.application.config.action_dispatch.cookies_serializer = :json diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb new file mode 100644 index 0000000..4a994e1 --- /dev/null +++ b/config/initializers/filter_parameter_logging.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Configure sensitive parameters which will be filtered from the log file. +Rails.application.config.filter_parameters += [:password] diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb new file mode 100644 index 0000000..ac033bf --- /dev/null +++ b/config/initializers/inflections.rb @@ -0,0 +1,16 @@ +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format. Inflections +# are locale specific, and you may define rules for as many different +# locales as you wish. All of these examples are active by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.plural /^(ox)$/i, '\1en' +# inflect.singular /^(ox)en/i, '\1' +# inflect.irregular 'person', 'people' +# inflect.uncountable %w( fish sheep ) +# end + +# These inflection rules are supported but not enabled by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.acronym 'RESTful' +# end diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb new file mode 100644 index 0000000..dc18996 --- /dev/null +++ b/config/initializers/mime_types.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Add new mime types for use in respond_to blocks: +# Mime::Type.register "text/richtext", :rtf diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb new file mode 100644 index 0000000..15f0783 --- /dev/null +++ b/config/initializers/session_store.rb @@ -0,0 +1,3 @@ +# Be sure to restart your server when you modify this file. + +Rails.application.config.session_store :cookie_store, key: '_KatrinaRicksBFA_session' diff --git a/config/initializers/wrap_parameters.rb b/config/initializers/wrap_parameters.rb new file mode 100644 index 0000000..33725e9 --- /dev/null +++ b/config/initializers/wrap_parameters.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. + +# This file contains settings for ActionController::ParamsWrapper which +# is enabled by default. + +# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. +ActiveSupport.on_load(:action_controller) do + wrap_parameters format: [:json] if respond_to?(:wrap_parameters) +end + +# To enable root element in JSON for ActiveRecord objects. +# ActiveSupport.on_load(:active_record) do +# self.include_root_in_json = true +# end diff --git a/config/locales/en.yml b/config/locales/en.yml new file mode 100644 index 0000000..0653957 --- /dev/null +++ b/config/locales/en.yml @@ -0,0 +1,23 @@ +# Files in the config/locales directory are used for internationalization +# and are automatically loaded by Rails. If you want to use locales other +# than English, add the necessary files in this directory. +# +# To use the locales, use `I18n.t`: +# +# I18n.t 'hello' +# +# In views, this is aliased to just `t`: +# +# <%= t('hello') %> +# +# To use a different locale, set it with `I18n.locale`: +# +# I18n.locale = :es +# +# This would use the information in config/locales/es.yml. +# +# To learn more, please read the Rails Internationalization guide +# available at http://guides.rubyonrails.org/i18n.html. + +en: + hello: "Hello world" diff --git a/config/routes.rb b/config/routes.rb new file mode 100644 index 0000000..a6f4efa --- /dev/null +++ b/config/routes.rb @@ -0,0 +1,4 @@ +Rails.application.routes.draw do + resources :words + root 'words#new' +end diff --git a/config/secrets.yml b/config/secrets.yml new file mode 100644 index 0000000..6d70013 --- /dev/null +++ b/config/secrets.yml @@ -0,0 +1,22 @@ +# Be sure to restart your server when you modify this file. + +# Your secret key is used for verifying the integrity of signed cookies. +# If you change this key, all old signed cookies will become invalid! + +# Make sure the secret is at least 30 characters and all random, +# no regular words or you'll be exposed to dictionary attacks. +# You can use `rake secret` to generate a secure secret key. + +# Make sure the secrets in this file are kept private +# if you're sharing your code publicly. + +development: + secret_key_base: 8c83b7f661d68692649e56fa9154402e2f70e5a4eaa32b0d4ac569b7d0af5de7c748efb87bd72fffd6e9ef43784820b022f671e6663a1275cc632c7c798a1ec5 + +test: + secret_key_base: ebaa19b9e21d83e8c3cd2de86fcc1e121cb93f8e8ef23bd6fcff85f065c1e0263b8bebdedc597fc563addd6f0330771f6456393961a965260fd492abf2f9d7c7 + +# Do not keep production secrets in the repository, +# instead read values from the environment. +production: + secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> diff --git a/db/migrate/20160316071351_create_words.rb b/db/migrate/20160316071351_create_words.rb new file mode 100644 index 0000000..2f4bcba --- /dev/null +++ b/db/migrate/20160316071351_create_words.rb @@ -0,0 +1,11 @@ +class CreateWords < ActiveRecord::Migration + def change + create_table :words do |t| + t.string :word, index: true, null: false + t.integer :frequency, default: 1, null: false + t.boolean :visible, default: false + + t.timestamps null: false + end + end +end diff --git a/db/schema.rb b/db/schema.rb new file mode 100644 index 0000000..64f2029 --- /dev/null +++ b/db/schema.rb @@ -0,0 +1,29 @@ +# 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: 20160316071351) do + + # These are extensions that must be enabled in order to support this database + enable_extension "plpgsql" + + create_table "words", force: :cascade do |t| + t.string "word", null: false + t.integer "frequency", default: 1, null: false + t.boolean "visible", default: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "words", ["word"], name: "index_words_on_word", using: :btree + +end diff --git a/db/seeds.rb b/db/seeds.rb new file mode 100644 index 0000000..4edb1e8 --- /dev/null +++ b/db/seeds.rb @@ -0,0 +1,7 @@ +# This file should contain all the record creation needed to seed the database with its default values. +# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup). +# +# Examples: +# +# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) +# Mayor.create(name: 'Emanuel', city: cities.first) diff --git a/lib/assets/.keep b/lib/assets/.keep new file mode 100644 index 0000000..e69de29 diff --git a/lib/tasks/.keep b/lib/tasks/.keep new file mode 100644 index 0000000..e69de29 diff --git a/log/.keep b/log/.keep new file mode 100644 index 0000000..e69de29 diff --git a/public/404.html b/public/404.html new file mode 100644 index 0000000..b612547 --- /dev/null +++ b/public/404.html @@ -0,0 +1,67 @@ + + + + The page you were looking for doesn't exist (404) + + + + + + +
+
+

The page you were looking for doesn't exist.

+

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

+
+

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

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

The change you wanted was rejected.

+

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

+
+

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

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

We're sorry, but something went wrong.

+
+

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

+
+ + diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..3c9c7c0 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,5 @@ +# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file +# +# To ban all spiders from the entire site uncomment the next two lines: +# User-agent: * +# Disallow: / diff --git a/test/controllers/.keep b/test/controllers/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/controllers/words_controller_test.rb b/test/controllers/words_controller_test.rb new file mode 100644 index 0000000..47291be --- /dev/null +++ b/test/controllers/words_controller_test.rb @@ -0,0 +1,49 @@ +require 'test_helper' + +class WordsControllerTest < ActionController::TestCase + setup do + @word = words(:one) + end + + test "should get index" do + get :index + assert_response :success + assert_not_nil assigns(:words) + end + + test "should get new" do + get :new + assert_response :success + end + + test "should create word" do + assert_difference('Word.count') do + post :create, word: { } + end + + assert_redirected_to word_path(assigns(:word)) + end + + test "should show word" do + get :show, id: @word + assert_response :success + end + + test "should get edit" do + get :edit, id: @word + assert_response :success + end + + test "should update word" do + patch :update, id: @word, word: { } + assert_redirected_to word_path(assigns(:word)) + end + + test "should destroy word" do + assert_difference('Word.count', -1) do + delete :destroy, id: @word + end + + assert_redirected_to words_path + end +end diff --git a/test/fixtures/.keep b/test/fixtures/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/fixtures/words.yml b/test/fixtures/words.yml new file mode 100644 index 0000000..937a0c0 --- /dev/null +++ b/test/fixtures/words.yml @@ -0,0 +1,11 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +# This model initially had no columns defined. If you add columns to the +# model remove the '{}' from the fixture names and add the columns immediately +# below each fixture, per the syntax in the comments below +# +one: {} +# column: value +# +two: {} +# column: value diff --git a/test/helpers/.keep b/test/helpers/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/integration/.keep b/test/integration/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/mailers/.keep b/test/mailers/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/models/.keep b/test/models/.keep new file mode 100644 index 0000000..e69de29 diff --git a/test/models/word_test.rb b/test/models/word_test.rb new file mode 100644 index 0000000..8893c67 --- /dev/null +++ b/test/models/word_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class WordTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/test_helper.rb b/test/test_helper.rb new file mode 100644 index 0000000..92e39b2 --- /dev/null +++ b/test/test_helper.rb @@ -0,0 +1,10 @@ +ENV['RAILS_ENV'] ||= 'test' +require File.expand_path('../../config/environment', __FILE__) +require 'rails/test_help' + +class ActiveSupport::TestCase + # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. + fixtures :all + + # Add more helper methods to be used by all tests here... +end diff --git a/vendor/assets/javascripts/.keep b/vendor/assets/javascripts/.keep new file mode 100644 index 0000000..e69de29 diff --git a/vendor/assets/stylesheets/.keep b/vendor/assets/stylesheets/.keep new file mode 100644 index 0000000..e69de29