diff --git a/.gitignore b/.gitignore index 2187948..ea097cc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,27 +1,30 @@ -# 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' +.bundle -# Ignore bundler config. -/.bundle +.env.production -/build +apps/basechurch/build +apps/basechurch/coverage -/coverage - -/db/*.sqlite3 -/db/*.sqlite3-journal -/log/*.log -/tmp -/bin -/doc +apps/basechurch/db/*.sqlite3 +apps/basechurch/db/*.sqlite3-journal +apps/basechurch/log/*.log +apps/basechurch/tmp +apps/basechurch/bin +apps/basechurch/doc +apps/basechurch/public production-secrets.yml development-secrets.yml staging-secrets.yml -public dump.rdb -config/secrets.yml + +.DS_Store + +apps/landing/target +apps/landing/out + +**/.idea/workspace.xml +**/.idea/tasks.xml +**/.idea/*.iws + diff --git a/.ruby-version b/.ruby-version deleted file mode 100644 index 2bf1c1c..0000000 --- a/.ruby-version +++ /dev/null @@ -1 +0,0 @@ -2.3.1 diff --git a/.travis.yml b/.travis.yml index 8c7f649..2eb4c14 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,13 +1,17 @@ -language: ruby -rvm: -- 2.3.1 +sudo: required + +services: + - docker + script: - - RAILS_ENV=test bundle exec rake db:migrate --trace - - bundle exec rake + - ./bin/test-basechurch.sh + - ./bin/test-landing.sh + addons: code_climate: repo_token: secure: eKtahgCOYZC/FzHgPSRYWLG/c7dRelaUZgCHV5TyoIn+akelAPRs+B334J8ahAfArLIVL2iUNpGQVdbDAMyQNd0BcQROkzj2qicGX5BTpaGRjDRHOVUDpevykZJl6oqy4WjvMevSp2xxY1ejZmbOwW/NzRQfSd79ekxGr+J0V/0= + notifications: slack: secure: G6VLedqT8kXanccqUeRRej2aXkR0SMFSwCBX/hbsNy+qoC7WSTFjMr98ijTn3eTykz1nBk+d2d2sfSm5dreIsl7jsF+eqHYKmZzGb13/YG6lvf2+GNyFduhoKJC3NWj1dqPO2QS+8g9YYBpGJIpnlp+PkSck5ewqd+mDXr53QbA= diff --git a/app/controllers/landing_controller.rb b/app/controllers/landing_controller.rb deleted file mode 100644 index f873143..0000000 --- a/app/controllers/landing_controller.rb +++ /dev/null @@ -1,39 +0,0 @@ -class LandingController < ApplicationController - SHORT_UUID_V4_REGEXP = /\A[0-9a-f]{7}\z/i - - def index - index_key = if Rails.env.development? - "basechurch:index:__development__" - elsif fetch_revision - "basechurch:index:#{fetch_revision}" - else - Sidekiq.redis do |r| - "basechurch:index:#{r.get("basechurch:index:current")}" - end - end - index = Sidekiq.redis { |r| r.get(index_key) } - render text: process_index(index), layout: false - end - - private - - def fetch_revision - rev = params[:revision] - if rev =~ SHORT_UUID_V4_REGEXP - rev - end - end - - def process_index(index) - return "INDEX_NOT_FOUND" unless index - - index.sub!(/CSRF_TOKEN/, form_authenticity_token) - - if Rails.env.development? - index.sub!("/ember-cli-live-reload", - "http://localhost:4200/ember-cli-live-reload") - end - - index - end -end diff --git a/app/settings/redis_settings.rb b/app/settings/redis_settings.rb deleted file mode 100644 index 3ff43c9..0000000 --- a/app/settings/redis_settings.rb +++ /dev/null @@ -1,4 +0,0 @@ -class RedisSettings < Settingslogic - source "#{Rails.root}/config/redis.yml" - namespace Rails.env -end diff --git a/app/settings/secrets.rb b/app/settings/secrets.rb deleted file mode 100644 index 64bbba6..0000000 --- a/app/settings/secrets.rb +++ /dev/null @@ -1,9 +0,0 @@ -class Secrets < Settingslogic - if ["staging", "production"].include?(Rails.env) - source "#{Rails.root}/config/secrets.yml" - else - source "#{Rails.root}/config/#{Rails.env}-secrets.yml" - end - - namespace Rails.env -end diff --git a/apps/basechurch/.env.dev b/apps/basechurch/.env.dev new file mode 100644 index 0000000..98ee5f8 --- /dev/null +++ b/apps/basechurch/.env.dev @@ -0,0 +1,9 @@ +AWS_ACCESS_KEY_ID=test_aws_access_key_id +AWS_SECRET_ACCESS_KEY=test_aws_secret_access_key +DATABASE_HOST=db +DATABASE_USER=postgres +DATABASE_PASSWORD= +FB_APP_ID=a2222222222222 +FB_APP_SECRET=a222222222333 +PRERENDER_IO_TOKEN=test_prerender_token +SECRET_KEY_BASE=asdlkjfh23lkj4h23lkjehfsd7f8xc98zxvhxkvjhenrweefdxi99 diff --git a/apps/basechurch/.env.test b/apps/basechurch/.env.test new file mode 100644 index 0000000..98ee5f8 --- /dev/null +++ b/apps/basechurch/.env.test @@ -0,0 +1,9 @@ +AWS_ACCESS_KEY_ID=test_aws_access_key_id +AWS_SECRET_ACCESS_KEY=test_aws_secret_access_key +DATABASE_HOST=db +DATABASE_USER=postgres +DATABASE_PASSWORD= +FB_APP_ID=a2222222222222 +FB_APP_SECRET=a222222222333 +PRERENDER_IO_TOKEN=test_prerender_token +SECRET_KEY_BASE=asdlkjfh23lkj4h23lkjehfsd7f8xc98zxvhxkvjhenrweefdxi99 diff --git a/.hound.yml b/apps/basechurch/.hound.yml similarity index 100% rename from .hound.yml rename to apps/basechurch/.hound.yml diff --git a/.rspec b/apps/basechurch/.rspec similarity index 100% rename from .rspec rename to apps/basechurch/.rspec diff --git a/CONTRIBUTING.md b/apps/basechurch/CONTRIBUTING.md similarity index 100% rename from CONTRIBUTING.md rename to apps/basechurch/CONTRIBUTING.md diff --git a/Capfile b/apps/basechurch/Capfile similarity index 100% rename from Capfile rename to apps/basechurch/Capfile diff --git a/apps/basechurch/Dockerfile b/apps/basechurch/Dockerfile new file mode 100644 index 0000000..0cd15e7 --- /dev/null +++ b/apps/basechurch/Dockerfile @@ -0,0 +1,8 @@ +FROM ruby:2.3.1 +RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs +RUN mkdir /app +WORKDIR /app +ADD Gemfile /app/Gemfile +ADD Gemfile.lock /app/Gemfile.lock +RUN bundle install +ADD . /app diff --git a/Gemfile b/apps/basechurch/Gemfile similarity index 99% rename from Gemfile rename to apps/basechurch/Gemfile index ce774e9..abfc520 100644 --- a/Gemfile +++ b/apps/basechurch/Gemfile @@ -70,5 +70,4 @@ gem "rack-rewrite", "~> 1.5.0" gem "rails", "~> 4.2.4" gem "rails-api", "~> 0.3.1" gem "settingslogic" -gem "sidekiq" gem "validate_url", "~> 1.0.0" diff --git a/Gemfile.lock b/apps/basechurch/Gemfile.lock similarity index 97% rename from Gemfile.lock rename to apps/basechurch/Gemfile.lock index e1ade31..5bdeb12 100644 --- a/Gemfile.lock +++ b/apps/basechurch/Gemfile.lock @@ -103,7 +103,6 @@ GEM simplecov (>= 0.7.1, < 1.0.0) coderay (1.1.1) concurrent-ruby (1.0.2) - connection_pool (2.2.0) coveralls (0.8.15) json (>= 1.8, < 3) simplecov (~> 0.12.0) @@ -290,8 +289,6 @@ GEM websocket (~> 1.0) rack (1.6.4) rack-cors (0.4.0) - rack-protection (1.5.3) - rack rack-rewrite (1.5.1) rack-test (0.6.3) rack (>= 1.0) @@ -327,7 +324,6 @@ GEM rb-fsevent (0.9.7) rb-inotify (0.9.7) ffi (>= 0.5.0) - redis (3.3.1) responders (2.3.0) railties (>= 4.2.0, < 5.1) rspec (3.5.0) @@ -377,20 +373,11 @@ GEM settingslogic (2.0.9) sfl (2.2) shellany (0.0.1) - sidekiq (4.1.4) - concurrent-ruby (~> 1.0) - connection_pool (~> 2.2, >= 2.2.0) - redis (~> 3.2, >= 3.2.1) - sinatra (>= 1.4.7) simplecov (0.12.0) docile (~> 1.1.0) json (>= 1.8, < 3) simplecov-html (~> 0.10.0) simplecov-html (0.10.0) - sinatra (1.4.7) - rack (~> 1.5) - rack-protection (~> 1.4) - tilt (>= 1.3, < 3) slop (3.6.0) specinfra (2.61.2) net-scp @@ -415,7 +402,6 @@ GEM tins (~> 1.0) thor (0.19.1) thread_safe (0.3.5) - tilt (2.0.5) timecop (0.8.1) tins (1.12.0) travis (1.5.8) @@ -485,7 +471,6 @@ DEPENDENCIES rspec_api_documentation rubocop settingslogic - sidekiq spring sqlite3 timecop diff --git a/Guardfile b/apps/basechurch/Guardfile similarity index 100% rename from Guardfile rename to apps/basechurch/Guardfile diff --git a/MIT-LICENSE b/apps/basechurch/MIT-LICENSE similarity index 100% rename from MIT-LICENSE rename to apps/basechurch/MIT-LICENSE diff --git a/README.md b/apps/basechurch/README.md similarity index 100% rename from README.md rename to apps/basechurch/README.md diff --git a/Rakefile b/apps/basechurch/Rakefile similarity index 100% rename from Rakefile rename to apps/basechurch/Rakefile diff --git a/app/assets/images/basechurch/.keep b/apps/basechurch/app/assets/images/basechurch/.keep similarity index 100% rename from app/assets/images/basechurch/.keep rename to apps/basechurch/app/assets/images/basechurch/.keep diff --git a/app/assets/javascripts/basechurch/application.js b/apps/basechurch/app/assets/javascripts/basechurch/application.js similarity index 100% rename from app/assets/javascripts/basechurch/application.js rename to apps/basechurch/app/assets/javascripts/basechurch/application.js diff --git a/app/assets/stylesheets/basechurch/application.css b/apps/basechurch/app/assets/stylesheets/basechurch/application.css similarity index 100% rename from app/assets/stylesheets/basechurch/application.css rename to apps/basechurch/app/assets/stylesheets/basechurch/application.css diff --git a/app/controllers/api/v1/announcements_controller.rb b/apps/basechurch/app/controllers/api/v1/announcements_controller.rb similarity index 100% rename from app/controllers/api/v1/announcements_controller.rb rename to apps/basechurch/app/controllers/api/v1/announcements_controller.rb diff --git a/app/controllers/api/v1/bulletins_controller.rb b/apps/basechurch/app/controllers/api/v1/bulletins_controller.rb similarity index 100% rename from app/controllers/api/v1/bulletins_controller.rb rename to apps/basechurch/app/controllers/api/v1/bulletins_controller.rb diff --git a/app/controllers/api/v1/groups_controller.rb b/apps/basechurch/app/controllers/api/v1/groups_controller.rb similarity index 100% rename from app/controllers/api/v1/groups_controller.rb rename to apps/basechurch/app/controllers/api/v1/groups_controller.rb diff --git a/app/controllers/api/v1/posts_controller.rb b/apps/basechurch/app/controllers/api/v1/posts_controller.rb similarity index 100% rename from app/controllers/api/v1/posts_controller.rb rename to apps/basechurch/app/controllers/api/v1/posts_controller.rb diff --git a/app/controllers/api/v1/sermons_controller.rb b/apps/basechurch/app/controllers/api/v1/sermons_controller.rb similarity index 100% rename from app/controllers/api/v1/sermons_controller.rb rename to apps/basechurch/app/controllers/api/v1/sermons_controller.rb diff --git a/app/controllers/api/v1/users_controller.rb b/apps/basechurch/app/controllers/api/v1/users_controller.rb similarity index 100% rename from app/controllers/api/v1/users_controller.rb rename to apps/basechurch/app/controllers/api/v1/users_controller.rb diff --git a/app/controllers/application_controller.rb b/apps/basechurch/app/controllers/application_controller.rb similarity index 100% rename from app/controllers/application_controller.rb rename to apps/basechurch/app/controllers/application_controller.rb diff --git a/app/controllers/application_resource_controller.rb b/apps/basechurch/app/controllers/application_resource_controller.rb similarity index 100% rename from app/controllers/application_resource_controller.rb rename to apps/basechurch/app/controllers/application_resource_controller.rb diff --git a/app/controllers/passwords_controller.rb b/apps/basechurch/app/controllers/passwords_controller.rb similarity index 100% rename from app/controllers/passwords_controller.rb rename to apps/basechurch/app/controllers/passwords_controller.rb diff --git a/app/controllers/registrations_controller.rb b/apps/basechurch/app/controllers/registrations_controller.rb similarity index 100% rename from app/controllers/registrations_controller.rb rename to apps/basechurch/app/controllers/registrations_controller.rb diff --git a/app/controllers/sessions_controller.rb b/apps/basechurch/app/controllers/sessions_controller.rb similarity index 100% rename from app/controllers/sessions_controller.rb rename to apps/basechurch/app/controllers/sessions_controller.rb diff --git a/app/helpers/application_helper.rb b/apps/basechurch/app/helpers/application_helper.rb similarity index 100% rename from app/helpers/application_helper.rb rename to apps/basechurch/app/helpers/application_helper.rb diff --git a/app/lib/basechurch_resource_serializer.rb b/apps/basechurch/app/lib/basechurch_resource_serializer.rb similarity index 100% rename from app/lib/basechurch_resource_serializer.rb rename to apps/basechurch/app/lib/basechurch_resource_serializer.rb diff --git a/app/lib/random_filename.rb b/apps/basechurch/app/lib/random_filename.rb similarity index 100% rename from app/lib/random_filename.rb rename to apps/basechurch/app/lib/random_filename.rb diff --git a/app/lib/s3_signer.rb b/apps/basechurch/app/lib/s3_signer.rb similarity index 100% rename from app/lib/s3_signer.rb rename to apps/basechurch/app/lib/s3_signer.rb diff --git a/app/middleware/selective_stack.rb b/apps/basechurch/app/middleware/selective_stack.rb similarity index 100% rename from app/middleware/selective_stack.rb rename to apps/basechurch/app/middleware/selective_stack.rb diff --git a/app/models/announcement.rb b/apps/basechurch/app/models/announcement.rb similarity index 100% rename from app/models/announcement.rb rename to apps/basechurch/app/models/announcement.rb diff --git a/app/models/attachment.rb b/apps/basechurch/app/models/attachment.rb similarity index 100% rename from app/models/attachment.rb rename to apps/basechurch/app/models/attachment.rb diff --git a/app/models/bulletin.rb b/apps/basechurch/app/models/bulletin.rb similarity index 100% rename from app/models/bulletin.rb rename to apps/basechurch/app/models/bulletin.rb diff --git a/app/models/concerns/.keep b/apps/basechurch/app/models/concerns/.keep similarity index 100% rename from app/models/concerns/.keep rename to apps/basechurch/app/models/concerns/.keep diff --git a/app/models/group.rb b/apps/basechurch/app/models/group.rb similarity index 100% rename from app/models/group.rb rename to apps/basechurch/app/models/group.rb diff --git a/app/models/post.rb b/apps/basechurch/app/models/post.rb similarity index 100% rename from app/models/post.rb rename to apps/basechurch/app/models/post.rb diff --git a/app/models/sermon.rb b/apps/basechurch/app/models/sermon.rb similarity index 100% rename from app/models/sermon.rb rename to apps/basechurch/app/models/sermon.rb diff --git a/app/models/user.rb b/apps/basechurch/app/models/user.rb similarity index 100% rename from app/models/user.rb rename to apps/basechurch/app/models/user.rb diff --git a/app/resources/api/v1/announcement_resource.rb b/apps/basechurch/app/resources/api/v1/announcement_resource.rb similarity index 100% rename from app/resources/api/v1/announcement_resource.rb rename to apps/basechurch/app/resources/api/v1/announcement_resource.rb diff --git a/app/resources/api/v1/bulletin_resource.rb b/apps/basechurch/app/resources/api/v1/bulletin_resource.rb similarity index 100% rename from app/resources/api/v1/bulletin_resource.rb rename to apps/basechurch/app/resources/api/v1/bulletin_resource.rb diff --git a/app/resources/api/v1/group_resource.rb b/apps/basechurch/app/resources/api/v1/group_resource.rb similarity index 100% rename from app/resources/api/v1/group_resource.rb rename to apps/basechurch/app/resources/api/v1/group_resource.rb diff --git a/app/resources/api/v1/post_resource.rb b/apps/basechurch/app/resources/api/v1/post_resource.rb similarity index 97% rename from app/resources/api/v1/post_resource.rb rename to apps/basechurch/app/resources/api/v1/post_resource.rb index 97f911b..53e5bf8 100644 --- a/app/resources/api/v1/post_resource.rb +++ b/apps/basechurch/app/resources/api/v1/post_resource.rb @@ -29,7 +29,7 @@ def group_slug end def tags - @model.tag_list + @model.tag_list.sort end def tags=(tags) diff --git a/app/resources/api/v1/sermon_resource.rb b/apps/basechurch/app/resources/api/v1/sermon_resource.rb similarity index 91% rename from app/resources/api/v1/sermon_resource.rb rename to apps/basechurch/app/resources/api/v1/sermon_resource.rb index cdf2623..4f2212f 100644 --- a/app/resources/api/v1/sermon_resource.rb +++ b/apps/basechurch/app/resources/api/v1/sermon_resource.rb @@ -6,7 +6,7 @@ class Api::V1::SermonResource < JSONAPI::Resource has_one :group def tags - @model.tag_list + @model.tag_list.sort end def tags=(tags) diff --git a/app/resources/api/v1/user_resource.rb b/apps/basechurch/app/resources/api/v1/user_resource.rb similarity index 100% rename from app/resources/api/v1/user_resource.rb rename to apps/basechurch/app/resources/api/v1/user_resource.rb diff --git a/app/settings/aws_settings.rb b/apps/basechurch/app/settings/aws_settings.rb similarity index 100% rename from app/settings/aws_settings.rb rename to apps/basechurch/app/settings/aws_settings.rb diff --git a/apps/basechurch/app/settings/secrets.rb b/apps/basechurch/app/settings/secrets.rb new file mode 100644 index 0000000..2368e56 --- /dev/null +++ b/apps/basechurch/app/settings/secrets.rb @@ -0,0 +1,4 @@ +class Secrets < Settingslogic + source "#{Rails.root}/config/secrets.yml" + namespace Rails.env +end diff --git a/app/validators/iso8601_validator.rb b/apps/basechurch/app/validators/iso8601_validator.rb similarity index 100% rename from app/validators/iso8601_validator.rb rename to apps/basechurch/app/validators/iso8601_validator.rb diff --git a/app/value_formatters/iso8601_value_formatter.rb b/apps/basechurch/app/value_formatters/iso8601_value_formatter.rb similarity index 100% rename from app/value_formatters/iso8601_value_formatter.rb rename to apps/basechurch/app/value_formatters/iso8601_value_formatter.rb diff --git a/app/views/layouts/basechurch/application.html.erb b/apps/basechurch/app/views/layouts/basechurch/application.html.erb similarity index 100% rename from app/views/layouts/basechurch/application.html.erb rename to apps/basechurch/app/views/layouts/basechurch/application.html.erb diff --git a/config.ru b/apps/basechurch/config.ru similarity index 100% rename from config.ru rename to apps/basechurch/config.ru diff --git a/config/application.rb b/apps/basechurch/config/application.rb similarity index 100% rename from config/application.rb rename to apps/basechurch/config/application.rb diff --git a/config/aws.yml b/apps/basechurch/config/aws.yml similarity index 100% rename from config/aws.yml rename to apps/basechurch/config/aws.yml diff --git a/config/boot.rb b/apps/basechurch/config/boot.rb similarity index 100% rename from config/boot.rb rename to apps/basechurch/config/boot.rb diff --git a/config/chef/.chef/knife.rb b/apps/basechurch/config/chef/.chef/knife.rb similarity index 100% rename from config/chef/.chef/knife.rb rename to apps/basechurch/config/chef/.chef/knife.rb diff --git a/config/chef/.gitignore b/apps/basechurch/config/chef/.gitignore similarity index 100% rename from config/chef/.gitignore rename to apps/basechurch/config/chef/.gitignore diff --git a/config/chef/cookbooks/.gitkeep b/apps/basechurch/config/chef/data_bags/.gitkeep similarity index 100% rename from config/chef/cookbooks/.gitkeep rename to apps/basechurch/config/chef/data_bags/.gitkeep diff --git a/config/chef/data_bags/.gitkeep b/apps/basechurch/config/chef/environments/.gitkeep similarity index 100% rename from config/chef/data_bags/.gitkeep rename to apps/basechurch/config/chef/environments/.gitkeep diff --git a/config/chef/environments/.gitkeep b/apps/basechurch/config/chef/nodes/.gitkeep similarity index 100% rename from config/chef/environments/.gitkeep rename to apps/basechurch/config/chef/nodes/.gitkeep diff --git a/config/chef/nodes/104.131.162.148.json b/apps/basechurch/config/chef/nodes/104.131.162.148.json similarity index 100% rename from config/chef/nodes/104.131.162.148.json rename to apps/basechurch/config/chef/nodes/104.131.162.148.json diff --git a/config/chef/nodes/104.131.66.72.json b/apps/basechurch/config/chef/nodes/104.131.66.72.json similarity index 100% rename from config/chef/nodes/104.131.66.72.json rename to apps/basechurch/config/chef/nodes/104.131.66.72.json diff --git a/config/chef/nodes/.gitkeep b/apps/basechurch/config/chef/roles/.gitkeep similarity index 100% rename from config/chef/nodes/.gitkeep rename to apps/basechurch/config/chef/roles/.gitkeep diff --git a/config/chef/roles/.gitkeep b/apps/basechurch/config/chef/site-cookbooks/.gitkeep similarity index 100% rename from config/chef/roles/.gitkeep rename to apps/basechurch/config/chef/site-cookbooks/.gitkeep diff --git a/config/chef/site-cookbooks/mcac/CHANGELOG.md b/apps/basechurch/config/chef/site-cookbooks/mcac/CHANGELOG.md similarity index 100% rename from config/chef/site-cookbooks/mcac/CHANGELOG.md rename to apps/basechurch/config/chef/site-cookbooks/mcac/CHANGELOG.md diff --git a/config/chef/site-cookbooks/mcac/README.md b/apps/basechurch/config/chef/site-cookbooks/mcac/README.md similarity index 100% rename from config/chef/site-cookbooks/mcac/README.md rename to apps/basechurch/config/chef/site-cookbooks/mcac/README.md diff --git a/config/chef/site-cookbooks/mcac/attributes/default.rb b/apps/basechurch/config/chef/site-cookbooks/mcac/attributes/default.rb similarity index 100% rename from config/chef/site-cookbooks/mcac/attributes/default.rb rename to apps/basechurch/config/chef/site-cookbooks/mcac/attributes/default.rb diff --git a/config/chef/site-cookbooks/mcac/files/default/bash_profile b/apps/basechurch/config/chef/site-cookbooks/mcac/files/default/bash_profile similarity index 100% rename from config/chef/site-cookbooks/mcac/files/default/bash_profile rename to apps/basechurch/config/chef/site-cookbooks/mcac/files/default/bash_profile diff --git a/config/chef/site-cookbooks/mcac/metadata.rb b/apps/basechurch/config/chef/site-cookbooks/mcac/metadata.rb similarity index 100% rename from config/chef/site-cookbooks/mcac/metadata.rb rename to apps/basechurch/config/chef/site-cookbooks/mcac/metadata.rb diff --git a/config/chef/site-cookbooks/mcac/recipes/app.rb b/apps/basechurch/config/chef/site-cookbooks/mcac/recipes/app.rb similarity index 100% rename from config/chef/site-cookbooks/mcac/recipes/app.rb rename to apps/basechurch/config/chef/site-cookbooks/mcac/recipes/app.rb diff --git a/config/chef/site-cookbooks/mcac/recipes/default.rb b/apps/basechurch/config/chef/site-cookbooks/mcac/recipes/default.rb similarity index 100% rename from config/chef/site-cookbooks/mcac/recipes/default.rb rename to apps/basechurch/config/chef/site-cookbooks/mcac/recipes/default.rb diff --git a/config/chef/site-cookbooks/mcac/recipes/nginx.rb b/apps/basechurch/config/chef/site-cookbooks/mcac/recipes/nginx.rb similarity index 100% rename from config/chef/site-cookbooks/mcac/recipes/nginx.rb rename to apps/basechurch/config/chef/site-cookbooks/mcac/recipes/nginx.rb diff --git a/config/chef/site-cookbooks/mcac/recipes/postgres.rb b/apps/basechurch/config/chef/site-cookbooks/mcac/recipes/postgres.rb similarity index 100% rename from config/chef/site-cookbooks/mcac/recipes/postgres.rb rename to apps/basechurch/config/chef/site-cookbooks/mcac/recipes/postgres.rb diff --git a/config/chef/site-cookbooks/mcac/recipes/rbenv.rb b/apps/basechurch/config/chef/site-cookbooks/mcac/recipes/rbenv.rb similarity index 100% rename from config/chef/site-cookbooks/mcac/recipes/rbenv.rb rename to apps/basechurch/config/chef/site-cookbooks/mcac/recipes/rbenv.rb diff --git a/config/chef/site-cookbooks/mcac/recipes/redis.rb b/apps/basechurch/config/chef/site-cookbooks/mcac/recipes/redis.rb similarity index 100% rename from config/chef/site-cookbooks/mcac/recipes/redis.rb rename to apps/basechurch/config/chef/site-cookbooks/mcac/recipes/redis.rb diff --git a/config/chef/site-cookbooks/mcac/recipes/ssh.rb b/apps/basechurch/config/chef/site-cookbooks/mcac/recipes/ssh.rb similarity index 100% rename from config/chef/site-cookbooks/mcac/recipes/ssh.rb rename to apps/basechurch/config/chef/site-cookbooks/mcac/recipes/ssh.rb diff --git a/config/chef/site-cookbooks/mcac/recipes/users.rb b/apps/basechurch/config/chef/site-cookbooks/mcac/recipes/users.rb similarity index 100% rename from config/chef/site-cookbooks/mcac/recipes/users.rb rename to apps/basechurch/config/chef/site-cookbooks/mcac/recipes/users.rb diff --git a/config/chef/site-cookbooks/mcac/templates/database.yml.erb b/apps/basechurch/config/chef/site-cookbooks/mcac/templates/database.yml.erb similarity index 100% rename from config/chef/site-cookbooks/mcac/templates/database.yml.erb rename to apps/basechurch/config/chef/site-cookbooks/mcac/templates/database.yml.erb diff --git a/config/chef/site-cookbooks/mcac/templates/nginx.conf.erb b/apps/basechurch/config/chef/site-cookbooks/mcac/templates/nginx.conf.erb similarity index 100% rename from config/chef/site-cookbooks/mcac/templates/nginx.conf.erb rename to apps/basechurch/config/chef/site-cookbooks/mcac/templates/nginx.conf.erb diff --git a/config/chef/site-cookbooks/mcac/templates/unicorn.rb.erb b/apps/basechurch/config/chef/site-cookbooks/mcac/templates/unicorn.rb.erb similarity index 100% rename from config/chef/site-cookbooks/mcac/templates/unicorn.rb.erb rename to apps/basechurch/config/chef/site-cookbooks/mcac/templates/unicorn.rb.erb diff --git a/config/chef/site-cookbooks/mcac/templates/unicorn.sh.erb b/apps/basechurch/config/chef/site-cookbooks/mcac/templates/unicorn.sh.erb similarity index 100% rename from config/chef/site-cookbooks/mcac/templates/unicorn.sh.erb rename to apps/basechurch/config/chef/site-cookbooks/mcac/templates/unicorn.sh.erb diff --git a/apps/basechurch/config/database.yml b/apps/basechurch/config/database.yml new file mode 100644 index 0000000..4b78bb9 --- /dev/null +++ b/apps/basechurch/config/database.yml @@ -0,0 +1,18 @@ +default: &default + adapter: postgresql + database: mcac + encoding: utf8 + host: <%= ENV["DATABASE_HOST"] %> + username: <%= ENV["DATABASE_USER"] %> + password: <%= ENV["DATABASE_PASSWORD"] %> + pool: 5 + +development: + <<: *default + +test: + <<: *default + database: mcac_test + +production: + <<: *default diff --git a/config/deploy.rb b/apps/basechurch/config/deploy.rb similarity index 100% rename from config/deploy.rb rename to apps/basechurch/config/deploy.rb diff --git a/config/deploy/production.rb b/apps/basechurch/config/deploy/production.rb similarity index 100% rename from config/deploy/production.rb rename to apps/basechurch/config/deploy/production.rb diff --git a/config/deploy/staging.rb b/apps/basechurch/config/deploy/staging.rb similarity index 100% rename from config/deploy/staging.rb rename to apps/basechurch/config/deploy/staging.rb diff --git a/config/environment.rb b/apps/basechurch/config/environment.rb similarity index 100% rename from config/environment.rb rename to apps/basechurch/config/environment.rb diff --git a/config/environments/development.rb b/apps/basechurch/config/environments/development.rb similarity index 100% rename from config/environments/development.rb rename to apps/basechurch/config/environments/development.rb diff --git a/config/environments/production.rb b/apps/basechurch/config/environments/production.rb similarity index 100% rename from config/environments/production.rb rename to apps/basechurch/config/environments/production.rb diff --git a/config/environments/staging.rb b/apps/basechurch/config/environments/staging.rb similarity index 100% rename from config/environments/staging.rb rename to apps/basechurch/config/environments/staging.rb diff --git a/config/environments/test.rb b/apps/basechurch/config/environments/test.rb similarity index 100% rename from config/environments/test.rb rename to apps/basechurch/config/environments/test.rb diff --git a/config/initializers/devise.rb b/apps/basechurch/config/initializers/devise.rb similarity index 100% rename from config/initializers/devise.rb rename to apps/basechurch/config/initializers/devise.rb diff --git a/config/initializers/devise_token_auth.rb b/apps/basechurch/config/initializers/devise_token_auth.rb similarity index 100% rename from config/initializers/devise_token_auth.rb rename to apps/basechurch/config/initializers/devise_token_auth.rb diff --git a/config/initializers/extensions.rb b/apps/basechurch/config/initializers/extensions.rb similarity index 100% rename from config/initializers/extensions.rb rename to apps/basechurch/config/initializers/extensions.rb diff --git a/config/initializers/friendly_id.rb b/apps/basechurch/config/initializers/friendly_id.rb similarity index 100% rename from config/initializers/friendly_id.rb rename to apps/basechurch/config/initializers/friendly_id.rb diff --git a/config/initializers/jsonapi_resources.rb b/apps/basechurch/config/initializers/jsonapi_resources.rb similarity index 100% rename from config/initializers/jsonapi_resources.rb rename to apps/basechurch/config/initializers/jsonapi_resources.rb diff --git a/config/initializers/omniauth.rb b/apps/basechurch/config/initializers/omniauth.rb similarity index 100% rename from config/initializers/omniauth.rb rename to apps/basechurch/config/initializers/omniauth.rb diff --git a/config/initializers/rspec_api_documentation.rb b/apps/basechurch/config/initializers/rspec_api_documentation.rb similarity index 100% rename from config/initializers/rspec_api_documentation.rb rename to apps/basechurch/config/initializers/rspec_api_documentation.rb diff --git a/config/initializers/wrap_parameters.rb b/apps/basechurch/config/initializers/wrap_parameters.rb similarity index 100% rename from config/initializers/wrap_parameters.rb rename to apps/basechurch/config/initializers/wrap_parameters.rb diff --git a/config/routes.rb b/apps/basechurch/config/routes.rb similarity index 100% rename from config/routes.rb rename to apps/basechurch/config/routes.rb diff --git a/apps/basechurch/config/secrets.yml b/apps/basechurch/config/secrets.yml new file mode 100644 index 0000000..75dbf23 --- /dev/null +++ b/apps/basechurch/config/secrets.yml @@ -0,0 +1,12 @@ +default: &default + aws_access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %> + aws_secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %> + fb_app_id: <%= ENV["FB_APP_ID"] %> + fb_app_secret: <%= ENV["FB_APP_SECRET"] %> + prerender_io_token: <%= ENV["PRERENDER_IO_TOKEN"] %> + secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> + +test: *default +development: *default +staging: *default +production: *default diff --git a/config/secrets.yml.example b/apps/basechurch/config/secrets.yml.example similarity index 100% rename from config/secrets.yml.example rename to apps/basechurch/config/secrets.yml.example diff --git a/db/migrate/20141104023408_create_users.rb b/apps/basechurch/db/migrate/20141104023408_create_users.rb similarity index 100% rename from db/migrate/20141104023408_create_users.rb rename to apps/basechurch/db/migrate/20141104023408_create_users.rb diff --git a/db/migrate/20141104050710_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb b/apps/basechurch/db/migrate/20141104050710_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb similarity index 100% rename from db/migrate/20141104050710_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb rename to apps/basechurch/db/migrate/20141104050710_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb diff --git a/db/migrate/20141104050711_add_missing_unique_indices.acts_as_taggable_on_engine.rb b/apps/basechurch/db/migrate/20141104050711_add_missing_unique_indices.acts_as_taggable_on_engine.rb similarity index 100% rename from db/migrate/20141104050711_add_missing_unique_indices.acts_as_taggable_on_engine.rb rename to apps/basechurch/db/migrate/20141104050711_add_missing_unique_indices.acts_as_taggable_on_engine.rb diff --git a/db/migrate/20141104050712_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb b/apps/basechurch/db/migrate/20141104050712_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb similarity index 100% rename from db/migrate/20141104050712_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb rename to apps/basechurch/db/migrate/20141104050712_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb diff --git a/db/migrate/20141104050713_add_missing_taggable_index.acts_as_taggable_on_engine.rb b/apps/basechurch/db/migrate/20141104050713_add_missing_taggable_index.acts_as_taggable_on_engine.rb similarity index 100% rename from db/migrate/20141104050713_add_missing_taggable_index.acts_as_taggable_on_engine.rb rename to apps/basechurch/db/migrate/20141104050713_add_missing_taggable_index.acts_as_taggable_on_engine.rb diff --git a/db/migrate/20141104050852_create_groups.rb b/apps/basechurch/db/migrate/20141104050852_create_groups.rb similarity index 100% rename from db/migrate/20141104050852_create_groups.rb rename to apps/basechurch/db/migrate/20141104050852_create_groups.rb diff --git a/db/migrate/20141107023441_create_bulletins.rb b/apps/basechurch/db/migrate/20141107023441_create_bulletins.rb similarity index 100% rename from db/migrate/20141107023441_create_bulletins.rb rename to apps/basechurch/db/migrate/20141107023441_create_bulletins.rb diff --git a/db/migrate/20141107024218_add_group_id_to_bulletins.rb b/apps/basechurch/db/migrate/20141107024218_add_group_id_to_bulletins.rb similarity index 100% rename from db/migrate/20141107024218_add_group_id_to_bulletins.rb rename to apps/basechurch/db/migrate/20141107024218_add_group_id_to_bulletins.rb diff --git a/db/migrate/20141115220442_rename_date_column.rb b/apps/basechurch/db/migrate/20141115220442_rename_date_column.rb similarity index 100% rename from db/migrate/20141115220442_rename_date_column.rb rename to apps/basechurch/db/migrate/20141115220442_rename_date_column.rb diff --git a/db/migrate/20141122193506_create_api_keys.rb b/apps/basechurch/db/migrate/20141122193506_create_api_keys.rb similarity index 100% rename from db/migrate/20141122193506_create_api_keys.rb rename to apps/basechurch/db/migrate/20141122193506_create_api_keys.rb diff --git a/db/migrate/20141127050515_create_posts.rb b/apps/basechurch/db/migrate/20141127050515_create_posts.rb similarity index 100% rename from db/migrate/20141127050515_create_posts.rb rename to apps/basechurch/db/migrate/20141127050515_create_posts.rb diff --git a/db/migrate/20141130222902_create_friendly_id_slugs.rb b/apps/basechurch/db/migrate/20141130222902_create_friendly_id_slugs.rb similarity index 100% rename from db/migrate/20141130222902_create_friendly_id_slugs.rb rename to apps/basechurch/db/migrate/20141130222902_create_friendly_id_slugs.rb diff --git a/db/migrate/20141216021608_create_announcements.rb b/apps/basechurch/db/migrate/20141216021608_create_announcements.rb similarity index 100% rename from db/migrate/20141216021608_create_announcements.rb rename to apps/basechurch/db/migrate/20141216021608_create_announcements.rb diff --git a/db/migrate/20141227065555_add_slug_to_basechurch_groups.rb b/apps/basechurch/db/migrate/20141227065555_add_slug_to_basechurch_groups.rb similarity index 100% rename from db/migrate/20141227065555_add_slug_to_basechurch_groups.rb rename to apps/basechurch/db/migrate/20141227065555_add_slug_to_basechurch_groups.rb diff --git a/db/migrate/20150506020938_add_url_to_announcements.rb b/apps/basechurch/db/migrate/20150506020938_add_url_to_announcements.rb similarity index 100% rename from db/migrate/20150506020938_add_url_to_announcements.rb rename to apps/basechurch/db/migrate/20150506020938_add_url_to_announcements.rb diff --git a/db/migrate/20150517033542_add_banner_url_to_bulletins.rb b/apps/basechurch/db/migrate/20150517033542_add_banner_url_to_bulletins.rb similarity index 100% rename from db/migrate/20150517033542_add_banner_url_to_bulletins.rb rename to apps/basechurch/db/migrate/20150517033542_add_banner_url_to_bulletins.rb diff --git a/db/migrate/20150525002323_add_sermon_notes_to_bulletins.rb b/apps/basechurch/db/migrate/20150525002323_add_sermon_notes_to_bulletins.rb similarity index 100% rename from db/migrate/20150525002323_add_sermon_notes_to_bulletins.rb rename to apps/basechurch/db/migrate/20150525002323_add_sermon_notes_to_bulletins.rb diff --git a/db/migrate/20150527041615_add_audio_url_to_bulletins.rb b/apps/basechurch/db/migrate/20150527041615_add_audio_url_to_bulletins.rb similarity index 100% rename from db/migrate/20150527041615_add_audio_url_to_bulletins.rb rename to apps/basechurch/db/migrate/20150527041615_add_audio_url_to_bulletins.rb diff --git a/db/migrate/20150530024856_add_banner_url_to_post.rb b/apps/basechurch/db/migrate/20150530024856_add_banner_url_to_post.rb similarity index 100% rename from db/migrate/20150530024856_add_banner_url_to_post.rb rename to apps/basechurch/db/migrate/20150530024856_add_banner_url_to_post.rb diff --git a/db/migrate/20150714004207_add_about_and_banner_url_to_groups.rb b/apps/basechurch/db/migrate/20150714004207_add_about_and_banner_url_to_groups.rb similarity index 100% rename from db/migrate/20150714004207_add_about_and_banner_url_to_groups.rb rename to apps/basechurch/db/migrate/20150714004207_add_about_and_banner_url_to_groups.rb diff --git a/db/migrate/20150807030656_create_attachments.rb b/apps/basechurch/db/migrate/20150807030656_create_attachments.rb similarity index 100% rename from db/migrate/20150807030656_create_attachments.rb rename to apps/basechurch/db/migrate/20150807030656_create_attachments.rb diff --git a/db/migrate/20150808012750_remove_banner_url_from_post.rb b/apps/basechurch/db/migrate/20150808012750_remove_banner_url_from_post.rb similarity index 100% rename from db/migrate/20150808012750_remove_banner_url_from_post.rb rename to apps/basechurch/db/migrate/20150808012750_remove_banner_url_from_post.rb diff --git a/db/migrate/20150808025204_remove_banner_url_and_audio_url_from_bulletins.rb b/apps/basechurch/db/migrate/20150808025204_remove_banner_url_and_audio_url_from_bulletins.rb similarity index 100% rename from db/migrate/20150808025204_remove_banner_url_and_audio_url_from_bulletins.rb rename to apps/basechurch/db/migrate/20150808025204_remove_banner_url_and_audio_url_from_bulletins.rb diff --git a/db/migrate/20150825021220_remove_attachments.rb b/apps/basechurch/db/migrate/20150825021220_remove_attachments.rb similarity index 100% rename from db/migrate/20150825021220_remove_attachments.rb rename to apps/basechurch/db/migrate/20150825021220_remove_attachments.rb diff --git a/db/migrate/20150826021028_create_basechurch_attachments.rb b/apps/basechurch/db/migrate/20150826021028_create_basechurch_attachments.rb similarity index 100% rename from db/migrate/20150826021028_create_basechurch_attachments.rb rename to apps/basechurch/db/migrate/20150826021028_create_basechurch_attachments.rb diff --git a/db/migrate/20150913035436_rename_basechurch_tables.rb b/apps/basechurch/db/migrate/20150913035436_rename_basechurch_tables.rb similarity index 100% rename from db/migrate/20150913035436_rename_basechurch_tables.rb rename to apps/basechurch/db/migrate/20150913035436_rename_basechurch_tables.rb diff --git a/db/migrate/20160309214255_add_kind_to_posts.rb b/apps/basechurch/db/migrate/20160309214255_add_kind_to_posts.rb similarity index 100% rename from db/migrate/20160309214255_add_kind_to_posts.rb rename to apps/basechurch/db/migrate/20160309214255_add_kind_to_posts.rb diff --git a/db/migrate/20160414233629_add_details_to_groups.rb b/apps/basechurch/db/migrate/20160414233629_add_details_to_groups.rb similarity index 100% rename from db/migrate/20160414233629_add_details_to_groups.rb rename to apps/basechurch/db/migrate/20160414233629_add_details_to_groups.rb diff --git a/db/migrate/20160621012226_create_sermons.rb b/apps/basechurch/db/migrate/20160621012226_create_sermons.rb similarity index 100% rename from db/migrate/20160621012226_create_sermons.rb rename to apps/basechurch/db/migrate/20160621012226_create_sermons.rb diff --git a/db/migrate/20160624024551_add_sermon_id_to_bulletins.rb b/apps/basechurch/db/migrate/20160624024551_add_sermon_id_to_bulletins.rb similarity index 100% rename from db/migrate/20160624024551_add_sermon_id_to_bulletins.rb rename to apps/basechurch/db/migrate/20160624024551_add_sermon_id_to_bulletins.rb diff --git a/db/migrate/20161011033416_drop_apikeys_table.rb b/apps/basechurch/db/migrate/20161011033416_drop_apikeys_table.rb similarity index 100% rename from db/migrate/20161011033416_drop_apikeys_table.rb rename to apps/basechurch/db/migrate/20161011033416_drop_apikeys_table.rb diff --git a/db/schema.rb b/apps/basechurch/db/schema.rb similarity index 85% rename from db/schema.rb rename to apps/basechurch/db/schema.rb index 558328e..9209cbc 100644 --- a/db/schema.rb +++ b/apps/basechurch/db/schema.rb @@ -13,6 +13,9 @@ ActiveRecord::Schema.define(version: 20161011033416) do + # These are extensions that must be enabled in order to support this database + enable_extension "plpgsql" + create_table "announcements", force: :cascade do |t| t.integer "post_id" t.integer "bulletin_id" @@ -23,8 +26,8 @@ t.string "url" end - add_index "announcements", ["bulletin_id"], name: "index_announcements_on_bulletin_id" - add_index "announcements", ["post_id"], name: "index_announcements_on_post_id" + add_index "announcements", ["bulletin_id"], name: "index_announcements_on_bulletin_id", using: :btree + add_index "announcements", ["post_id"], name: "index_announcements_on_post_id", using: :btree create_table "attachments", force: :cascade do |t| t.string "key" @@ -35,7 +38,7 @@ t.datetime "updated_at" end - add_index "attachments", ["attachable_type", "attachable_id"], name: "attachments_polymorphic_keys_index" + add_index "attachments", ["attachable_type", "attachable_id"], name: "attachments_polymorphic_keys_index", using: :btree create_table "bulletins", force: :cascade do |t| t.datetime "published_at" @@ -49,7 +52,7 @@ t.integer "sermon_id" end - add_index "bulletins", ["sermon_id"], name: "index_bulletins_on_sermon_id" + add_index "bulletins", ["sermon_id"], name: "index_bulletins_on_sermon_id", using: :btree create_table "friendly_id_slugs", force: :cascade do |t| t.string "slug", null: false @@ -59,10 +62,10 @@ t.datetime "created_at" end - add_index "friendly_id_slugs", ["slug", "sluggable_type", "scope"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type_and_scope", unique: true - add_index "friendly_id_slugs", ["slug", "sluggable_type"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type" - add_index "friendly_id_slugs", ["sluggable_id"], name: "index_friendly_id_slugs_on_sluggable_id" - add_index "friendly_id_slugs", ["sluggable_type"], name: "index_friendly_id_slugs_on_sluggable_type" + add_index "friendly_id_slugs", ["slug", "sluggable_type", "scope"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type_and_scope", unique: true, using: :btree + add_index "friendly_id_slugs", ["slug", "sluggable_type"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type", using: :btree + add_index "friendly_id_slugs", ["sluggable_id"], name: "index_friendly_id_slugs_on_sluggable_id", using: :btree + add_index "friendly_id_slugs", ["sluggable_type"], name: "index_friendly_id_slugs_on_sluggable_type", using: :btree create_table "groups", force: :cascade do |t| t.string "name" @@ -76,7 +79,7 @@ t.string "meet_details" end - add_index "groups", ["slug"], name: "index_groups_on_slug", unique: true + add_index "groups", ["slug"], name: "index_groups_on_slug", unique: true, using: :btree create_table "posts", force: :cascade do |t| t.integer "group_id" @@ -91,9 +94,9 @@ t.integer "kind", default: 0 end - add_index "posts", ["author_id"], name: "index_posts_on_author_id" - add_index "posts", ["editor_id"], name: "index_posts_on_editor_id" - add_index "posts", ["group_id"], name: "index_posts_on_group_id" + add_index "posts", ["author_id"], name: "index_posts_on_author_id", using: :btree + add_index "posts", ["editor_id"], name: "index_posts_on_editor_id", using: :btree + add_index "posts", ["group_id"], name: "index_posts_on_group_id", using: :btree create_table "sermons", force: :cascade do |t| t.integer "group_id" @@ -106,7 +109,7 @@ t.datetime "updated_at", null: false end - add_index "sermons", ["group_id"], name: "index_sermons_on_group_id" + add_index "sermons", ["group_id"], name: "index_sermons_on_group_id", using: :btree create_table "taggings", force: :cascade do |t| t.integer "tag_id" @@ -118,15 +121,15 @@ t.datetime "created_at" end - add_index "taggings", ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"], name: "taggings_idx", unique: true - add_index "taggings", ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context" + add_index "taggings", ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"], name: "taggings_idx", unique: true, using: :btree + add_index "taggings", ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context", using: :btree create_table "tags", force: :cascade do |t| t.string "name" t.integer "taggings_count", default: 0 end - add_index "tags", ["name"], name: "index_tags_on_name", unique: true + add_index "tags", ["name"], name: "index_tags_on_name", unique: true, using: :btree create_table "users", force: :cascade do |t| t.string "provider", null: false @@ -153,8 +156,10 @@ t.datetime "updated_at" end - add_index "users", ["email"], name: "index_users_on_email" - add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true - add_index "users", ["uid", "provider"], name: "index_users_on_uid_and_provider", unique: true + add_index "users", ["email"], name: "index_users_on_email", using: :btree + add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree + add_index "users", ["uid", "provider"], name: "index_users_on_uid_and_provider", unique: true, using: :btree + add_foreign_key "bulletins", "sermons" + add_foreign_key "sermons", "groups" end diff --git a/db/seeds.rb b/apps/basechurch/db/seeds.rb similarity index 100% rename from db/seeds.rb rename to apps/basechurch/db/seeds.rb diff --git a/apps/basechurch/docker-compose.override.yml b/apps/basechurch/docker-compose.override.yml new file mode 100644 index 0000000..e60ce9b --- /dev/null +++ b/apps/basechurch/docker-compose.override.yml @@ -0,0 +1,13 @@ +version: '3' +services: + db: + image: postgres:latest + api: + build: . + env_file: + - ./.env.${BASECHURCH_ENV} + volumes: + - .:/app + depends_on: + - db + diff --git a/apps/basechurch/docker-compose.yml b/apps/basechurch/docker-compose.yml new file mode 100644 index 0000000..3c9b512 --- /dev/null +++ b/apps/basechurch/docker-compose.yml @@ -0,0 +1,9 @@ +version: '3' +services: + api: + image: fisherhall/api:latest + env_file: + - ./.env.${BASECHURCH_ENV} + command: bundle exec rails s -p 3000 -b '0.0.0.0' + ports: + - "3000:3000" diff --git a/lib/basechurch.rb b/apps/basechurch/lib/basechurch.rb similarity index 100% rename from lib/basechurch.rb rename to apps/basechurch/lib/basechurch.rb diff --git a/lib/basechurch/version.rb b/apps/basechurch/lib/basechurch/version.rb similarity index 100% rename from lib/basechurch/version.rb rename to apps/basechurch/lib/basechurch/version.rb diff --git a/lib/capistrano/substitute_strings.rb b/apps/basechurch/lib/capistrano/substitute_strings.rb similarity index 100% rename from lib/capistrano/substitute_strings.rb rename to apps/basechurch/lib/capistrano/substitute_strings.rb diff --git a/lib/capistrano/tasks/check_revision.cap b/apps/basechurch/lib/capistrano/tasks/check_revision.cap similarity index 100% rename from lib/capistrano/tasks/check_revision.cap rename to apps/basechurch/lib/capistrano/tasks/check_revision.cap diff --git a/lib/capistrano/tasks/logs.cap b/apps/basechurch/lib/capistrano/tasks/logs.cap similarity index 100% rename from lib/capistrano/tasks/logs.cap rename to apps/basechurch/lib/capistrano/tasks/logs.cap diff --git a/lib/capistrano/tasks/monit.cap b/apps/basechurch/lib/capistrano/tasks/monit.cap similarity index 100% rename from lib/capistrano/tasks/monit.cap rename to apps/basechurch/lib/capistrano/tasks/monit.cap diff --git a/lib/capistrano/tasks/nginx.cap b/apps/basechurch/lib/capistrano/tasks/nginx.cap similarity index 100% rename from lib/capistrano/tasks/nginx.cap rename to apps/basechurch/lib/capistrano/tasks/nginx.cap diff --git a/lib/capistrano/tasks/restart.cap b/apps/basechurch/lib/capistrano/tasks/restart.cap similarity index 100% rename from lib/capistrano/tasks/restart.cap rename to apps/basechurch/lib/capistrano/tasks/restart.cap diff --git a/lib/capistrano/tasks/run_tests.cap b/apps/basechurch/lib/capistrano/tasks/run_tests.cap similarity index 100% rename from lib/capistrano/tasks/run_tests.cap rename to apps/basechurch/lib/capistrano/tasks/run_tests.cap diff --git a/lib/capistrano/tasks/setup_config.cap b/apps/basechurch/lib/capistrano/tasks/setup_config.cap similarity index 100% rename from lib/capistrano/tasks/setup_config.cap rename to apps/basechurch/lib/capistrano/tasks/setup_config.cap diff --git a/lib/capistrano/template.rb b/apps/basechurch/lib/capistrano/template.rb similarity index 100% rename from lib/capistrano/template.rb rename to apps/basechurch/lib/capistrano/template.rb diff --git a/lib/has_attachment.rb b/apps/basechurch/lib/has_attachment.rb similarity index 100% rename from lib/has_attachment.rb rename to apps/basechurch/lib/has_attachment.rb diff --git a/lib/tasks/attachments.rake b/apps/basechurch/lib/tasks/attachments.rake similarity index 100% rename from lib/tasks/attachments.rake rename to apps/basechurch/lib/tasks/attachments.rake diff --git a/lib/tasks/basechurch_tasks.rake b/apps/basechurch/lib/tasks/basechurch_tasks.rake similarity index 100% rename from lib/tasks/basechurch_tasks.rake rename to apps/basechurch/lib/tasks/basechurch_tasks.rake diff --git a/setup_vps.sh b/apps/basechurch/setup_vps.sh similarity index 100% rename from setup_vps.sh rename to apps/basechurch/setup_vps.sh diff --git a/spec/acceptance/announcements_spec.rb b/apps/basechurch/spec/acceptance/announcements_spec.rb similarity index 100% rename from spec/acceptance/announcements_spec.rb rename to apps/basechurch/spec/acceptance/announcements_spec.rb diff --git a/spec/acceptance/bulletins_spec.rb b/apps/basechurch/spec/acceptance/bulletins_spec.rb similarity index 98% rename from spec/acceptance/bulletins_spec.rb rename to apps/basechurch/spec/acceptance/bulletins_spec.rb index 7d41506..edd5cbc 100644 --- a/spec/acceptance/bulletins_spec.rb +++ b/apps/basechurch/spec/acceptance/bulletins_spec.rb @@ -14,7 +14,7 @@ def expect_bulletin(payload, model) end get "api/v1/sunday" do - let!(:english_service) { create(:group, :completed, slug: "english-service") } + let!(:english_service) { create(:group, :completed, id: 1, slug: "english-service") } let!(:old_bulletin) do create(:bulletin, :completed, group: english_service, published_at: 10.days.ago) diff --git a/spec/acceptance/groups_spec.rb b/apps/basechurch/spec/acceptance/groups_spec.rb similarity index 100% rename from spec/acceptance/groups_spec.rb rename to apps/basechurch/spec/acceptance/groups_spec.rb diff --git a/spec/acceptance/posts_spec.rb b/apps/basechurch/spec/acceptance/posts_spec.rb similarity index 97% rename from spec/acceptance/posts_spec.rb rename to apps/basechurch/spec/acceptance/posts_spec.rb index ae25ed0..70685a8 100644 --- a/spec/acceptance/posts_spec.rb +++ b/apps/basechurch/spec/acceptance/posts_spec.rb @@ -12,7 +12,7 @@ def expect_post(payload, model) expect(attributes["content"]).to eq model.content expect(attributes["kind"]).to eq model.kind expect(attributes["published-at"]).to eq model.published_at.localtime("+00:00").iso8601 - expect(attributes["tags"]).to eq model.tag_list + expect(attributes["tags"]).to eq model.tag_list.sort expect(attributes["title"]).to eq model.title end @@ -100,7 +100,7 @@ def expect_post(payload, model) to eq data_attributes_published_at.to_time.localtime("+00:00").iso8601 expect(subject.title).to eq data_attributes_title expect(subject.content).to eq data_attributes_content - expect(subject.tag_list).to eq data_attributes_tags + expect(subject.tag_list.sort).to eq data_attributes_tags expect(subject.kind).to eq data_attributes_kind expect(subject.group).to eq group @@ -179,7 +179,7 @@ def expect_post(payload, model) expect(subject.title).to eq data_attributes_title expect(subject.content).to eq data_attributes_content - expect(subject.tag_list).to eq data_attributes_tags + expect(subject.tag_list.sort).to eq data_attributes_tags expect(subject.kind).to eq data_attributes_kind expect(subject.group).to eq group diff --git a/spec/acceptance/sermons_spec.rb b/apps/basechurch/spec/acceptance/sermons_spec.rb similarity index 97% rename from spec/acceptance/sermons_spec.rb rename to apps/basechurch/spec/acceptance/sermons_spec.rb index 4725a07..4834e42 100644 --- a/spec/acceptance/sermons_spec.rb +++ b/apps/basechurch/spec/acceptance/sermons_spec.rb @@ -15,7 +15,7 @@ def expect_sermon(payload, model) expect(attributes["published-at"]).to eq model.published_at.localtime("+00:00").iso8601 expect(attributes["series"]).to eq model.series expect(attributes["speaker"]).to eq model.speaker - expect(attributes["tags"]).to eq model.tag_list + expect(attributes["tags"]).to eq model.tag_list.sort end get "api/v1/sermons/:id" do @@ -103,7 +103,7 @@ def expect_sermon(payload, model) expect(subject.notes).to eq data_attributes_notes expect(subject.series).to eq data_attributes_series expect(subject.speaker).to eq data_attributes_speaker - expect(subject.tag_list).to eq data_attributes_tags + expect(subject.tag_list.sort).to eq data_attributes_tags expect_sermon(response["data"], subject) end @@ -195,7 +195,7 @@ def expect_sermon(payload, model) expect(subject.notes).to eq data_attributes_notes expect(subject.series).to eq data_attributes_series expect(subject.speaker).to eq data_attributes_speaker - expect(subject.tag_list).to eq data_attributes_tags + expect(subject.tag_list.sort).to eq data_attributes_tags expect_sermon(response["data"], subject) end diff --git a/spec/acceptance/users_spec.rb b/apps/basechurch/spec/acceptance/users_spec.rb similarity index 100% rename from spec/acceptance/users_spec.rb rename to apps/basechurch/spec/acceptance/users_spec.rb diff --git a/spec/controllers/concerns/.keep b/apps/basechurch/spec/controllers/concerns/.keep similarity index 100% rename from spec/controllers/concerns/.keep rename to apps/basechurch/spec/controllers/concerns/.keep diff --git a/spec/controllers/registrations_controller_spec.rb b/apps/basechurch/spec/controllers/registrations_controller_spec.rb similarity index 100% rename from spec/controllers/registrations_controller_spec.rb rename to apps/basechurch/spec/controllers/registrations_controller_spec.rb diff --git a/spec/controllers/sessions_controller_spec.rb b/apps/basechurch/spec/controllers/sessions_controller_spec.rb similarity index 100% rename from spec/controllers/sessions_controller_spec.rb rename to apps/basechurch/spec/controllers/sessions_controller_spec.rb diff --git a/spec/lib/random_filename_spec.rb b/apps/basechurch/spec/lib/random_filename_spec.rb similarity index 100% rename from spec/lib/random_filename_spec.rb rename to apps/basechurch/spec/lib/random_filename_spec.rb diff --git a/spec/lib/s3_signer_spec.rb b/apps/basechurch/spec/lib/s3_signer_spec.rb similarity index 100% rename from spec/lib/s3_signer_spec.rb rename to apps/basechurch/spec/lib/s3_signer_spec.rb diff --git a/spec/models/announcement_spec.rb b/apps/basechurch/spec/models/announcement_spec.rb similarity index 100% rename from spec/models/announcement_spec.rb rename to apps/basechurch/spec/models/announcement_spec.rb diff --git a/spec/models/bulletin_spec.rb b/apps/basechurch/spec/models/bulletin_spec.rb similarity index 100% rename from spec/models/bulletin_spec.rb rename to apps/basechurch/spec/models/bulletin_spec.rb diff --git a/spec/models/group_spec.rb b/apps/basechurch/spec/models/group_spec.rb similarity index 100% rename from spec/models/group_spec.rb rename to apps/basechurch/spec/models/group_spec.rb diff --git a/spec/models/post_spec.rb b/apps/basechurch/spec/models/post_spec.rb similarity index 100% rename from spec/models/post_spec.rb rename to apps/basechurch/spec/models/post_spec.rb diff --git a/spec/models/sermon_spec.rb b/apps/basechurch/spec/models/sermon_spec.rb similarity index 100% rename from spec/models/sermon_spec.rb rename to apps/basechurch/spec/models/sermon_spec.rb diff --git a/spec/models/user_spec.rb b/apps/basechurch/spec/models/user_spec.rb similarity index 100% rename from spec/models/user_spec.rb rename to apps/basechurch/spec/models/user_spec.rb diff --git a/spec/rails_helper.rb b/apps/basechurch/spec/rails_helper.rb similarity index 100% rename from spec/rails_helper.rb rename to apps/basechurch/spec/rails_helper.rb diff --git a/spec/resources/api/v1/announcement_resource_spec.rb b/apps/basechurch/spec/resources/api/v1/announcement_resource_spec.rb similarity index 100% rename from spec/resources/api/v1/announcement_resource_spec.rb rename to apps/basechurch/spec/resources/api/v1/announcement_resource_spec.rb diff --git a/spec/resources/api/v1/bulletin_resource_spec.rb b/apps/basechurch/spec/resources/api/v1/bulletin_resource_spec.rb similarity index 100% rename from spec/resources/api/v1/bulletin_resource_spec.rb rename to apps/basechurch/spec/resources/api/v1/bulletin_resource_spec.rb diff --git a/spec/resources/api/v1/group_resource_spec.rb b/apps/basechurch/spec/resources/api/v1/group_resource_spec.rb similarity index 100% rename from spec/resources/api/v1/group_resource_spec.rb rename to apps/basechurch/spec/resources/api/v1/group_resource_spec.rb diff --git a/spec/resources/api/v1/post_resource_spec.rb b/apps/basechurch/spec/resources/api/v1/post_resource_spec.rb similarity index 100% rename from spec/resources/api/v1/post_resource_spec.rb rename to apps/basechurch/spec/resources/api/v1/post_resource_spec.rb diff --git a/spec/resources/api/v1/sermon_resource_spec.rb b/apps/basechurch/spec/resources/api/v1/sermon_resource_spec.rb similarity index 100% rename from spec/resources/api/v1/sermon_resource_spec.rb rename to apps/basechurch/spec/resources/api/v1/sermon_resource_spec.rb diff --git a/spec/resources/api/v1/user_resource_spec.rb b/apps/basechurch/spec/resources/api/v1/user_resource_spec.rb similarity index 100% rename from spec/resources/api/v1/user_resource_spec.rb rename to apps/basechurch/spec/resources/api/v1/user_resource_spec.rb diff --git a/spec/routing/announcements_routing_spec.rb b/apps/basechurch/spec/routing/announcements_routing_spec.rb similarity index 100% rename from spec/routing/announcements_routing_spec.rb rename to apps/basechurch/spec/routing/announcements_routing_spec.rb diff --git a/spec/routing/bulletins_routing_spec.rb b/apps/basechurch/spec/routing/bulletins_routing_spec.rb similarity index 100% rename from spec/routing/bulletins_routing_spec.rb rename to apps/basechurch/spec/routing/bulletins_routing_spec.rb diff --git a/spec/routing/groups_routing_spec.rb b/apps/basechurch/spec/routing/groups_routing_spec.rb similarity index 100% rename from spec/routing/groups_routing_spec.rb rename to apps/basechurch/spec/routing/groups_routing_spec.rb diff --git a/spec/routing/posts_routing_spec.rb b/apps/basechurch/spec/routing/posts_routing_spec.rb similarity index 100% rename from spec/routing/posts_routing_spec.rb rename to apps/basechurch/spec/routing/posts_routing_spec.rb diff --git a/spec/spec_helper.rb b/apps/basechurch/spec/spec_helper.rb similarity index 100% rename from spec/spec_helper.rb rename to apps/basechurch/spec/spec_helper.rb diff --git a/spec/support/devise.rb b/apps/basechurch/spec/support/devise.rb similarity index 100% rename from spec/support/devise.rb rename to apps/basechurch/spec/support/devise.rb diff --git a/spec/support/factories/announcements.rb b/apps/basechurch/spec/support/factories/announcements.rb similarity index 100% rename from spec/support/factories/announcements.rb rename to apps/basechurch/spec/support/factories/announcements.rb diff --git a/spec/support/factories/attachments.rb b/apps/basechurch/spec/support/factories/attachments.rb similarity index 100% rename from spec/support/factories/attachments.rb rename to apps/basechurch/spec/support/factories/attachments.rb diff --git a/spec/support/factories/bulletins.rb b/apps/basechurch/spec/support/factories/bulletins.rb similarity index 100% rename from spec/support/factories/bulletins.rb rename to apps/basechurch/spec/support/factories/bulletins.rb diff --git a/spec/support/factories/groups.rb b/apps/basechurch/spec/support/factories/groups.rb similarity index 100% rename from spec/support/factories/groups.rb rename to apps/basechurch/spec/support/factories/groups.rb diff --git a/spec/support/factories/posts.rb b/apps/basechurch/spec/support/factories/posts.rb similarity index 100% rename from spec/support/factories/posts.rb rename to apps/basechurch/spec/support/factories/posts.rb diff --git a/spec/support/factories/sermons.rb b/apps/basechurch/spec/support/factories/sermons.rb similarity index 100% rename from spec/support/factories/sermons.rb rename to apps/basechurch/spec/support/factories/sermons.rb diff --git a/spec/support/factories/users.rb b/apps/basechurch/spec/support/factories/users.rb similarity index 100% rename from spec/support/factories/users.rb rename to apps/basechurch/spec/support/factories/users.rb diff --git a/spec/support/factory_girl.rb b/apps/basechurch/spec/support/factory_girl.rb similarity index 100% rename from spec/support/factory_girl.rb rename to apps/basechurch/spec/support/factory_girl.rb diff --git a/spec/support/request_helpers.rb b/apps/basechurch/spec/support/request_helpers.rb similarity index 100% rename from spec/support/request_helpers.rb rename to apps/basechurch/spec/support/request_helpers.rb diff --git a/spec/support/shared_examples/authenticated_action.rb b/apps/basechurch/spec/support/shared_examples/authenticated_action.rb similarity index 100% rename from spec/support/shared_examples/authenticated_action.rb rename to apps/basechurch/spec/support/shared_examples/authenticated_action.rb diff --git a/spec/support/shared_examples/has_attachment.rb b/apps/basechurch/spec/support/shared_examples/has_attachment.rb similarity index 100% rename from spec/support/shared_examples/has_attachment.rb rename to apps/basechurch/spec/support/shared_examples/has_attachment.rb diff --git a/spec/support/shared_examples/s3_signing.rb b/apps/basechurch/spec/support/shared_examples/s3_signing.rb similarity index 100% rename from spec/support/shared_examples/s3_signing.rb rename to apps/basechurch/spec/support/shared_examples/s3_signing.rb diff --git a/spec/validators/iso8601_validator_spec.rb b/apps/basechurch/spec/validators/iso8601_validator_spec.rb similarity index 100% rename from spec/validators/iso8601_validator_spec.rb rename to apps/basechurch/spec/validators/iso8601_validator_spec.rb diff --git a/apps/landing/.env.dev b/apps/landing/.env.dev new file mode 100644 index 0000000..05667c9 --- /dev/null +++ b/apps/landing/.env.dev @@ -0,0 +1,2 @@ +REDIS_HOST=redis +ENVIRONMENT=development diff --git a/apps/landing/.env.test b/apps/landing/.env.test new file mode 100644 index 0000000..2bc6a2d --- /dev/null +++ b/apps/landing/.env.test @@ -0,0 +1,2 @@ +REDIS_HOST=test +ENVIRONMENT=test diff --git a/apps/landing/.gitignore b/apps/landing/.gitignore new file mode 100644 index 0000000..06f3619 --- /dev/null +++ b/apps/landing/.gitignore @@ -0,0 +1,68 @@ +# Created by https://www.gitignore.io/api/intellij + +### Intellij ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff: +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/dictionaries + +# Sensitive or high-churn files: +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.xml +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml + +# Gradle: +.idea/**/gradle.xml +.idea/**/libraries + +# CMake +cmake-build-debug/ + +# Mongo Explorer plugin: +.idea/**/mongoSettings.xml + +## File-based project format: +*.iws + +## Plugin-specific files: + +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Ruby plugin and RubyMine +/.rakeTasks + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +### Intellij Patch ### +# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 + +*.iml +modules.xml +.idea/misc.xml +*.ipr + +# Sonarlint plugin +.idea/sonarlint + +# End of https://www.gitignore.io/api/intellij diff --git a/apps/landing/.idea/codeStyleSettings.xml b/apps/landing/.idea/codeStyleSettings.xml new file mode 100644 index 0000000..5555dd2 --- /dev/null +++ b/apps/landing/.idea/codeStyleSettings.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/apps/landing/.idea/libraries/landing_jar_with_dependencies.xml b/apps/landing/.idea/libraries/landing_jar_with_dependencies.xml new file mode 100644 index 0000000..249937a --- /dev/null +++ b/apps/landing/.idea/libraries/landing_jar_with_dependencies.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/apps/landing/.idea/misc.xml b/apps/landing/.idea/misc.xml new file mode 100644 index 0000000..0548357 --- /dev/null +++ b/apps/landing/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/apps/landing/.idea/modules.xml b/apps/landing/.idea/modules.xml new file mode 100644 index 0000000..5d418ec --- /dev/null +++ b/apps/landing/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/apps/landing/Dockerfile b/apps/landing/Dockerfile new file mode 100644 index 0000000..42b5969 --- /dev/null +++ b/apps/landing/Dockerfile @@ -0,0 +1,16 @@ +FROM openjdk:8 + +# Install maven +RUN apt-get update +RUN apt-get install -y maven + +RUN mkdir /app +WORKDIR /app + +# Prepare by downloading dependencies +ADD pom.xml /app/pom.xml +RUN ["mvn", "dependency:resolve"] + +ADD src /app/src +RUN ["mvn", "verify", "-DskipTests"] +RUN ["mvn", "package", "-DskipTests"] diff --git a/apps/landing/docker-compose.override.yml b/apps/landing/docker-compose.override.yml new file mode 100644 index 0000000..3fb9d5c --- /dev/null +++ b/apps/landing/docker-compose.override.yml @@ -0,0 +1,9 @@ +version: '3' +services: + landing: + build: . + env_file: + - ./.env.${BASECHURCH_ENV} + volumes: + - ./target:/app/target + command: bash -c "mvn package && java -jar target/landing-jar-with-dependencies.jar" diff --git a/apps/landing/docker-compose.test.yml b/apps/landing/docker-compose.test.yml new file mode 100644 index 0000000..d242227 --- /dev/null +++ b/apps/landing/docker-compose.test.yml @@ -0,0 +1,8 @@ +version: '3' +services: + landing: + env_file: + - ./.env.${BASECHURCH_ENV} + volumes: + - ./target:/app/target + - ./src:/app/src diff --git a/apps/landing/docker-compose.yml b/apps/landing/docker-compose.yml new file mode 100644 index 0000000..d551081 --- /dev/null +++ b/apps/landing/docker-compose.yml @@ -0,0 +1,14 @@ +version: '3' +services: + redis: + image: redis:latest + landing: + image: fisherhall/landing:latest + env_file: + - ./.env.${BASECHURCH_ENV} + command: java -jar target/landing-jar-with-dependencies.jar + ports: + - "4567:4567" + depends_on: + - redis + diff --git a/apps/landing/pom.xml b/apps/landing/pom.xml new file mode 100644 index 0000000..5021fef --- /dev/null +++ b/apps/landing/pom.xml @@ -0,0 +1,108 @@ + + + 4.0.0 + + io.fisherhall + landing + 1.0-SNAPSHOT + + + + com.sparkjava + spark-core + 2.6.0 + + + redis.clients + jedis + 2.9.0 + + + junit + junit + 4.12 + test + + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.4 + + landing + + + true + io.fisherhall.Application + dependency-jars/ + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-assembly-plugin + + + + attached + + package + + landing + + jar-with-dependencies + + + + io.fisherhall.Application + + + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + test-jar + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + src/main/assembly/test-jar-with-dependencies.xml + + + + + package + + single + + + + + + + diff --git a/apps/landing/src/main/assembly/test-jar-with-dependencies.xml b/apps/landing/src/main/assembly/test-jar-with-dependencies.xml new file mode 100644 index 0000000..832c66c --- /dev/null +++ b/apps/landing/src/main/assembly/test-jar-with-dependencies.xml @@ -0,0 +1,19 @@ + + test-jar-with-dependencies + + jar + + false + + + / + true + + true + true + test + + + diff --git a/apps/landing/src/main/java/io/fisherhall/Application.java b/apps/landing/src/main/java/io/fisherhall/Application.java new file mode 100644 index 0000000..86cc0d9 --- /dev/null +++ b/apps/landing/src/main/java/io/fisherhall/Application.java @@ -0,0 +1,15 @@ +package io.fisherhall; + +import redis.clients.jedis.Jedis; + +import static spark.Spark.get; + +public class Application { + public static void main(String[] args) { + Jedis jedis = new Jedis(System.getenv().get("REDIS_HOST")); + Environment environment = Environment.fromEnvironmentVariable(System.getenv("ENVIRONMENT")); + LandingPageStore landingPageStore = LandingPageStore.defaultImplementation(jedis, environment); + + get("*", new LandingController(landingPageStore).indexRoute); + } +} diff --git a/apps/landing/src/main/java/io/fisherhall/Environment.java b/apps/landing/src/main/java/io/fisherhall/Environment.java new file mode 100644 index 0000000..6543e45 --- /dev/null +++ b/apps/landing/src/main/java/io/fisherhall/Environment.java @@ -0,0 +1,20 @@ +package io.fisherhall; + +public enum Environment { + TEST, DEVELOPMENT, STAGING, PRODUCTION; + + public static Environment fromEnvironmentVariable(String envVar) { + switch (envVar.toLowerCase()) { + case "test": + return TEST; + case "development": + return DEVELOPMENT; + case "staging": + return STAGING; + case "production": + return PRODUCTION; + default: + return DEVELOPMENT; + } + } +} diff --git a/apps/landing/src/main/java/io/fisherhall/LandingController.java b/apps/landing/src/main/java/io/fisherhall/LandingController.java new file mode 100644 index 0000000..3c7d724 --- /dev/null +++ b/apps/landing/src/main/java/io/fisherhall/LandingController.java @@ -0,0 +1,19 @@ +package io.fisherhall; + +import spark.Request; +import spark.Response; +import spark.Route; + +import java.util.Optional; + +public class LandingController { + private LandingPageStore store; + + public final Route indexRoute = (Request request, Response response) -> { + return store.getFromRevision(Optional.ofNullable(request.queryParams("revision"))); + }; + + public LandingController(LandingPageStore store) { + this.store = store; + } +} diff --git a/apps/landing/src/main/java/io/fisherhall/LandingPageStore.java b/apps/landing/src/main/java/io/fisherhall/LandingPageStore.java new file mode 100644 index 0000000..dd48096 --- /dev/null +++ b/apps/landing/src/main/java/io/fisherhall/LandingPageStore.java @@ -0,0 +1,48 @@ +package io.fisherhall; + +import redis.clients.jedis.Jedis; + +import java.util.Optional; + +public interface LandingPageStore { + public String getFromRevision(Optional revision); + + public static LandingPageStore defaultImplementation(Jedis jedis, io.fisherhall.Environment environment) { + return new LandingPageStoreImpl(jedis, environment); + } +} + +class LandingPageStoreImpl implements LandingPageStore { + private Jedis jedis; + + LandingPageStoreImpl(Jedis jedis, io.fisherhall.Environment environment) { + this.jedis = jedis; + + if (environment == Environment.DEVELOPMENT) { + seedDevelopmentData(); + } + } + + @Override + public String getFromRevision(Optional revision) { + return jedis.get(fetchRevisionKey(revision)); + } + + private String fetchRevisionKey(Optional optionalRevision) { + String revision = optionalRevision. + filter(s -> !s.isEmpty()). + orElse(getCurrentRevision()); + + return String.format("basechurch:index:%s", revision); + } + + private String getCurrentRevision() { + return jedis.get("basechurch:index:current"); + } + + private void seedDevelopmentData() { + jedis.set("basechurch:index:current", "CURRENT_REVISION"); + jedis.set("basechurch:index:CURRENT_REVISION", "

Latest Hello World V2

"); + jedis.set("basechurch:index:secret", "

Secret Hello World

"); + } +} diff --git a/apps/landing/src/test/java/io/fisherhall/LandingPageStoreTest.java b/apps/landing/src/test/java/io/fisherhall/LandingPageStoreTest.java new file mode 100644 index 0000000..efab982 --- /dev/null +++ b/apps/landing/src/test/java/io/fisherhall/LandingPageStoreTest.java @@ -0,0 +1,36 @@ +package io.fisherhall; + +import org.junit.Before; +import org.junit.Test; +import redis.clients.jedis.Jedis; + +import java.util.Optional; + +import static org.junit.Assert.assertEquals; + +public class LandingPageStoreTest { + private Jedis jedis; + private LandingPageStore store; + + @Before + public void beforeEach() { + jedis = new Jedis("redis"); + jedis.flushAll(); + store = LandingPageStore.defaultImplementation(jedis, Environment.TEST); + } + + @Test + public void getFromRevision_with_no_revision() { + jedis.set("basechurch:index:current", "CURRENT_REVISION"); + jedis.set("basechurch:index:CURRENT_REVISION", "My landing page"); + + assertEquals("My landing page", store.getFromRevision(Optional.empty())); + } + + @Test + public void getFromRevision_with_revision() { + jedis.set("basechurch:index:1", "v1 landing page"); + + assertEquals("v1 landing page", store.getFromRevision(Optional.of("1"))); + } +} \ No newline at end of file diff --git a/bin/createswarm.sh b/bin/createswarm.sh new file mode 100644 index 0000000..437c205 --- /dev/null +++ b/bin/createswarm.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +for i in 1 2; do docker-machine create --driver digitalocean \ + --digitalocean-image ubuntu-16-04-x64 \ + --digitalocean-access-token $FISHER_HALL_DOTOKEN \ + --digitalocean-private-networking \ + --digitalocean-size 512mb node-$i; done + +docker-machine ssh node-1 docker swarm init --advertise-addr $(docker-machine ip node-1) + +for i in 1 2 3; do \ + docker-machine ssh node-$i docker swarm join --token SWMTKN-1-3l8l43ag0sisurwpq8r37862r6mtsx9drelj75b6c0yw5dybo3-eebwijloeem96a1u2v79u5p6o 138.197.107.247:2377; done + + +docker-machine scp apps/basechurch/docker-compose.yml node-1:~ +docker-machine scp apps/basechurch/.env.dev node-1:~ + +docker stack deploy --compose-file docker-compose.yml fisherhall diff --git a/bin/init-prod.sh b/bin/init-prod.sh new file mode 100755 index 0000000..fc1dabf --- /dev/null +++ b/bin/init-prod.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +docker-compose \ + -f apps/basechurch/docker-compose.yml \ + up -d db + +docker-compose \ + -f apps/basechurch/docker-compose.yml \ + run api rm /app/tmp/pids/server.pid + +docker-compose \ + -f apps/basechurch/docker-compose.yml \ + run api bundle exec rake db:create db:migrate db:seed + +docker-compose \ + -f apps/basechurch/docker-compose.yml \ + up -d + diff --git a/bin/init.sh b/bin/init.sh new file mode 100755 index 0000000..21cd753 --- /dev/null +++ b/bin/init.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +docker-compose \ + -f apps/basechurch/docker-compose.yml \ + -f apps/basechurch/docker-compose.override.yml \ + up -d db + +docker-compose \ + -f apps/basechurch/docker-compose.yml \ + -f apps/basechurch/docker-compose.override.yml \ + run api rm /app/tmp/pids/server.pid + +docker-compose \ + -f apps/basechurch/docker-compose.yml \ + -f apps/basechurch/docker-compose.override.yml \ + run api bundle exec rake db:create + +docker-compose \ + -f apps/basechurch/docker-compose.yml \ + -f apps/basechurch/docker-compose.override.yml \ + run api bundle exec rake db:migrate + +docker-compose \ + -f apps/basechurch/docker-compose.yml \ + -f apps/basechurch/docker-compose.override.yml \ + run api bundle exec rake db:seed + +docker-compose \ + -f apps/basechurch/docker-compose.yml \ + -f apps/basechurch/docker-compose.override.yml \ + up -d diff --git a/bin/shutdown.sh b/bin/shutdown.sh new file mode 100755 index 0000000..bcf8311 --- /dev/null +++ b/bin/shutdown.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +docker-compose \ + -f apps/basechurch/docker-compose.yml \ + -f apps/basechurch/docker-compose.override.yml \ + down + +docker-compose \ + -f apps/landing/docker-compose.yml \ + -f apps/landing/docker-compose.override.yml \ + down + diff --git a/bin/test-basechurch.sh b/bin/test-basechurch.sh new file mode 100755 index 0000000..33fd11c --- /dev/null +++ b/bin/test-basechurch.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +export BASECHURCH_ENV=test + +docker-compose \ + -f apps/basechurch/docker-compose.yml \ + -f apps/basechurch/docker-compose.override.yml \ + up -d db + +docker-compose \ + -f apps/basechurch/docker-compose.yml \ + -f apps/basechurch/docker-compose.override.yml \ + run -e RAILS_ENV=test api bundle exec rake db:create + +docker-compose \ + -f apps/basechurch/docker-compose.yml \ + -f apps/basechurch/docker-compose.override.yml \ + run -e RAILS_ENV=test api bundle exec rake db:migrate + +docker-compose \ + -f apps/basechurch/docker-compose.yml \ + -f apps/basechurch/docker-compose.override.yml \ + run api bundle exec rspec diff --git a/bin/test-landing.sh b/bin/test-landing.sh new file mode 100755 index 0000000..b97fcc3 --- /dev/null +++ b/bin/test-landing.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +export BASECHURCH_ENV=test + +docker-compose \ + -f apps/landing/docker-compose.yml \ + -f apps/landing/docker-compose.override.yml \ + -f apps/landing/docker-compose.test.yml \ + up -d redis + +docker-compose \ + -f apps/landing/docker-compose.yml \ + -f apps/landing/docker-compose.override.yml \ + -f apps/landing/docker-compose.test.yml \ + run landing mvn test + diff --git a/config/chef/site-cookbooks/.gitkeep b/config/chef/site-cookbooks/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/config/database.yml b/config/database.yml deleted file mode 100644 index 9d1152d..0000000 --- a/config/database.yml +++ /dev/null @@ -1,25 +0,0 @@ -# SQLite version 3.x -# gem install sqlite3 -# -# Ensure the SQLite 3 gem is defined in your Gemfile -# gem 'sqlite3' -# -default: &default - adapter: sqlite3 - pool: 10 - timeout: 50000 - -development: - <<: *default - database: db/development.sqlite3 - -# Warning: The database defined as "test" will be erased and -# re-generated from your development database when you run "rake". -# Do not set this db to the same as development or production. -test: - <<: *default - database: db/test.sqlite3 - -production: - <<: *default - database: db/production.sqlite3 diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb deleted file mode 100644 index da49bfb..0000000 --- a/config/initializers/sidekiq.rb +++ /dev/null @@ -1,7 +0,0 @@ -Sidekiq.configure_server do |config| - config.redis = { url: RedisSettings.url } -end - -Sidekiq.configure_client do |config| - config.redis = { url: RedisSettings.url } -end diff --git a/config/redis.yml b/config/redis.yml deleted file mode 100644 index 0c8d925..0000000 --- a/config/redis.yml +++ /dev/null @@ -1,5 +0,0 @@ -test: - url: redis://localhost:6379 - -development: - url: redis://localhost:6379 diff --git a/config/secrets.yml b/config/secrets.yml deleted file mode 100644 index 5affcfa..0000000 --- a/config/secrets.yml +++ /dev/null @@ -1,10 +0,0 @@ -default: &default - secret_key_base: <%= Secrets.secret_key_base %> - aws_access_key_id: <%= Secrets.aws_access_key_id %> - aws_secret_access_key: <%= Secrets.aws_secret_access_key %> - prerender_io_token: <%= Secrets.prerender_io_token %> - -test: *default -development: *default -staging: *default -production: *default diff --git a/config/test-secrets.yml b/config/test-secrets.yml deleted file mode 100644 index 1093923..0000000 --- a/config/test-secrets.yml +++ /dev/null @@ -1,7 +0,0 @@ -test: - secret_key_base: asdlkjfh23lkj4h23lkjehfsd7f8xc98zxvhxkvjhenrweefdxi99 - aws_access_key_id: test_aws_access_key_id - aws_secret_access_key: test_aws_secret_access_key - fb_app_id: test_fb_app_id - fb_app_secret: test_fb_app_secret - prerender_io_token: test_prerender_token