init
This commit is contained in:
commit
cb7e47a466
53
.gitignore
vendored
Normal file
53
.gitignore
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
# 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/.keep
|
||||
/tmp
|
||||
|
||||
### Ruby ###
|
||||
*.gem
|
||||
*.rbc
|
||||
/.config
|
||||
/coverage/
|
||||
/InstalledFiles
|
||||
/pkg/
|
||||
/spec/reports/
|
||||
/spec/examples.txt
|
||||
/test/tmp/
|
||||
/test/version_tmp/
|
||||
/tmp/
|
||||
|
||||
## Documentation cache and generated files:
|
||||
/.yardoc/
|
||||
/_yardoc/
|
||||
/doc/
|
||||
/rdoc/
|
||||
|
||||
## Environment normalisation:
|
||||
/.bundle/
|
||||
/vendor/bundle
|
||||
/lib/bundler/man/
|
||||
|
||||
### Vim ###
|
||||
[._]*.s[a-w][a-z]
|
||||
[._]s[a-w][a-z]
|
||||
*.un~
|
||||
Session.vim
|
||||
.netrwhist
|
||||
*~
|
||||
#
|
||||
### Application Secrets ###
|
||||
application.yml
|
||||
|
35
.rubocop.yml
Normal file
35
.rubocop.yml
Normal file
@ -0,0 +1,35 @@
|
||||
AllCops:
|
||||
Exclude:
|
||||
- db/schema.rb
|
||||
- db/seeds.rb
|
||||
- bin/**/*
|
||||
|
||||
Style/StringLiterals:
|
||||
Enabled: false
|
||||
|
||||
Style/Documentation:
|
||||
Enabled: false
|
||||
|
||||
Style/MethodDefParentheses:
|
||||
Enabled: false
|
||||
|
||||
Style/IndentationConsistency:
|
||||
EnforcedStyle: rails
|
||||
|
||||
Metrics/LineLength:
|
||||
Max: 95
|
||||
|
||||
Metrics/MethodLength:
|
||||
Exclude:
|
||||
- db/migrate/*
|
||||
|
||||
Metrics/LineLength:
|
||||
Exclude:
|
||||
- Rakefile
|
||||
- config/**/*
|
||||
- lib/tasks/**/*
|
||||
- test/test_helper.rb
|
||||
|
||||
Style/ClassAndModuleChildren:
|
||||
Exclude:
|
||||
- test/test_helper.rb
|
37
Gemfile
Normal file
37
Gemfile
Normal file
@ -0,0 +1,37 @@
|
||||
source 'https://rubygems.org'
|
||||
ruby "2.2.2"
|
||||
|
||||
gem 'rails', '~> 4.2.4'
|
||||
gem 'thin', '~> 1.6.3'
|
||||
gem 'responders', '~> 2.1.0'
|
||||
gem 'mysql2', '~> 0.3.20'
|
||||
gem 'bcrypt', '~> 3.1.7'
|
||||
# gem 'rack-protection', '~> 1.5.3'
|
||||
gem 'sass-rails', '~> 5.0'
|
||||
gem 'uglifier', '>= 1.3.0'
|
||||
gem 'jquery-rails'
|
||||
gem 'turbolinks'
|
||||
gem 'haml-rails', "~> 0.9"
|
||||
|
||||
# gem 'rabl-rails', '~> 0.4.1'
|
||||
# gem 'jbuilder', '~> 2.0'
|
||||
gem 'json', '~> 1.8.3'
|
||||
gem 'twilio-ruby', '~> 4.3.0'
|
||||
|
||||
# gem 'sorcery'
|
||||
# gem 'faraday'
|
||||
# gem 'faraday_middleware'
|
||||
|
||||
group :development, :test do
|
||||
gem 'web-console', '~> 2.0'
|
||||
gem 'spring'
|
||||
gem 'awesome_print'
|
||||
gem 'pry-rails'
|
||||
gem 'pry-byebug'
|
||||
gem 'binding_of_caller'
|
||||
gem 'rubocop'
|
||||
gem 'guard'
|
||||
gem 'guard-rubocop'
|
||||
gem 'guard-minitest'
|
||||
gem 'minitest-reporters'
|
||||
end
|
252
Gemfile.lock
Normal file
252
Gemfile.lock
Normal file
@ -0,0 +1,252 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
actionmailer (4.2.4)
|
||||
actionpack (= 4.2.4)
|
||||
actionview (= 4.2.4)
|
||||
activejob (= 4.2.4)
|
||||
mail (~> 2.5, >= 2.5.4)
|
||||
rails-dom-testing (~> 1.0, >= 1.0.5)
|
||||
actionpack (4.2.4)
|
||||
actionview (= 4.2.4)
|
||||
activesupport (= 4.2.4)
|
||||
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.4)
|
||||
activesupport (= 4.2.4)
|
||||
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.4)
|
||||
activesupport (= 4.2.4)
|
||||
globalid (>= 0.3.0)
|
||||
activemodel (4.2.4)
|
||||
activesupport (= 4.2.4)
|
||||
builder (~> 3.1)
|
||||
activerecord (4.2.4)
|
||||
activemodel (= 4.2.4)
|
||||
activesupport (= 4.2.4)
|
||||
arel (~> 6.0)
|
||||
activesupport (4.2.4)
|
||||
i18n (~> 0.7)
|
||||
json (~> 1.7, >= 1.7.7)
|
||||
minitest (~> 5.1)
|
||||
thread_safe (~> 0.3, >= 0.3.4)
|
||||
tzinfo (~> 1.1)
|
||||
ansi (1.5.0)
|
||||
arel (6.0.3)
|
||||
ast (2.1.0)
|
||||
astrolabe (1.3.1)
|
||||
parser (~> 2.2)
|
||||
awesome_print (1.6.1)
|
||||
bcrypt (3.1.10)
|
||||
binding_of_caller (0.7.2)
|
||||
debug_inspector (>= 0.0.1)
|
||||
builder (3.2.2)
|
||||
byebug (5.0.0)
|
||||
columnize (= 0.9.0)
|
||||
coderay (1.1.0)
|
||||
coffee-rails (4.1.0)
|
||||
coffee-script (>= 2.2.0)
|
||||
railties (>= 4.0.0, < 5.0)
|
||||
coffee-script (2.4.1)
|
||||
coffee-script-source
|
||||
execjs
|
||||
coffee-script-source (1.9.1.1)
|
||||
columnize (0.9.0)
|
||||
daemons (1.2.3)
|
||||
debug_inspector (0.0.2)
|
||||
erubis (2.7.0)
|
||||
eventmachine (1.0.8)
|
||||
execjs (2.6.0)
|
||||
ffi (1.9.10)
|
||||
formatador (0.2.5)
|
||||
globalid (0.3.6)
|
||||
activesupport (>= 4.1.0)
|
||||
guard (2.13.0)
|
||||
formatador (>= 0.2.4)
|
||||
listen (>= 2.7, <= 4.0)
|
||||
lumberjack (~> 1.0)
|
||||
nenv (~> 0.1)
|
||||
notiffany (~> 0.0)
|
||||
pry (>= 0.9.12)
|
||||
shellany (~> 0.0)
|
||||
thor (>= 0.18.1)
|
||||
guard-compat (1.2.1)
|
||||
guard-minitest (2.4.4)
|
||||
guard-compat (~> 1.2)
|
||||
minitest (>= 3.0)
|
||||
guard-rubocop (1.2.0)
|
||||
guard (~> 2.0)
|
||||
rubocop (~> 0.20)
|
||||
haml (4.0.6)
|
||||
tilt
|
||||
haml-rails (0.9.0)
|
||||
actionpack (>= 4.0.1)
|
||||
activesupport (>= 4.0.1)
|
||||
haml (>= 4.0.6, < 5.0)
|
||||
html2haml (>= 1.0.1)
|
||||
railties (>= 4.0.1)
|
||||
html2haml (2.0.0)
|
||||
erubis (~> 2.7.0)
|
||||
haml (~> 4.0.0)
|
||||
nokogiri (~> 1.6.0)
|
||||
ruby_parser (~> 3.5)
|
||||
i18n (0.7.0)
|
||||
jquery-rails (4.0.5)
|
||||
rails-dom-testing (~> 1.0)
|
||||
railties (>= 4.2.0)
|
||||
thor (>= 0.14, < 2.0)
|
||||
json (1.8.3)
|
||||
jwt (1.4.1)
|
||||
listen (3.0.3)
|
||||
rb-fsevent (>= 0.9.3)
|
||||
rb-inotify (>= 0.9)
|
||||
loofah (2.0.3)
|
||||
nokogiri (>= 1.5.9)
|
||||
lumberjack (1.0.9)
|
||||
mail (2.6.3)
|
||||
mime-types (>= 1.16, < 3)
|
||||
method_source (0.8.2)
|
||||
mime-types (2.6.1)
|
||||
mini_portile (0.6.2)
|
||||
minitest (5.8.0)
|
||||
minitest-reporters (1.0.16)
|
||||
ansi
|
||||
builder
|
||||
minitest (>= 5.0)
|
||||
ruby-progressbar
|
||||
multi_json (1.11.2)
|
||||
mysql2 (0.3.20)
|
||||
nenv (0.2.0)
|
||||
nokogiri (1.6.6.2)
|
||||
mini_portile (~> 0.6.0)
|
||||
notiffany (0.0.7)
|
||||
nenv (~> 0.1)
|
||||
shellany (~> 0.0)
|
||||
parser (2.2.2.6)
|
||||
ast (>= 1.1, < 3.0)
|
||||
powerpack (0.1.1)
|
||||
pry (0.10.1)
|
||||
coderay (~> 1.1.0)
|
||||
method_source (~> 0.8.1)
|
||||
slop (~> 3.4)
|
||||
pry-byebug (3.2.0)
|
||||
byebug (~> 5.0)
|
||||
pry (~> 0.10)
|
||||
pry-rails (0.3.4)
|
||||
pry (>= 0.9.10)
|
||||
rack (1.6.4)
|
||||
rack-test (0.6.3)
|
||||
rack (>= 1.0)
|
||||
rails (4.2.4)
|
||||
actionmailer (= 4.2.4)
|
||||
actionpack (= 4.2.4)
|
||||
actionview (= 4.2.4)
|
||||
activejob (= 4.2.4)
|
||||
activemodel (= 4.2.4)
|
||||
activerecord (= 4.2.4)
|
||||
activesupport (= 4.2.4)
|
||||
bundler (>= 1.3.0, < 2.0)
|
||||
railties (= 4.2.4)
|
||||
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.2)
|
||||
loofah (~> 2.0)
|
||||
railties (4.2.4)
|
||||
actionpack (= 4.2.4)
|
||||
activesupport (= 4.2.4)
|
||||
rake (>= 0.8.7)
|
||||
thor (>= 0.18.1, < 2.0)
|
||||
rainbow (2.0.0)
|
||||
rake (10.4.2)
|
||||
rb-fsevent (0.9.5)
|
||||
rb-inotify (0.9.5)
|
||||
ffi (>= 0.5.0)
|
||||
responders (2.1.0)
|
||||
railties (>= 4.2.0, < 5)
|
||||
rubocop (0.33.0)
|
||||
astrolabe (~> 1.3)
|
||||
parser (>= 2.2.2.5, < 3.0)
|
||||
powerpack (~> 0.1)
|
||||
rainbow (>= 1.99.1, < 3.0)
|
||||
ruby-progressbar (~> 1.4)
|
||||
ruby-progressbar (1.7.5)
|
||||
ruby_parser (3.6.6)
|
||||
sexp_processor (~> 4.1)
|
||||
sass (3.4.18)
|
||||
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)
|
||||
sexp_processor (4.5.1)
|
||||
shellany (0.0.1)
|
||||
slop (3.6.0)
|
||||
spring (1.3.6)
|
||||
sprockets (3.3.4)
|
||||
rack (~> 1.0)
|
||||
sprockets-rails (2.3.3)
|
||||
actionpack (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
sprockets (>= 2.8, < 4.0)
|
||||
thin (1.6.3)
|
||||
daemons (~> 1.0, >= 1.0.9)
|
||||
eventmachine (~> 1.0)
|
||||
rack (~> 1.0)
|
||||
thor (0.19.1)
|
||||
thread_safe (0.3.5)
|
||||
tilt (2.0.1)
|
||||
turbolinks (2.5.3)
|
||||
coffee-rails
|
||||
twilio-ruby (4.3.0)
|
||||
builder (>= 2.1.2)
|
||||
jwt (~> 1.0)
|
||||
multi_json (>= 1.3.0)
|
||||
tzinfo (1.2.2)
|
||||
thread_safe (~> 0.1)
|
||||
uglifier (2.7.2)
|
||||
execjs (>= 0.3.0)
|
||||
json (>= 1.8.0)
|
||||
web-console (2.2.1)
|
||||
activemodel (>= 4.0)
|
||||
binding_of_caller (>= 0.7.2)
|
||||
railties (>= 4.0)
|
||||
sprockets-rails (>= 2.0, < 4.0)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
awesome_print
|
||||
bcrypt (~> 3.1.7)
|
||||
binding_of_caller
|
||||
guard
|
||||
guard-minitest
|
||||
guard-rubocop
|
||||
haml-rails (~> 0.9)
|
||||
jquery-rails
|
||||
json (~> 1.8.3)
|
||||
minitest-reporters
|
||||
mysql2 (~> 0.3.20)
|
||||
pry-byebug
|
||||
pry-rails
|
||||
rails (~> 4.2.4)
|
||||
responders (~> 2.1.0)
|
||||
rubocop
|
||||
sass-rails (~> 5.0)
|
||||
spring
|
||||
thin (~> 1.6.3)
|
||||
turbolinks
|
||||
twilio-ruby (~> 4.3.0)
|
||||
uglifier (>= 1.3.0)
|
||||
web-console (~> 2.0)
|
29
Guardfile
Normal file
29
Guardfile
Normal file
@ -0,0 +1,29 @@
|
||||
# A sample Guardfile
|
||||
# More info at https://github.com/guard/guard#readme
|
||||
|
||||
## Uncomment and set this to only include directories you want to watch
|
||||
# directories %w(app lib config test spec features) \
|
||||
# .select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")}
|
||||
|
||||
## Note: if you are using the `directories` clause above and you are not
|
||||
## watching the project directory ('.'), then you will want to move
|
||||
## the Guardfile to a watched dir and symlink it back, e.g.
|
||||
#
|
||||
# $ mkdir config
|
||||
# $ mv Guardfile config/
|
||||
# $ ln -s config/Guardfile .
|
||||
#
|
||||
# and, you'll have to watch "config/Guardfile" instead of "Guardfile"
|
||||
|
||||
guard :rubocop do
|
||||
watch(/.+\.rb$/)
|
||||
watch(/Rakefile/)
|
||||
watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
|
||||
end
|
||||
|
||||
guard :minitest do
|
||||
watch(%r{^test/test_helper\.rb$}) { 'test' }
|
||||
watch(%r{^test/(.*)\/?(.*)_test\.rb$})
|
||||
watch(%r{^app/(.*/)?([^/]+)\.rb$}) { |m| "test/#{m[1]}#{m[2]}_test.rb" }
|
||||
watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m| "test/lib/#{m[1]}#{m[2]}_test.rb" }
|
||||
end
|
32
README.md
Normal file
32
README.md
Normal file
@ -0,0 +1,32 @@
|
||||
# SMS Pager
|
||||
|
||||
A simple api to send sms messages with [twillio](https://www.twilio.com/).
|
||||
|
||||
## Configure
|
||||
|
||||
### Secrets file:
|
||||
|
||||
`config/secrets.yml` is read at boot and shoves the values into `ENV`.
|
||||
|
||||
1. Copy `config/secrets.yml.sample` and rename to `config/secrets.yml`.
|
||||
2. Edit file and set/define as many secrets as you need. The sample file has the minimum expected keys.
|
||||
3. Make *ABSOLUTE* certain that this file is not checked into your repository.
|
||||
|
||||
## TODO
|
||||
|
||||
* list parents
|
||||
* list children
|
||||
* lookup child
|
||||
* lookup parent
|
||||
* lookup child by parent
|
||||
* lookup parent by child
|
||||
* add parent
|
||||
* add child
|
||||
* edit parent
|
||||
* edit child
|
||||
* page parent
|
||||
* sorcery or a lower oauth solution
|
||||
* application log
|
||||
* app version file - milestone 0.9.0
|
||||
* task runner - delayedjob or sidekiq or activerecord newness?
|
||||
* milestone 1.0.0
|
6
Rakefile
Normal file
6
Rakefile
Normal file
@ -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
|
0
app/assets/images/.keep
Normal file
0
app/assets/images/.keep
Normal file
16
app/assets/javascripts/application.js
Normal file
16
app/assets/javascripts/application.js
Normal file
@ -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 .
|
15
app/assets/stylesheets/application.css
Normal file
15
app/assets/stylesheets/application.css
Normal file
@ -0,0 +1,15 @@
|
||||
/*
|
||||
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
||||
* listed below.
|
||||
*
|
||||
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
||||
* or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
|
||||
*
|
||||
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
|
||||
* compiled file so the styles you add here take precedence over styles defined in any styles
|
||||
* defined in the other CSS/SCSS files in this directory. It is generally better to create a new
|
||||
* file per style scope.
|
||||
*
|
||||
*= require_tree .
|
||||
*= require_self
|
||||
*/
|
5
app/controllers/application_controller.rb
Normal file
5
app/controllers/application_controller.rb
Normal file
@ -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
|
2
app/controllers/children_controller.rb
Normal file
2
app/controllers/children_controller.rb
Normal file
@ -0,0 +1,2 @@
|
||||
class ChildrenController < ApplicationController
|
||||
end
|
10
app/controllers/docs_controller.rb
Normal file
10
app/controllers/docs_controller.rb
Normal file
@ -0,0 +1,10 @@
|
||||
class DocsController < ApplicationController
|
||||
def index
|
||||
doc = {
|
||||
name: "sms-pager-api",
|
||||
documentation: "https://bitbucket.org/markamoser/sms-pager-api"
|
||||
}.to_json
|
||||
|
||||
render json: doc
|
||||
end
|
||||
end
|
2
app/controllers/pages_controller.rb
Normal file
2
app/controllers/pages_controller.rb
Normal file
@ -0,0 +1,2 @@
|
||||
class PagesController < ApplicationController
|
||||
end
|
6
app/controllers/parents_controller.rb
Normal file
6
app/controllers/parents_controller.rb
Normal file
@ -0,0 +1,6 @@
|
||||
class ParentsController < ApplicationController
|
||||
def index
|
||||
@parents = Person.just_parents
|
||||
respond_with @parents
|
||||
end
|
||||
end
|
2
app/controllers/staff_controller.rb
Normal file
2
app/controllers/staff_controller.rb
Normal file
@ -0,0 +1,2 @@
|
||||
class StaffController < ApplicationController
|
||||
end
|
2
app/controllers/users_controller.rb
Normal file
2
app/controllers/users_controller.rb
Normal file
@ -0,0 +1,2 @@
|
||||
class UsersController < ApplicationController
|
||||
end
|
2
app/helpers/application_helper.rb
Normal file
2
app/helpers/application_helper.rb
Normal file
@ -0,0 +1,2 @@
|
||||
module ApplicationHelper
|
||||
end
|
0
app/mailers/.keep
Normal file
0
app/mailers/.keep
Normal file
0
app/models/.keep
Normal file
0
app/models/.keep
Normal file
10
app/views/layouts/application.html.haml
Normal file
10
app/views/layouts/application.html.haml
Normal file
@ -0,0 +1,10 @@
|
||||
!!!
|
||||
%html
|
||||
%head
|
||||
%meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/
|
||||
%title SmsPager
|
||||
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
|
||||
= javascript_include_tag 'application', 'data-turbolinks-track' => true
|
||||
= csrf_meta_tags
|
||||
%body
|
||||
= yield
|
21
app/workers/sms.rb
Normal file
21
app/workers/sms.rb
Normal file
@ -0,0 +1,21 @@
|
||||
class SmsSender
|
||||
attr_accessor :from
|
||||
attr_accessor :to
|
||||
attr_accessor :message
|
||||
|
||||
def initialize args_as_hash
|
||||
@from = args_as_hash["from"] ||= ENV["twilio_number"]
|
||||
@to = args_as_hash["to"]
|
||||
@message = args_as_hash["message"]
|
||||
end
|
||||
|
||||
def send!
|
||||
twilio.messages.create(from: @from, to: @to, body: @message)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def twilio
|
||||
Twilio::REST::Client.new ENV['twilio_sid'], ENV['twilio_token']
|
||||
end
|
||||
end
|
3
bin/bundle
Executable file
3
bin/bundle
Executable file
@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env ruby
|
||||
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
||||
load Gem.bin_path('bundler', 'bundle')
|
8
bin/rails
Executable file
8
bin/rails
Executable file
@ -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'
|
8
bin/rake
Executable file
8
bin/rake
Executable file
@ -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
|
29
bin/setup
Executable file
29
bin/setup
Executable file
@ -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
|
15
bin/spring
Executable file
15
bin/spring
Executable file
@ -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 }
|
||||
gem "spring", match[1]
|
||||
require "spring/binstub"
|
||||
end
|
||||
end
|
4
config.ru
Normal file
4
config.ru
Normal file
@ -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
|
26
config/application.rb
Normal file
26
config/application.rb
Normal file
@ -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 SmsPager
|
||||
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
|
6
config/application.yml.sample
Normal file
6
config/application.yml.sample
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
twilio_sid: "my-twillio-sid"
|
||||
twilio_token: "my-twillio-secret"
|
||||
mysql_host: "localhost"
|
||||
mysql_usr: "user"
|
||||
mysql_pwd: "secret"
|
3
config/boot.rb
Normal file
3
config/boot.rb
Normal file
@ -0,0 +1,3 @@
|
||||
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
||||
|
||||
require 'bundler/setup' # Set up gems listed in the Gemfile.
|
22
config/database.yml
Normal file
22
config/database.yml
Normal file
@ -0,0 +1,22 @@
|
||||
a--
|
||||
default: &default
|
||||
adapter: mysql2
|
||||
encoding: utf8
|
||||
reconnect: false
|
||||
pool: 5
|
||||
host: localhost
|
||||
# socket: /tmp/mysql.sock
|
||||
|
||||
development:
|
||||
<<: *default
|
||||
database: sms-pager-dev
|
||||
|
||||
test:
|
||||
<<: *default
|
||||
database: sms-pager-test
|
||||
|
||||
production:
|
||||
<<: *default
|
||||
database: sms-pager-api
|
||||
username: <%= ENV["mysql_usr"] %>
|
||||
password: <%= ENV["mysql_pwd"] %>
|
5
config/environment.rb
Normal file
5
config/environment.rb
Normal file
@ -0,0 +1,5 @@
|
||||
# Load the Rails application.
|
||||
require File.expand_path('../application', __FILE__)
|
||||
|
||||
# Initialize the Rails application.
|
||||
Rails.application.initialize!
|
41
config/environments/development.rb
Normal file
41
config/environments/development.rb
Normal file
@ -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
|
79
config/environments/production.rb
Normal file
79
config/environments/production.rb
Normal file
@ -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
|
42
config/environments/test.rb
Normal file
42
config/environments/test.rb
Normal file
@ -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
|
11
config/initializers/assets.rb
Normal file
11
config/initializers/assets.rb
Normal file
@ -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 )
|
7
config/initializers/backtrace_silencers.rb
Normal file
7
config/initializers/backtrace_silencers.rb
Normal file
@ -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!
|
3
config/initializers/cookies_serializer.rb
Normal file
3
config/initializers/cookies_serializer.rb
Normal file
@ -0,0 +1,3 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
Rails.application.config.action_dispatch.cookies_serializer = :json
|
4
config/initializers/filter_parameter_logging.rb
Normal file
4
config/initializers/filter_parameter_logging.rb
Normal file
@ -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]
|
16
config/initializers/inflections.rb
Normal file
16
config/initializers/inflections.rb
Normal file
@ -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
|
4
config/initializers/mime_types.rb
Normal file
4
config/initializers/mime_types.rb
Normal file
@ -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
|
3
config/initializers/session_store.rb
Normal file
3
config/initializers/session_store.rb
Normal file
@ -0,0 +1,3 @@
|
||||
# Be sure to restart your server when you modify this file.
|
||||
|
||||
Rails.application.config.session_store :cookie_store, key: '_sms-pager_session'
|
14
config/initializers/wrap_parameters.rb
Normal file
14
config/initializers/wrap_parameters.rb
Normal file
@ -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
|
23
config/locales/en.yml
Normal file
23
config/locales/en.yml
Normal file
@ -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"
|
13
config/routes.rb
Normal file
13
config/routes.rb
Normal file
@ -0,0 +1,13 @@
|
||||
Rails.application.routes.draw do
|
||||
get 'parents', to: 'parents#index', as: :list_parents
|
||||
|
||||
get 'children', to: 'children#index', as: :list_children
|
||||
|
||||
get 'staff', to: 'staff#index', as: :list_staff
|
||||
|
||||
get 'users', to: 'users#index', as: :list_users
|
||||
|
||||
get 'pages', to: 'pages#index', as: :list_pages
|
||||
|
||||
root to: 'docs#index'
|
||||
end
|
33
config/secrets.yml
Normal file
33
config/secrets.yml
Normal file
@ -0,0 +1,33 @@
|
||||
# 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.
|
||||
|
||||
defaults: &defaults
|
||||
twilio_sid: <%= ENV["twilio_sid"] %>
|
||||
twilio_token: <%= ENV["twilio_token"] %>
|
||||
twilio_number: <%= ENV["twilio_number"] %>
|
||||
mysql_host: <%= ENV["mysql_host"] %>
|
||||
mysql_usr: <%= ENV["mysql_usr"] %>
|
||||
mysql_pwd: <%= ENV["mysql_pwd"] %>
|
||||
|
||||
development:
|
||||
<<: *defaults
|
||||
secret_key_base: f97bd71064db7216f6c615c67cdb804479bc784caab9ec0695f66a9fe81f1a261036bbc46a7bb32aa85c525f5cc8204f440a58333714a2a1018a68a9b3d970ca
|
||||
|
||||
test:
|
||||
<<: *defaults
|
||||
secret_key_base: ed3627e7b50494de1ece0bf7b95f9a8eed245a2ef1da022f3bb43c29d85e2116e6fe7a930208cdd0333df24b94579c1b193421fe74fa033b85b08202cb2a50d6
|
||||
|
||||
# Do not keep production secrets in the repository,
|
||||
# instead read values from the environment.
|
||||
production:
|
||||
<<: *defaults
|
||||
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
|
25
db/migrate/20150904033833_init.rb
Normal file
25
db/migrate/20150904033833_init.rb
Normal file
@ -0,0 +1,25 @@
|
||||
class Init < ActiveRecord::Migration
|
||||
def up
|
||||
create_table :people do |t|
|
||||
t.string :first_name
|
||||
t.string :last_name
|
||||
t.string :phone
|
||||
t.string :email
|
||||
t.boolean :admin
|
||||
t.boolean :staff
|
||||
end
|
||||
|
||||
create_table :parenthoods do |t|
|
||||
t.integer :person_id
|
||||
t.integer :child_id
|
||||
end
|
||||
|
||||
create_table :children do |t|
|
||||
t.string :first_name
|
||||
t.string :last_name
|
||||
end
|
||||
|
||||
add_index :people, :phone
|
||||
add_index :parenthoods, [:person_id, :child_id], name: 'parentship'
|
||||
end
|
||||
end
|
7
db/seeds.rb
Normal file
7
db/seeds.rb
Normal file
@ -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)
|
0
lib/assets/.keep
Normal file
0
lib/assets/.keep
Normal file
11
lib/secrets.rb
Normal file
11
lib/secrets.rb
Normal file
@ -0,0 +1,11 @@
|
||||
require 'yaml'
|
||||
module Secrets
|
||||
def self.load
|
||||
return nil unless File.exist?("./config/application.yml")
|
||||
|
||||
secrets = YAML.load(File.read('./config/application.yml'))
|
||||
secrets.each do |k, v|
|
||||
ENV[k] = v
|
||||
end
|
||||
end
|
||||
end
|
0
lib/tasks/.keep
Normal file
0
lib/tasks/.keep
Normal file
67
public/404.html
Normal file
67
public/404.html
Normal file
@ -0,0 +1,67 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>The page you were looking for doesn't exist (404)</title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<style>
|
||||
body {
|
||||
background-color: #EFEFEF;
|
||||
color: #2E2F30;
|
||||
text-align: center;
|
||||
font-family: arial, sans-serif;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.dialog {
|
||||
width: 95%;
|
||||
max-width: 33em;
|
||||
margin: 4em auto 0;
|
||||
}
|
||||
|
||||
div.dialog > div {
|
||||
border: 1px solid #CCC;
|
||||
border-right-color: #999;
|
||||
border-left-color: #999;
|
||||
border-bottom-color: #BBB;
|
||||
border-top: #B00100 solid 4px;
|
||||
border-top-left-radius: 9px;
|
||||
border-top-right-radius: 9px;
|
||||
background-color: white;
|
||||
padding: 7px 12% 0;
|
||||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 100%;
|
||||
color: #730E15;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
div.dialog > p {
|
||||
margin: 0 0 1em;
|
||||
padding: 1em;
|
||||
background-color: #F7F7F7;
|
||||
border: 1px solid #CCC;
|
||||
border-right-color: #999;
|
||||
border-left-color: #999;
|
||||
border-bottom-color: #999;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-top-color: #DADADA;
|
||||
color: #666;
|
||||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- This file lives in public/404.html -->
|
||||
<div class="dialog">
|
||||
<div>
|
||||
<h1>The page you were looking for doesn't exist.</h1>
|
||||
<p>You may have mistyped the address or the page may have moved.</p>
|
||||
</div>
|
||||
<p>If you are the application owner check the logs for more information.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
67
public/422.html
Normal file
67
public/422.html
Normal file
@ -0,0 +1,67 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>The change you wanted was rejected (422)</title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<style>
|
||||
body {
|
||||
background-color: #EFEFEF;
|
||||
color: #2E2F30;
|
||||
text-align: center;
|
||||
font-family: arial, sans-serif;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.dialog {
|
||||
width: 95%;
|
||||
max-width: 33em;
|
||||
margin: 4em auto 0;
|
||||
}
|
||||
|
||||
div.dialog > div {
|
||||
border: 1px solid #CCC;
|
||||
border-right-color: #999;
|
||||
border-left-color: #999;
|
||||
border-bottom-color: #BBB;
|
||||
border-top: #B00100 solid 4px;
|
||||
border-top-left-radius: 9px;
|
||||
border-top-right-radius: 9px;
|
||||
background-color: white;
|
||||
padding: 7px 12% 0;
|
||||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 100%;
|
||||
color: #730E15;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
div.dialog > p {
|
||||
margin: 0 0 1em;
|
||||
padding: 1em;
|
||||
background-color: #F7F7F7;
|
||||
border: 1px solid #CCC;
|
||||
border-right-color: #999;
|
||||
border-left-color: #999;
|
||||
border-bottom-color: #999;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-top-color: #DADADA;
|
||||
color: #666;
|
||||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- This file lives in public/422.html -->
|
||||
<div class="dialog">
|
||||
<div>
|
||||
<h1>The change you wanted was rejected.</h1>
|
||||
<p>Maybe you tried to change something you didn't have access to.</p>
|
||||
</div>
|
||||
<p>If you are the application owner check the logs for more information.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
66
public/500.html
Normal file
66
public/500.html
Normal file
@ -0,0 +1,66 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>We're sorry, but something went wrong (500)</title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<style>
|
||||
body {
|
||||
background-color: #EFEFEF;
|
||||
color: #2E2F30;
|
||||
text-align: center;
|
||||
font-family: arial, sans-serif;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
div.dialog {
|
||||
width: 95%;
|
||||
max-width: 33em;
|
||||
margin: 4em auto 0;
|
||||
}
|
||||
|
||||
div.dialog > div {
|
||||
border: 1px solid #CCC;
|
||||
border-right-color: #999;
|
||||
border-left-color: #999;
|
||||
border-bottom-color: #BBB;
|
||||
border-top: #B00100 solid 4px;
|
||||
border-top-left-radius: 9px;
|
||||
border-top-right-radius: 9px;
|
||||
background-color: white;
|
||||
padding: 7px 12% 0;
|
||||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 100%;
|
||||
color: #730E15;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
div.dialog > p {
|
||||
margin: 0 0 1em;
|
||||
padding: 1em;
|
||||
background-color: #F7F7F7;
|
||||
border: 1px solid #CCC;
|
||||
border-right-color: #999;
|
||||
border-left-color: #999;
|
||||
border-bottom-color: #999;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-top-color: #DADADA;
|
||||
color: #666;
|
||||
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- This file lives in public/500.html -->
|
||||
<div class="dialog">
|
||||
<div>
|
||||
<h1>We're sorry, but something went wrong.</h1>
|
||||
</div>
|
||||
<p>If you are the application owner check the logs for more information.</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
0
public/favicon.ico
Normal file
0
public/favicon.ico
Normal file
5
public/robots.txt
Normal file
5
public/robots.txt
Normal file
@ -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: /
|
0
test/controllers/.keep
Normal file
0
test/controllers/.keep
Normal file
7
test/controllers/children_controller_test.rb
Normal file
7
test/controllers/children_controller_test.rb
Normal file
@ -0,0 +1,7 @@
|
||||
require 'test_helper'
|
||||
|
||||
class ChildrenControllerTest < ActionController::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
7
test/controllers/docs_controller_test.rb
Normal file
7
test/controllers/docs_controller_test.rb
Normal file
@ -0,0 +1,7 @@
|
||||
require 'test_helper'
|
||||
class DocsControllerTest < ActionController::TestCase
|
||||
def test_root
|
||||
xhr :get, :index
|
||||
assert response.ok?
|
||||
end
|
||||
end
|
7
test/controllers/pages_controller_test.rb
Normal file
7
test/controllers/pages_controller_test.rb
Normal file
@ -0,0 +1,7 @@
|
||||
require 'test_helper'
|
||||
|
||||
class PagesControllerTest < ActionController::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
8
test/controllers/parents_controller_test.rb
Normal file
8
test/controllers/parents_controller_test.rb
Normal file
@ -0,0 +1,8 @@
|
||||
require 'test_helper'
|
||||
|
||||
class ParentsControllerTest < ActionController::TestCase
|
||||
def test_parents
|
||||
xhr :get, :index
|
||||
assert response.ok?
|
||||
end
|
||||
end
|
7
test/controllers/staff_controller_test.rb
Normal file
7
test/controllers/staff_controller_test.rb
Normal file
@ -0,0 +1,7 @@
|
||||
require 'test_helper'
|
||||
|
||||
class StaffControllerTest < ActionController::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
7
test/controllers/users_controller_test.rb
Normal file
7
test/controllers/users_controller_test.rb
Normal file
@ -0,0 +1,7 @@
|
||||
require 'test_helper'
|
||||
|
||||
class UsersControllerTest < ActionController::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
0
test/fixtures/.keep
vendored
Normal file
0
test/fixtures/.keep
vendored
Normal file
10
test/fixtures/child.yml
vendored
Normal file
10
test/fixtures/child.yml
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
kyle:
|
||||
first_name: Kyle
|
||||
last_name: Kerfer
|
||||
sally:
|
||||
first_name: Sally
|
||||
last_name: Smith
|
||||
nemo:
|
||||
first_name: Nemo
|
||||
last_name: Smith
|
44
test/fixtures/person.yml
vendored
Normal file
44
test/fixtures/person.yml
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
---
|
||||
admin:
|
||||
first_name: admin
|
||||
last_name: user
|
||||
email: admin.user@mailinator.com
|
||||
phone: 5005550006
|
||||
admin: true
|
||||
basic:
|
||||
first_name: basic
|
||||
last_name: user
|
||||
email: basic.user@mailinator.com
|
||||
phone: 5005550001
|
||||
staff: true
|
||||
wanda:
|
||||
first_name: Wanda
|
||||
last_name: Worker
|
||||
email: wonda.worker@mailinator.com
|
||||
phone: 5005550006
|
||||
staff: true
|
||||
steve:
|
||||
first_name: Steve
|
||||
last_name: Worker
|
||||
email: steve.worker@mailinator.com
|
||||
phone: 5005550006
|
||||
staff: true
|
||||
kimmy:
|
||||
first_name: Kimmy
|
||||
last_name: Kerfer
|
||||
email: kimmy.kerfer@mailinator.com
|
||||
phone: 5005550006
|
||||
staff: true
|
||||
children: kyle
|
||||
marlin:
|
||||
first_name: Marlin
|
||||
last_name: Smith
|
||||
email: marlin.smith@mailinator.com
|
||||
phone: 5005550006
|
||||
children: sally, nemo
|
||||
sarah:
|
||||
first_name: Sarah
|
||||
last_name: Smith
|
||||
email: marlin.smith@mailinator.com
|
||||
phone: 5005550006
|
||||
children: sally, nemo
|
0
test/helpers/.keep
Normal file
0
test/helpers/.keep
Normal file
0
test/integration/.keep
Normal file
0
test/integration/.keep
Normal file
7
test/lib/secrets_test.rb
Normal file
7
test/lib/secrets_test.rb
Normal file
@ -0,0 +1,7 @@
|
||||
require File.expand_path '../../test_helper.rb', __FILE__
|
||||
|
||||
class SecretsTest < ActiveSupport::TestCase
|
||||
def test_sanity
|
||||
assert Secrets
|
||||
end
|
||||
end
|
0
test/mailers/.keep
Normal file
0
test/mailers/.keep
Normal file
0
test/models/.keep
Normal file
0
test/models/.keep
Normal file
13
test/models/person_test.rb
Normal file
13
test/models/person_test.rb
Normal file
@ -0,0 +1,13 @@
|
||||
require 'test_helper'
|
||||
|
||||
class PersonTest < ActiveSupport::TestCase
|
||||
def test_sanity
|
||||
assert Person
|
||||
end
|
||||
|
||||
def test_parents
|
||||
parents = Person.just_parents
|
||||
|
||||
assert parents.count > 1, "Did not find more than one parent"
|
||||
end
|
||||
end
|
35
test/smoke_test.rb
Normal file
35
test/smoke_test.rb
Normal file
@ -0,0 +1,35 @@
|
||||
require 'test_helper'
|
||||
|
||||
class SmokeTest < ActiveSupport::TestCase
|
||||
# include Rack::Test::Methods
|
||||
|
||||
# Here we are pretty much just checking that the database is
|
||||
# rolling back transactions after each test run.
|
||||
|
||||
def test_db_reload
|
||||
assert_empty Person.with_name('clean insert'), 'DB has not refreshed'
|
||||
|
||||
Person.create(
|
||||
first_name: 'clean',
|
||||
last_name: 'insert',
|
||||
phone: '8885551212',
|
||||
email: 'insert@mailinator.com'
|
||||
)
|
||||
|
||||
refute_empty Person.with_name('clean insert'), 'person insert failed!'
|
||||
end
|
||||
|
||||
def test_db_reload_2x
|
||||
test_db_reload
|
||||
end
|
||||
|
||||
def test_db_reload_3x
|
||||
test_db_reload
|
||||
end
|
||||
|
||||
def test_fixture_load
|
||||
num_people = Person.all.count
|
||||
|
||||
assert num_people > 2, "Should have loaded more than 2 people"
|
||||
end
|
||||
end
|
15
test/test_helper.rb
Normal file
15
test/test_helper.rb
Normal file
@ -0,0 +1,15 @@
|
||||
ENV['RAILS_ENV'] ||= 'test'
|
||||
require File.expand_path('../../config/environment', __FILE__)
|
||||
require 'rails/test_help'
|
||||
require "minitest/autorun"
|
||||
require 'minitest/reporters'
|
||||
Minitest::Reporters.use! [Minitest::Reporters::DefaultReporter.new(color: true)]
|
||||
|
||||
class ActiveSupport::TestCase
|
||||
ActiveRecord::Migration.check_pending!
|
||||
|
||||
# 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
|
0
vendor/assets/javascripts/.keep
vendored
Normal file
0
vendor/assets/javascripts/.keep
vendored
Normal file
0
vendor/assets/stylesheets/.keep
vendored
Normal file
0
vendor/assets/stylesheets/.keep
vendored
Normal file
Loading…
Reference in New Issue
Block a user