From 78c0ee988524fe2b43ed2ea0c7595b0103fade6a Mon Sep 17 00:00:00 2001 From: Lucas Date: Sat, 15 Jul 2017 05:46:19 +0200 Subject: [PATCH 1/5] Add spec for the railtie. --- spec/railtie_spec.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 spec/railtie_spec.rb diff --git a/spec/railtie_spec.rb b/spec/railtie_spec.rb new file mode 100644 index 0000000..1b1879d --- /dev/null +++ b/spec/railtie_spec.rb @@ -0,0 +1,11 @@ +require 'rails_helper' + +describe JSONAPI::Rails::Railtie do + it 'registers the JSON API MIME type' do + expect(Mime[:jsonapi]).to eq('application/vnd.api+json') + end + + it 'registers the params parser for the JSON API MIME type' do + expect(::ActionDispatch::Request.parameter_parsers[:jsonapi]).not_to be_nil + end +end From 2121d36a563e382d8a020c0448815684b39833f4 Mon Sep 17 00:00:00 2001 From: Lucas Date: Sat, 15 Jul 2017 05:49:09 +0200 Subject: [PATCH 2/5] Add tests + make #jsonapi_pointers public. --- lib/jsonapi/rails/action_controller.rb | 2 - spec/action_controller_spec.rb | 74 ++++++++++++++++++++++---- 2 files changed, 64 insertions(+), 12 deletions(-) diff --git a/lib/jsonapi/rails/action_controller.rb b/lib/jsonapi/rails/action_controller.rb index d3b1aab..856e2de 100644 --- a/lib/jsonapi/rails/action_controller.rb +++ b/lib/jsonapi/rails/action_controller.rb @@ -33,8 +33,6 @@ def _deserializable(key, options, fallback, &block) end end - private - def jsonapi_pointers request.env[JSONAPI_POINTERS_KEY] end diff --git a/spec/action_controller_spec.rb b/spec/action_controller_spec.rb index bd608cd..16080a2 100644 --- a/spec/action_controller_spec.rb +++ b/spec/action_controller_spec.rb @@ -1,17 +1,71 @@ require 'rails_helper' -RSpec.describe ActionController::Base do - it 'exposes the deserialization mapping via the jsonapi_pointers method' do - pointers = { id: '/data/id', type: '/data/type' } - - allow(subject).to receive(:request) do - OpenStruct.new( - env: { - JSONAPI::Rails::ActionController::JSONAPI_POINTERS_KEY => pointers +describe ActionController::Base, type: :controller do + describe '.deserializable_resource' do + controller do + deserializable_resource :user + + def create + render plain: 'ok' + end + end + + let(:payload) do + { + _jsonapi: { + 'data' => { + 'type' => 'users', + 'attributes' => { 'foo' => 'bar', 'bar' => 'baz' } + } } - ) + } end - expect(subject.send(:jsonapi_pointers)).to equal pointers + it 'makes the deserialized resource available in params' do + post :create, params: payload + + expected = { 'type' => 'users', 'foo' => 'bar', 'bar' => 'baz' } + expect(controller.params[:user]).to eq(expected) + end + + it 'makes the deserialization mapping available via #jsonapi_pointers' do + post :create, params: payload + + expected = { foo: '/data/attributes/foo', + bar: '/data/attributes/bar', + type: '/data/type' } + expect(controller.jsonapi_pointers).to eq(expected) + end + end + + describe '#render jsonapi:' do + controller do + def index + serializer = Class.new(JSONAPI::Serializable::Resource) do + type :users + attribute :name + end + user = OpenStruct.new(id: 1, name: 'Lucas') + + render jsonapi: user, class: serializer + end + end + + subject { JSON.parse(response.body) } + let(:serialized_user) do + { + 'data' => { + 'id' => '1', + 'type' => 'users', + 'attributes' => { 'name' => 'Lucas' } } + } + end + + it 'renders a JSON API document' do + get :index + + expect(response.content_type).to eq('application/vnd.api+json') + is_expected.to eq(serialized_user) + end end end From 02858a2718fda25ae8a9aea6e5b8865b71c0254c Mon Sep 17 00:00:00 2001 From: Lucas Date: Sat, 15 Jul 2017 06:13:39 +0200 Subject: [PATCH 3/5] Remove dummy test app. --- .gitignore | 4 - spec/dummy/Rakefile | 6 -- spec/dummy/app/assets/config/manifest.js | 4 - spec/dummy/app/assets/images/.keep | 0 .../app/assets/javascripts/application.js | 13 --- spec/dummy/app/assets/javascripts/cable.js | 13 --- .../app/assets/javascripts/channels/.keep | 0 .../app/assets/stylesheets/application.css | 15 --- .../app/channels/application_cable/channel.rb | 4 - .../channels/application_cable/connection.rb | 4 - .../app/controllers/application_controller.rb | 3 - spec/dummy/app/controllers/concerns/.keep | 0 .../app/controllers/tweets_controller.rb | 49 --------- .../deserializable/deserializable_tweet.rb | 13 --- spec/dummy/app/helpers/application_helper.rb | 2 - spec/dummy/app/jobs/application_job.rb | 2 - spec/dummy/app/mailers/application_mailer.rb | 4 - spec/dummy/app/models/application_record.rb | 3 - spec/dummy/app/models/concerns/.keep | 0 spec/dummy/app/models/tweet.rb | 4 - spec/dummy/app/models/user.rb | 3 - .../app/serializable/serializable_tweet.rb | 9 -- .../app/serializable/serializable_user.rb | 10 -- .../app/views/layouts/application.html.erb | 14 --- spec/dummy/app/views/layouts/mailer.html.erb | 13 --- spec/dummy/app/views/layouts/mailer.text.erb | 1 - spec/dummy/bin/bundle | 3 - spec/dummy/bin/rails | 4 - spec/dummy/bin/rake | 4 - spec/dummy/bin/setup | 34 ------ spec/dummy/bin/update | 29 ----- spec/dummy/config.ru | 5 - spec/dummy/config/application.rb | 15 --- spec/dummy/config/boot.rb | 5 - spec/dummy/config/cable.yml | 9 -- spec/dummy/config/database.yml | 25 ----- spec/dummy/config/environment.rb | 5 - spec/dummy/config/environments/development.rb | 54 ---------- spec/dummy/config/environments/production.rb | 86 --------------- spec/dummy/config/environments/test.rb | 42 -------- .../application_controller_renderer.rb | 6 -- spec/dummy/config/initializers/assets.rb | 11 -- .../initializers/backtrace_silencers.rb | 7 -- .../config/initializers/cookies_serializer.rb | 5 - .../initializers/filter_parameter_logging.rb | 4 - spec/dummy/config/initializers/inflections.rb | 16 --- spec/dummy/config/initializers/mime_types.rb | 4 - .../initializers/new_framework_defaults.rb | 24 ----- .../config/initializers/session_store.rb | 3 - .../config/initializers/wrap_parameters.rb | 14 --- spec/dummy/config/locales/en.yml | 23 ---- spec/dummy/config/puma.rb | 47 -------- spec/dummy/config/routes.rb | 3 - spec/dummy/config/secrets.yml | 22 ---- spec/dummy/config/spring.rb | 6 -- spec/dummy/db/development.sqlite3 | Bin 40960 -> 0 bytes .../migrate/20161120191133_create_tweets.rb | 11 -- .../db/migrate/20161120191438_create_users.rb | 10 -- spec/dummy/db/schema.rb | 32 ------ spec/dummy/lib/assets/.keep | 0 spec/dummy/log/.keep | 0 spec/dummy/log/development.log | 100 ------------------ spec/dummy/public/404.html | 67 ------------ spec/dummy/public/422.html | 67 ------------ spec/dummy/public/500.html | 66 ------------ .../public/apple-touch-icon-precomposed.png | 0 spec/dummy/public/apple-touch-icon.png | 0 spec/dummy/public/favicon.ico | 0 spec/dummy/tmp/.keep | 0 spec/requests/crud_spec.rb | 99 ----------------- 70 files changed, 1160 deletions(-) delete mode 100644 spec/dummy/Rakefile delete mode 100644 spec/dummy/app/assets/config/manifest.js delete mode 100644 spec/dummy/app/assets/images/.keep delete mode 100644 spec/dummy/app/assets/javascripts/application.js delete mode 100644 spec/dummy/app/assets/javascripts/cable.js delete mode 100644 spec/dummy/app/assets/javascripts/channels/.keep delete mode 100644 spec/dummy/app/assets/stylesheets/application.css delete mode 100644 spec/dummy/app/channels/application_cable/channel.rb delete mode 100644 spec/dummy/app/channels/application_cable/connection.rb delete mode 100644 spec/dummy/app/controllers/application_controller.rb delete mode 100644 spec/dummy/app/controllers/concerns/.keep delete mode 100644 spec/dummy/app/controllers/tweets_controller.rb delete mode 100644 spec/dummy/app/deserializable/deserializable_tweet.rb delete mode 100644 spec/dummy/app/helpers/application_helper.rb delete mode 100644 spec/dummy/app/jobs/application_job.rb delete mode 100644 spec/dummy/app/mailers/application_mailer.rb delete mode 100644 spec/dummy/app/models/application_record.rb delete mode 100644 spec/dummy/app/models/concerns/.keep delete mode 100644 spec/dummy/app/models/tweet.rb delete mode 100644 spec/dummy/app/models/user.rb delete mode 100644 spec/dummy/app/serializable/serializable_tweet.rb delete mode 100644 spec/dummy/app/serializable/serializable_user.rb delete mode 100644 spec/dummy/app/views/layouts/application.html.erb delete mode 100644 spec/dummy/app/views/layouts/mailer.html.erb delete mode 100644 spec/dummy/app/views/layouts/mailer.text.erb delete mode 100755 spec/dummy/bin/bundle delete mode 100755 spec/dummy/bin/rails delete mode 100755 spec/dummy/bin/rake delete mode 100755 spec/dummy/bin/setup delete mode 100755 spec/dummy/bin/update delete mode 100644 spec/dummy/config.ru delete mode 100644 spec/dummy/config/application.rb delete mode 100644 spec/dummy/config/boot.rb delete mode 100644 spec/dummy/config/cable.yml delete mode 100644 spec/dummy/config/database.yml delete mode 100644 spec/dummy/config/environment.rb delete mode 100644 spec/dummy/config/environments/development.rb delete mode 100644 spec/dummy/config/environments/production.rb delete mode 100644 spec/dummy/config/environments/test.rb delete mode 100644 spec/dummy/config/initializers/application_controller_renderer.rb delete mode 100644 spec/dummy/config/initializers/assets.rb delete mode 100644 spec/dummy/config/initializers/backtrace_silencers.rb delete mode 100644 spec/dummy/config/initializers/cookies_serializer.rb delete mode 100644 spec/dummy/config/initializers/filter_parameter_logging.rb delete mode 100644 spec/dummy/config/initializers/inflections.rb delete mode 100644 spec/dummy/config/initializers/mime_types.rb delete mode 100644 spec/dummy/config/initializers/new_framework_defaults.rb delete mode 100644 spec/dummy/config/initializers/session_store.rb delete mode 100644 spec/dummy/config/initializers/wrap_parameters.rb delete mode 100644 spec/dummy/config/locales/en.yml delete mode 100644 spec/dummy/config/puma.rb delete mode 100644 spec/dummy/config/routes.rb delete mode 100644 spec/dummy/config/secrets.yml delete mode 100644 spec/dummy/config/spring.rb delete mode 100644 spec/dummy/db/development.sqlite3 delete mode 100644 spec/dummy/db/migrate/20161120191133_create_tweets.rb delete mode 100644 spec/dummy/db/migrate/20161120191438_create_users.rb delete mode 100644 spec/dummy/db/schema.rb delete mode 100644 spec/dummy/lib/assets/.keep delete mode 100644 spec/dummy/log/.keep delete mode 100644 spec/dummy/log/development.log delete mode 100644 spec/dummy/public/404.html delete mode 100644 spec/dummy/public/422.html delete mode 100644 spec/dummy/public/500.html delete mode 100644 spec/dummy/public/apple-touch-icon-precomposed.png delete mode 100644 spec/dummy/public/apple-touch-icon.png delete mode 100644 spec/dummy/public/favicon.ico delete mode 100644 spec/dummy/tmp/.keep delete mode 100644 spec/requests/crud_spec.rb diff --git a/.gitignore b/.gitignore index 0e71773..b8ce16c 100644 --- a/.gitignore +++ b/.gitignore @@ -10,10 +10,6 @@ /test/version_tmp/ /tmp/ -## Dummy app temp files: -/spec/dummy/db -/spec/dummy/log - ## Specific to RubyMotion: .dat* .repl_history diff --git a/spec/dummy/Rakefile b/spec/dummy/Rakefile deleted file mode 100644 index e85f913..0000000 --- a/spec/dummy/Rakefile +++ /dev/null @@ -1,6 +0,0 @@ -# Add your own tasks in files placed in lib/tasks ending in .rake, -# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. - -require_relative 'config/application' - -Rails.application.load_tasks diff --git a/spec/dummy/app/assets/config/manifest.js b/spec/dummy/app/assets/config/manifest.js deleted file mode 100644 index c8e290c..0000000 --- a/spec/dummy/app/assets/config/manifest.js +++ /dev/null @@ -1,4 +0,0 @@ - -//= link_tree ../images -//= link_directory ../javascripts .js -//= link_directory ../stylesheets .css diff --git a/spec/dummy/app/assets/images/.keep b/spec/dummy/app/assets/images/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/spec/dummy/app/assets/javascripts/application.js b/spec/dummy/app/assets/javascripts/application.js deleted file mode 100644 index e54c646..0000000 --- a/spec/dummy/app/assets/javascripts/application.js +++ /dev/null @@ -1,13 +0,0 @@ -// This is a manifest file that'll be compiled into application.js, which will include all the files -// listed below. -// -// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, -// or 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. JavaScript code in this file should be added after the last require_* statement. -// -// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details -// about supported directives. -// -//= require_tree . diff --git a/spec/dummy/app/assets/javascripts/cable.js b/spec/dummy/app/assets/javascripts/cable.js deleted file mode 100644 index 71ee1e6..0000000 --- a/spec/dummy/app/assets/javascripts/cable.js +++ /dev/null @@ -1,13 +0,0 @@ -// Action Cable provides the framework to deal with WebSockets in Rails. -// You can generate new channels where WebSocket features live using the rails generate channel command. -// -//= require action_cable -//= require_self -//= require_tree ./channels - -(function() { - this.App || (this.App = {}); - - App.cable = ActionCable.createConsumer(); - -}).call(this); diff --git a/spec/dummy/app/assets/javascripts/channels/.keep b/spec/dummy/app/assets/javascripts/channels/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/spec/dummy/app/assets/stylesheets/application.css b/spec/dummy/app/assets/stylesheets/application.css deleted file mode 100644 index 0ebd7fe..0000000 --- a/spec/dummy/app/assets/stylesheets/application.css +++ /dev/null @@ -1,15 +0,0 @@ -/* - * This is a manifest file that'll be compiled into application.css, which will include all the files - * listed below. - * - * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, - * or 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 other CSS/SCSS - * files in this directory. Styles in this file should be added after the last require_* statement. - * It is generally better to create a new file per style scope. - * - *= require_tree . - *= require_self - */ diff --git a/spec/dummy/app/channels/application_cable/channel.rb b/spec/dummy/app/channels/application_cable/channel.rb deleted file mode 100644 index d672697..0000000 --- a/spec/dummy/app/channels/application_cable/channel.rb +++ /dev/null @@ -1,4 +0,0 @@ -module ApplicationCable - class Channel < ActionCable::Channel::Base - end -end diff --git a/spec/dummy/app/channels/application_cable/connection.rb b/spec/dummy/app/channels/application_cable/connection.rb deleted file mode 100644 index 0ff5442..0000000 --- a/spec/dummy/app/channels/application_cable/connection.rb +++ /dev/null @@ -1,4 +0,0 @@ -module ApplicationCable - class Connection < ActionCable::Connection::Base - end -end diff --git a/spec/dummy/app/controllers/application_controller.rb b/spec/dummy/app/controllers/application_controller.rb deleted file mode 100644 index 1c07694..0000000 --- a/spec/dummy/app/controllers/application_controller.rb +++ /dev/null @@ -1,3 +0,0 @@ -class ApplicationController < ActionController::Base - protect_from_forgery with: :exception -end diff --git a/spec/dummy/app/controllers/concerns/.keep b/spec/dummy/app/controllers/concerns/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/spec/dummy/app/controllers/tweets_controller.rb b/spec/dummy/app/controllers/tweets_controller.rb deleted file mode 100644 index 4b1c381..0000000 --- a/spec/dummy/app/controllers/tweets_controller.rb +++ /dev/null @@ -1,49 +0,0 @@ -class TweetsController < ActionController::Base - deserializable_resource :tweet, only: [:create, :update] - - def index - tweets = Tweet.all - - render jsonapi: tweets, - jsonapi_object: { version: '1.0' }, - meta: { foo: 'bar' }, - links: { - self: 'http://foo.bar' - } - end - - def show - tweet = Tweet.find(params[:id]) - - render jsonapi: tweet - end - - def create - tweet = Tweet.new(create_params.merge(author: current_user)) - - p request.env['jsonapi_deserializable.reverse_mapping'] - - unless tweet.save - render jsonapi_errors: tweet.errors - return - end - - render jsonapi: tweet, status: :created - end - - def destroy - Tweet.delete(params[:id]) - - head :no_content - end - - private - - def current_user - User.first || User.create(name: 'Lucas', email: 'lucas@jsonapi-rb.org') - end - - def create_params - params.require(:tweet).permit(:content, :parent_id) - end -end diff --git a/spec/dummy/app/deserializable/deserializable_tweet.rb b/spec/dummy/app/deserializable/deserializable_tweet.rb deleted file mode 100644 index 99d5972..0000000 --- a/spec/dummy/app/deserializable/deserializable_tweet.rb +++ /dev/null @@ -1,13 +0,0 @@ -class DeserializableTweet < JSONAPI::Deserializable::Resource - id - - attribute :content - - has_one :parent do |rel, id, type| - field parent_id: id - end - - has_one :author do |rel, id, type| - field author_id: id - end -end diff --git a/spec/dummy/app/helpers/application_helper.rb b/spec/dummy/app/helpers/application_helper.rb deleted file mode 100644 index de6be79..0000000 --- a/spec/dummy/app/helpers/application_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module ApplicationHelper -end diff --git a/spec/dummy/app/jobs/application_job.rb b/spec/dummy/app/jobs/application_job.rb deleted file mode 100644 index a009ace..0000000 --- a/spec/dummy/app/jobs/application_job.rb +++ /dev/null @@ -1,2 +0,0 @@ -class ApplicationJob < ActiveJob::Base -end diff --git a/spec/dummy/app/mailers/application_mailer.rb b/spec/dummy/app/mailers/application_mailer.rb deleted file mode 100644 index 286b223..0000000 --- a/spec/dummy/app/mailers/application_mailer.rb +++ /dev/null @@ -1,4 +0,0 @@ -class ApplicationMailer < ActionMailer::Base - default from: 'from@example.com' - layout 'mailer' -end diff --git a/spec/dummy/app/models/application_record.rb b/spec/dummy/app/models/application_record.rb deleted file mode 100644 index 10a4cba..0000000 --- a/spec/dummy/app/models/application_record.rb +++ /dev/null @@ -1,3 +0,0 @@ -class ApplicationRecord < ActiveRecord::Base - self.abstract_class = true -end diff --git a/spec/dummy/app/models/concerns/.keep b/spec/dummy/app/models/concerns/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/spec/dummy/app/models/tweet.rb b/spec/dummy/app/models/tweet.rb deleted file mode 100644 index 90a76c2..0000000 --- a/spec/dummy/app/models/tweet.rb +++ /dev/null @@ -1,4 +0,0 @@ -class Tweet < ApplicationRecord - belongs_to :parent, optional: true - belongs_to :author, class_name: 'User' -end diff --git a/spec/dummy/app/models/user.rb b/spec/dummy/app/models/user.rb deleted file mode 100644 index fef2809..0000000 --- a/spec/dummy/app/models/user.rb +++ /dev/null @@ -1,3 +0,0 @@ -class User < ApplicationRecord - has_many :tweets -end diff --git a/spec/dummy/app/serializable/serializable_tweet.rb b/spec/dummy/app/serializable/serializable_tweet.rb deleted file mode 100644 index e32465d..0000000 --- a/spec/dummy/app/serializable/serializable_tweet.rb +++ /dev/null @@ -1,9 +0,0 @@ -class SerializableTweet < JSONAPI::Serializable::Resource - type 'tweets' - - attribute :content - attribute(:date) { @object.created_at } - - has_one :parent - has_one :author -end diff --git a/spec/dummy/app/serializable/serializable_user.rb b/spec/dummy/app/serializable/serializable_user.rb deleted file mode 100644 index 2a84a46..0000000 --- a/spec/dummy/app/serializable/serializable_user.rb +++ /dev/null @@ -1,10 +0,0 @@ -class SerializableUser < JSONAPI::Serializable::Resource - type 'users' - - attribute :name - attribute :email - attribute :created_at - attribute :updated_at - - has_many :tweets -end diff --git a/spec/dummy/app/views/layouts/application.html.erb b/spec/dummy/app/views/layouts/application.html.erb deleted file mode 100644 index a3740a2..0000000 --- a/spec/dummy/app/views/layouts/application.html.erb +++ /dev/null @@ -1,14 +0,0 @@ - - - - Dummy - <%= csrf_meta_tags %> - - <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> - <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> - - - - <%= yield %> - - diff --git a/spec/dummy/app/views/layouts/mailer.html.erb b/spec/dummy/app/views/layouts/mailer.html.erb deleted file mode 100644 index cbd34d2..0000000 --- a/spec/dummy/app/views/layouts/mailer.html.erb +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - <%= yield %> - - diff --git a/spec/dummy/app/views/layouts/mailer.text.erb b/spec/dummy/app/views/layouts/mailer.text.erb deleted file mode 100644 index 37f0bdd..0000000 --- a/spec/dummy/app/views/layouts/mailer.text.erb +++ /dev/null @@ -1 +0,0 @@ -<%= yield %> diff --git a/spec/dummy/bin/bundle b/spec/dummy/bin/bundle deleted file mode 100755 index 66e9889..0000000 --- a/spec/dummy/bin/bundle +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env ruby -ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) -load Gem.bin_path('bundler', 'bundle') diff --git a/spec/dummy/bin/rails b/spec/dummy/bin/rails deleted file mode 100755 index 0739660..0000000 --- a/spec/dummy/bin/rails +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env ruby -APP_PATH = File.expand_path('../config/application', __dir__) -require_relative '../config/boot' -require 'rails/commands' diff --git a/spec/dummy/bin/rake b/spec/dummy/bin/rake deleted file mode 100755 index 1724048..0000000 --- a/spec/dummy/bin/rake +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env ruby -require_relative '../config/boot' -require 'rake' -Rake.application.run diff --git a/spec/dummy/bin/setup b/spec/dummy/bin/setup deleted file mode 100755 index e620b4d..0000000 --- a/spec/dummy/bin/setup +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env ruby -require 'pathname' -require 'fileutils' -include FileUtils - -# path to your application root. -APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) - -def system!(*args) - system(*args) || abort("\n== Command #{args} failed ==") -end - -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') || system!('bundle install') - - # puts "\n== Copying sample files ==" - # unless File.exist?('config/database.yml') - # cp 'config/database.yml.sample', 'config/database.yml' - # end - - puts "\n== Preparing database ==" - system! 'bin/rails db:setup' - - puts "\n== Removing old logs and tempfiles ==" - system! 'bin/rails log:clear tmp:clear' - - puts "\n== Restarting application server ==" - system! 'bin/rails restart' -end diff --git a/spec/dummy/bin/update b/spec/dummy/bin/update deleted file mode 100755 index a8e4462..0000000 --- a/spec/dummy/bin/update +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env ruby -require 'pathname' -require 'fileutils' -include FileUtils - -# path to your application root. -APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) - -def system!(*args) - system(*args) || abort("\n== Command #{args} failed ==") -end - -chdir APP_ROOT do - # This script is a way to update your development environment automatically. - # Add necessary update steps to this file. - - puts '== Installing dependencies ==' - system! 'gem install bundler --conservative' - system('bundle check') || system!('bundle install') - - puts "\n== Updating database ==" - system! 'bin/rails db:migrate' - - puts "\n== Removing old logs and tempfiles ==" - system! 'bin/rails log:clear tmp:clear' - - puts "\n== Restarting application server ==" - system! 'bin/rails restart' -end diff --git a/spec/dummy/config.ru b/spec/dummy/config.ru deleted file mode 100644 index f7ba0b5..0000000 --- a/spec/dummy/config.ru +++ /dev/null @@ -1,5 +0,0 @@ -# This file is used by Rack-based servers to start the application. - -require_relative 'config/environment' - -run Rails.application diff --git a/spec/dummy/config/application.rb b/spec/dummy/config/application.rb deleted file mode 100644 index df320c7..0000000 --- a/spec/dummy/config/application.rb +++ /dev/null @@ -1,15 +0,0 @@ -require_relative 'boot' - -require 'rails/all' - -Bundler.require(*Rails.groups) -require "jsonapi/rails" - -module Dummy - 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. - end -end - diff --git a/spec/dummy/config/boot.rb b/spec/dummy/config/boot.rb deleted file mode 100644 index c9aef85..0000000 --- a/spec/dummy/config/boot.rb +++ /dev/null @@ -1,5 +0,0 @@ -# Set up gems listed in the Gemfile. -ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../Gemfile', __dir__) - -require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) -$LOAD_PATH.unshift File.expand_path('../../../lib', __dir__) diff --git a/spec/dummy/config/cable.yml b/spec/dummy/config/cable.yml deleted file mode 100644 index 0bbde6f..0000000 --- a/spec/dummy/config/cable.yml +++ /dev/null @@ -1,9 +0,0 @@ -development: - adapter: async - -test: - adapter: async - -production: - adapter: redis - url: redis://localhost:6379/1 diff --git a/spec/dummy/config/database.yml b/spec/dummy/config/database.yml deleted file mode 100644 index 1c1a37c..0000000 --- a/spec/dummy/config/database.yml +++ /dev/null @@ -1,25 +0,0 @@ -# SQLite version 3.x -# gem install sqlite3 -# -# Ensure the SQLite 3 gem is defined in your Gemfile -# gem 'sqlite3' -# -default: &default - adapter: sqlite3 - pool: 5 - timeout: 5000 - -development: - <<: *default - database: db/development.sqlite3 - -# Warning: The database defined as "test" will be erased and -# re-generated from your development database when you run "rake". -# Do not set this db to the same as development or production. -test: - <<: *default - database: db/test.sqlite3 - -production: - <<: *default - database: db/production.sqlite3 diff --git a/spec/dummy/config/environment.rb b/spec/dummy/config/environment.rb deleted file mode 100644 index 426333b..0000000 --- a/spec/dummy/config/environment.rb +++ /dev/null @@ -1,5 +0,0 @@ -# Load the Rails application. -require_relative 'application' - -# Initialize the Rails application. -Rails.application.initialize! diff --git a/spec/dummy/config/environments/development.rb b/spec/dummy/config/environments/development.rb deleted file mode 100644 index e64889c..0000000 --- a/spec/dummy/config/environments/development.rb +++ /dev/null @@ -1,54 +0,0 @@ -Rails.application.configure do - # Settings specified here will take precedence over those in config/application.rb. - - # In the development environment your application's code is reloaded on - # every request. This slows down response time but is perfect for development - # since you don't have to restart the web server when you make code changes. - config.cache_classes = false - - # Do not eager load code on boot. - config.eager_load = false - - # Show full error reports. - config.consider_all_requests_local = true - - # Enable/disable caching. By default caching is disabled. - if Rails.root.join('tmp/caching-dev.txt').exist? - config.action_controller.perform_caching = true - - config.cache_store = :memory_store - config.public_file_server.headers = { - 'Cache-Control' => 'public, max-age=172800' - } - else - config.action_controller.perform_caching = false - - config.cache_store = :null_store - end - - # Don't care if the mailer can't send. - config.action_mailer.raise_delivery_errors = false - - config.action_mailer.perform_caching = 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 - - # Suppress logger output for asset requests. - config.assets.quiet = true - - # Raises error for missing translations - # config.action_view.raise_on_missing_translations = true - - # Use an evented file watcher to asynchronously detect changes in source code, - # routes, locales, etc. This feature depends on the listen gem. - # config.file_watcher = ActiveSupport::EventedFileUpdateChecker -end diff --git a/spec/dummy/config/environments/production.rb b/spec/dummy/config/environments/production.rb deleted file mode 100644 index 739e81c..0000000 --- a/spec/dummy/config/environments/production.rb +++ /dev/null @@ -1,86 +0,0 @@ -Rails.application.configure do - # Settings specified here will take precedence over those in config/application.rb. - - # Code is not reloaded between requests. - config.cache_classes = true - - # Eager load code on boot. This eager loads most of Rails and - # your application in memory, allowing both threaded web servers - # and those relying on copy on write to perform better. - # Rake tasks automatically ignore this option for performance. - config.eager_load = true - - # Full error reports are disabled and caching is turned on. - config.consider_all_requests_local = false - config.action_controller.perform_caching = true - - # Disable serving static files from the `/public` folder by default since - # Apache or NGINX already handles this. - config.public_file_server.enabled = 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 - - # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb - - # Enable serving of images, stylesheets, and JavaScripts from an asset server. - # config.action_controller.asset_host = 'http://assets.example.com' - - # 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 - - # Mount Action Cable outside main process or domain - # config.action_cable.mount_path = nil - # config.action_cable.url = 'wss://example.com/cable' - # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ] - - # 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 = [ :request_id ] - - # Use a different cache store in production. - # config.cache_store = :mem_cache_store - - # Use a real queuing backend for Active Job (and separate queues per environment) - # config.active_job.queue_adapter = :resque - # config.active_job.queue_name_prefix = "dummy_#{Rails.env}" - config.action_mailer.perform_caching = false - - # 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 - - # Use a different logger for distributed setups. - # require 'syslog/logger' - # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') - - if ENV["RAILS_LOG_TO_STDOUT"].present? - logger = ActiveSupport::Logger.new(STDOUT) - logger.formatter = config.log_formatter - config.logger = ActiveSupport::TaggedLogging.new(logger) - end - - # Do not dump schema after migrations. - config.active_record.dump_schema_after_migration = false -end diff --git a/spec/dummy/config/environments/test.rb b/spec/dummy/config/environments/test.rb deleted file mode 100644 index 30587ef..0000000 --- a/spec/dummy/config/environments/test.rb +++ /dev/null @@ -1,42 +0,0 @@ -Rails.application.configure do - # Settings specified here will take precedence over those in config/application.rb. - - # The test environment is used exclusively to run your application's - # test suite. You never need to work with it otherwise. Remember that - # your test database is "scratch space" for the test suite and is wiped - # and recreated between test runs. Don't rely on the data there! - config.cache_classes = true - - # Do not eager load code on boot. This avoids loading your whole application - # just for the purpose of running a single test. If you are using a tool that - # preloads Rails for running tests, you may have to set it to true. - config.eager_load = false - - # Configure public file server for tests with Cache-Control for performance. - config.public_file_server.enabled = true - config.public_file_server.headers = { - '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 - config.action_mailer.perform_caching = 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 - - # Print deprecation notices to the stderr. - config.active_support.deprecation = :stderr - - # Raises error for missing translations - # config.action_view.raise_on_missing_translations = true -end diff --git a/spec/dummy/config/initializers/application_controller_renderer.rb b/spec/dummy/config/initializers/application_controller_renderer.rb deleted file mode 100644 index 51639b6..0000000 --- a/spec/dummy/config/initializers/application_controller_renderer.rb +++ /dev/null @@ -1,6 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# ApplicationController.renderer.defaults.merge!( -# http_host: 'example.org', -# https: false -# ) diff --git a/spec/dummy/config/initializers/assets.rb b/spec/dummy/config/initializers/assets.rb deleted file mode 100644 index 01ef3e6..0000000 --- a/spec/dummy/config/initializers/assets.rb +++ /dev/null @@ -1,11 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# Version of your assets, change this if you want to expire all your assets. -Rails.application.config.assets.version = '1.0' - -# Add additional assets to the asset load path -# Rails.application.config.assets.paths << Emoji.images_path - -# Precompile additional assets. -# application.js, application.css, and all non-JS/CSS in app/assets folder are already added. -# Rails.application.config.assets.precompile += %w( search.js ) diff --git a/spec/dummy/config/initializers/backtrace_silencers.rb b/spec/dummy/config/initializers/backtrace_silencers.rb deleted file mode 100644 index 59385cd..0000000 --- a/spec/dummy/config/initializers/backtrace_silencers.rb +++ /dev/null @@ -1,7 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. -# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } - -# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. -# Rails.backtrace_cleaner.remove_silencers! diff --git a/spec/dummy/config/initializers/cookies_serializer.rb b/spec/dummy/config/initializers/cookies_serializer.rb deleted file mode 100644 index 5a6a32d..0000000 --- a/spec/dummy/config/initializers/cookies_serializer.rb +++ /dev/null @@ -1,5 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# Specify a serializer for the signed and encrypted cookie jars. -# Valid options are :json, :marshal, and :hybrid. -Rails.application.config.action_dispatch.cookies_serializer = :json diff --git a/spec/dummy/config/initializers/filter_parameter_logging.rb b/spec/dummy/config/initializers/filter_parameter_logging.rb deleted file mode 100644 index 4a994e1..0000000 --- a/spec/dummy/config/initializers/filter_parameter_logging.rb +++ /dev/null @@ -1,4 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# Configure sensitive parameters which will be filtered from the log file. -Rails.application.config.filter_parameters += [:password] diff --git a/spec/dummy/config/initializers/inflections.rb b/spec/dummy/config/initializers/inflections.rb deleted file mode 100644 index ac033bf..0000000 --- a/spec/dummy/config/initializers/inflections.rb +++ /dev/null @@ -1,16 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# Add new inflection rules using the following format. Inflections -# are locale specific, and you may define rules for as many different -# locales as you wish. All of these examples are active by default: -# ActiveSupport::Inflector.inflections(:en) do |inflect| -# inflect.plural /^(ox)$/i, '\1en' -# inflect.singular /^(ox)en/i, '\1' -# inflect.irregular 'person', 'people' -# inflect.uncountable %w( fish sheep ) -# end - -# These inflection rules are supported but not enabled by default: -# ActiveSupport::Inflector.inflections(:en) do |inflect| -# inflect.acronym 'RESTful' -# end diff --git a/spec/dummy/config/initializers/mime_types.rb b/spec/dummy/config/initializers/mime_types.rb deleted file mode 100644 index dc18996..0000000 --- a/spec/dummy/config/initializers/mime_types.rb +++ /dev/null @@ -1,4 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# Add new mime types for use in respond_to blocks: -# Mime::Type.register "text/richtext", :rtf diff --git a/spec/dummy/config/initializers/new_framework_defaults.rb b/spec/dummy/config/initializers/new_framework_defaults.rb deleted file mode 100644 index 0706caf..0000000 --- a/spec/dummy/config/initializers/new_framework_defaults.rb +++ /dev/null @@ -1,24 +0,0 @@ -# Be sure to restart your server when you modify this file. -# -# This file contains migration options to ease your Rails 5.0 upgrade. -# -# Read the Rails 5.0 release notes for more info on each option. - -# Enable per-form CSRF tokens. Previous versions had false. -Rails.application.config.action_controller.per_form_csrf_tokens = true - -# Enable origin-checking CSRF mitigation. Previous versions had false. -Rails.application.config.action_controller.forgery_protection_origin_check = true - -# Make Ruby 2.4 preserve the timezone of the receiver when calling `to_time`. -# Previous versions had false. -ActiveSupport.to_time_preserves_timezone = true - -# Require `belongs_to` associations by default. Previous versions had false. -Rails.application.config.active_record.belongs_to_required_by_default = true - -# Do not halt callback chains when a callback returns false. Previous versions had true. -ActiveSupport.halt_callback_chains_on_return_false = false - -# Configure SSL options to enable HSTS with subdomains. Previous versions had false. -Rails.application.config.ssl_options = { hsts: { subdomains: true } } diff --git a/spec/dummy/config/initializers/session_store.rb b/spec/dummy/config/initializers/session_store.rb deleted file mode 100644 index e766b67..0000000 --- a/spec/dummy/config/initializers/session_store.rb +++ /dev/null @@ -1,3 +0,0 @@ -# Be sure to restart your server when you modify this file. - -Rails.application.config.session_store :cookie_store, key: '_dummy_session' diff --git a/spec/dummy/config/initializers/wrap_parameters.rb b/spec/dummy/config/initializers/wrap_parameters.rb deleted file mode 100644 index bbfc396..0000000 --- a/spec/dummy/config/initializers/wrap_parameters.rb +++ /dev/null @@ -1,14 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# This file contains settings for ActionController::ParamsWrapper which -# is enabled by default. - -# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. -ActiveSupport.on_load(:action_controller) do - wrap_parameters format: [:json] -end - -# To enable root element in JSON for ActiveRecord objects. -# ActiveSupport.on_load(:active_record) do -# self.include_root_in_json = true -# end diff --git a/spec/dummy/config/locales/en.yml b/spec/dummy/config/locales/en.yml deleted file mode 100644 index 0653957..0000000 --- a/spec/dummy/config/locales/en.yml +++ /dev/null @@ -1,23 +0,0 @@ -# Files in the config/locales directory are used for internationalization -# and are automatically loaded by Rails. If you want to use locales other -# than English, add the necessary files in this directory. -# -# To use the locales, use `I18n.t`: -# -# I18n.t 'hello' -# -# In views, this is aliased to just `t`: -# -# <%= t('hello') %> -# -# To use a different locale, set it with `I18n.locale`: -# -# I18n.locale = :es -# -# This would use the information in config/locales/es.yml. -# -# To learn more, please read the Rails Internationalization guide -# available at http://guides.rubyonrails.org/i18n.html. - -en: - hello: "Hello world" diff --git a/spec/dummy/config/puma.rb b/spec/dummy/config/puma.rb deleted file mode 100644 index c7f311f..0000000 --- a/spec/dummy/config/puma.rb +++ /dev/null @@ -1,47 +0,0 @@ -# Puma can serve each request in a thread from an internal thread pool. -# The `threads` method setting takes two numbers a minimum and maximum. -# Any libraries that use thread pools should be configured to match -# the maximum value specified for Puma. Default is set to 5 threads for minimum -# and maximum, this matches the default thread size of Active Record. -# -threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }.to_i -threads threads_count, threads_count - -# Specifies the `port` that Puma will listen on to receive requests, default is 3000. -# -port ENV.fetch("PORT") { 3000 } - -# Specifies the `environment` that Puma will run in. -# -environment ENV.fetch("RAILS_ENV") { "development" } - -# Specifies the number of `workers` to boot in clustered mode. -# Workers are forked webserver processes. If using threads and workers together -# the concurrency of the application would be max `threads` * `workers`. -# Workers do not work on JRuby or Windows (both of which do not support -# processes). -# -# workers ENV.fetch("WEB_CONCURRENCY") { 2 } - -# Use the `preload_app!` method when specifying a `workers` number. -# This directive tells Puma to first boot the application and load code -# before forking the application. This takes advantage of Copy On Write -# process behavior so workers use less memory. If you use this option -# you need to make sure to reconnect any threads in the `on_worker_boot` -# block. -# -# preload_app! - -# The code in the `on_worker_boot` will be called if you are using -# clustered mode by specifying a number of `workers`. After each worker -# process is booted this block will be run, if you are using `preload_app!` -# option you will want to use this block to reconnect to any threads -# or connections that may have been created at application boot, Ruby -# cannot share connections between processes. -# -# on_worker_boot do -# ActiveRecord::Base.establish_connection if defined?(ActiveRecord) -# end - -# Allow puma to be restarted by `rails restart` command. -plugin :tmp_restart diff --git a/spec/dummy/config/routes.rb b/spec/dummy/config/routes.rb deleted file mode 100644 index c5a0c79..0000000 --- a/spec/dummy/config/routes.rb +++ /dev/null @@ -1,3 +0,0 @@ -Rails.application.routes.draw do - resources :tweets -end diff --git a/spec/dummy/config/secrets.yml b/spec/dummy/config/secrets.yml deleted file mode 100644 index 2048bd5..0000000 --- a/spec/dummy/config/secrets.yml +++ /dev/null @@ -1,22 +0,0 @@ -# Be sure to restart your server when you modify this file. - -# Your secret key is used for verifying the integrity of signed cookies. -# If you change this key, all old signed cookies will become invalid! - -# Make sure the secret is at least 30 characters and all random, -# no regular words or you'll be exposed to dictionary attacks. -# You can use `rails secret` to generate a secure secret key. - -# Make sure the secrets in this file are kept private -# if you're sharing your code publicly. - -development: - secret_key_base: 483b898a551b60b7d10c9680b11b7635041cd0f7a2995bc3078a494dcf80dc7c375b00c113e324397650cc4ee9578083abd2902f2e968651273135a6c94b4a46 - -test: - secret_key_base: 68bee8a4563b42b119a1de203324cd381b22c2c0c59fbf4b224517dea32b67f65abb8c854dde95e52cd77add2e3375a6eb4f86436f085a75413d1b30b606e52c - -# Do not keep production secrets in the repository, -# instead read values from the environment. -production: - secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> diff --git a/spec/dummy/config/spring.rb b/spec/dummy/config/spring.rb deleted file mode 100644 index c9119b4..0000000 --- a/spec/dummy/config/spring.rb +++ /dev/null @@ -1,6 +0,0 @@ -%w( - .ruby-version - .rbenv-vars - tmp/restart.txt - tmp/caching-dev.txt -).each { |path| Spring.watch(path) } diff --git a/spec/dummy/db/development.sqlite3 b/spec/dummy/db/development.sqlite3 deleted file mode 100644 index eca4790829b894c33f9e4a6a8d98800964bada4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40960 zcmeI*Ur*Cq9Ki8*V;fVT=uN|w=P5TXiqH*+e-d@-Vu&~tMz^+5I_I{1Q0;rYzuU6XEUa0>iaK4_f=iCTQX?Ht8@1^OT|h_REqc3OTvm{ zmbh$rHA}3OE2W2}P4Q%N?QwB)TRbXli{e&gW38+XdR!`3M0rCkTkGprh2^^qX^D;- zRCnA!y_XHws}BaMfpkMzbKKApHMJFb4LR6AdpC-XsL%P68S~DZ-o4=YHMtkBobbJr zVasXyj@u4*nt|ihdZFw=r`F03O3#Hga&Jp)l!ethChBy*87t>!PCMVO8%RIwpKtQ? z^Y!;WdcMPo+>>-ehfB*sr zAbT!Fc - - - The page you were looking for doesn't exist (404) - - - - - - -
-
-

The page you were looking for doesn't exist.

-

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

-
-

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

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

The change you wanted was rejected.

-

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

-
-

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

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

We're sorry, but something went wrong.

-
-

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

-
- - diff --git a/spec/dummy/public/apple-touch-icon-precomposed.png b/spec/dummy/public/apple-touch-icon-precomposed.png deleted file mode 100644 index e69de29..0000000 diff --git a/spec/dummy/public/apple-touch-icon.png b/spec/dummy/public/apple-touch-icon.png deleted file mode 100644 index e69de29..0000000 diff --git a/spec/dummy/public/favicon.ico b/spec/dummy/public/favicon.ico deleted file mode 100644 index e69de29..0000000 diff --git a/spec/dummy/tmp/.keep b/spec/dummy/tmp/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/spec/requests/crud_spec.rb b/spec/requests/crud_spec.rb deleted file mode 100644 index fb9a58b..0000000 --- a/spec/requests/crud_spec.rb +++ /dev/null @@ -1,99 +0,0 @@ -require 'rails_helper' - -RSpec.describe 'Basic CRUD', type: :request do - let(:headers) do - { 'ACCEPT' => 'application/vnd.api+json' } - end - - def body - JSON.parse(response.body) - end - - it 'works' do - # Get empty tweets list - get '/tweets', headers: headers - expect(response).to be_success - expect(response).to have_http_status(200) - expect(response.body).to be_valid_jsonapi - expect(response.body).to match_schema do - required(:data).value(eql?: []) - required(:meta).value(eql?: { 'foo' => 'bar' }) - required(:jsonapi).value(eql?: { 'version' => '1.0' }) - required(:links).value(eql?: { 'self' => 'http://foo.bar' }) - end - - # Post first tweet - params = { - data: { - type: 'tweets', - attributes: { - content: 'foo' - }, - relationships: { - author: { - data: { - id: 'foo', - type: 'bar' - } - } - } - } - } - post '/tweets', - params: params, - as: :json, - headers: headers.merge('CONTENT_TYPE' => 'application/vnd.api+json') - expect(response).to be_success - expect(response).to have_http_status(201) - expect(response.body).to be_valid_jsonapi - expect(response.body).to match_schema do - required(:data).schema do - required(:type).value(eql?: 'tweets') - required(:attributes).schema do - required(:content).value(eql?: 'foo') - end - required(:relationships).schema do - required(:author) - end - end - end - first_tweet = body - - # Post second tweet - params = { - data: { - type: 'tweets', - attributes: { - content: 'foo' - } - } - } - post '/tweets', - params: params, - as: :json, - headers: headers.merge('CONTENT_TYPE' => 'application/vnd.api+json') - expect(response).to be_success - expect(response).to have_http_status(201) - expect { JSONAPI.parse_response!(body) }.not_to raise_error - second_tweet = body - - # Get first tweet - get "/tweets/#{first_tweet['data']['id']}", headers: headers - expect(response).to be_success - expect(response).to have_http_status(200) - expect(response.body).to be_valid_jsonapi - expect(body).to eq(first_tweet) - - # Delete first tweet - delete "/tweets/#{first_tweet['data']['id']}" - expect(response).to be_success - expect(response).to have_http_status(204) - - # List remaining tweets - get '/tweets' - expect(response).to be_success - expect(response).to have_http_status(200) - expect(response.body).to be_valid_jsonapi - expect(body['data'].first).to eq(second_tweet['data']) - end -end From 871575eb72ef906cd1ba0d1c40913522d563caa4 Mon Sep 17 00:00:00 2001 From: Lucas Date: Sat, 15 Jul 2017 06:14:21 +0200 Subject: [PATCH 4/5] Please rubocop. --- spec/action_controller_spec.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/action_controller_spec.rb b/spec/action_controller_spec.rb index 16080a2..7c3842f 100644 --- a/spec/action_controller_spec.rb +++ b/spec/action_controller_spec.rb @@ -57,7 +57,8 @@ def index 'data' => { 'id' => '1', 'type' => 'users', - 'attributes' => { 'name' => 'Lucas' } } + 'attributes' => { 'name' => 'Lucas' } + } } end From ede448bbe761cc4a7a009e41312c76c3e72ac1e6 Mon Sep 17 00:00:00 2001 From: Lucas Date: Sat, 15 Jul 2017 06:24:18 +0200 Subject: [PATCH 5/5] Add clean dummy app. --- .gitignore | 4 + jsonapi-rails.gemspec | 1 - spec/dummy/Rakefile | 6 ++ spec/dummy/app/assets/config/manifest.js | 4 + spec/dummy/app/assets/images/.keep | 0 .../app/assets/javascripts/application.js | 13 +++ spec/dummy/app/assets/javascripts/cable.js | 13 +++ .../app/assets/javascripts/channels/.keep | 0 .../app/assets/stylesheets/application.css | 15 +++ .../app/channels/application_cable/channel.rb | 4 + .../channels/application_cable/connection.rb | 4 + .../app/controllers/application_controller.rb | 3 + spec/dummy/app/controllers/concerns/.keep | 0 spec/dummy/app/helpers/application_helper.rb | 2 + spec/dummy/app/jobs/application_job.rb | 2 + spec/dummy/app/mailers/application_mailer.rb | 4 + spec/dummy/app/models/application_record.rb | 3 + spec/dummy/app/models/concerns/.keep | 0 .../app/views/layouts/application.html.erb | 14 +++ spec/dummy/app/views/layouts/mailer.html.erb | 13 +++ spec/dummy/app/views/layouts/mailer.text.erb | 1 + spec/dummy/bin/bundle | 3 + spec/dummy/bin/rails | 4 + spec/dummy/bin/rake | 4 + spec/dummy/bin/setup | 34 ++++++ spec/dummy/bin/update | 29 +++++ spec/dummy/config.ru | 5 + spec/dummy/config/application.rb | 15 +++ spec/dummy/config/boot.rb | 5 + spec/dummy/config/cable.yml | 9 ++ spec/dummy/config/database.yml | 25 +++++ spec/dummy/config/environment.rb | 5 + spec/dummy/config/environments/development.rb | 54 ++++++++++ spec/dummy/config/environments/production.rb | 86 +++++++++++++++ spec/dummy/config/environments/test.rb | 42 ++++++++ .../application_controller_renderer.rb | 6 ++ spec/dummy/config/initializers/assets.rb | 11 ++ .../initializers/backtrace_silencers.rb | 7 ++ .../config/initializers/cookies_serializer.rb | 5 + .../initializers/filter_parameter_logging.rb | 4 + spec/dummy/config/initializers/inflections.rb | 16 +++ spec/dummy/config/initializers/mime_types.rb | 4 + .../initializers/new_framework_defaults.rb | 24 +++++ .../config/initializers/session_store.rb | 3 + .../config/initializers/wrap_parameters.rb | 14 +++ spec/dummy/config/locales/en.yml | 23 ++++ spec/dummy/config/puma.rb | 47 ++++++++ spec/dummy/config/routes.rb | 3 + spec/dummy/config/secrets.yml | 22 ++++ spec/dummy/config/spring.rb | 6 ++ spec/dummy/db/development.sqlite3 | Bin 0 -> 40960 bytes .../migrate/20161120191133_create_tweets.rb | 11 ++ .../db/migrate/20161120191438_create_users.rb | 10 ++ spec/dummy/db/schema.rb | 32 ++++++ spec/dummy/lib/assets/.keep | 0 spec/dummy/log/.keep | 0 spec/dummy/log/development.log | 100 ++++++++++++++++++ spec/dummy/public/404.html | 67 ++++++++++++ spec/dummy/public/422.html | 67 ++++++++++++ spec/dummy/public/500.html | 66 ++++++++++++ .../public/apple-touch-icon-precomposed.png | 0 spec/dummy/public/apple-touch-icon.png | 0 spec/dummy/public/favicon.ico | 0 spec/dummy/tmp/.keep | 0 spec/rails_helper.rb | 38 ------- 65 files changed, 973 insertions(+), 39 deletions(-) create mode 100644 spec/dummy/Rakefile create mode 100644 spec/dummy/app/assets/config/manifest.js create mode 100644 spec/dummy/app/assets/images/.keep create mode 100644 spec/dummy/app/assets/javascripts/application.js create mode 100644 spec/dummy/app/assets/javascripts/cable.js create mode 100644 spec/dummy/app/assets/javascripts/channels/.keep create mode 100644 spec/dummy/app/assets/stylesheets/application.css create mode 100644 spec/dummy/app/channels/application_cable/channel.rb create mode 100644 spec/dummy/app/channels/application_cable/connection.rb create mode 100644 spec/dummy/app/controllers/application_controller.rb create mode 100644 spec/dummy/app/controllers/concerns/.keep create mode 100644 spec/dummy/app/helpers/application_helper.rb create mode 100644 spec/dummy/app/jobs/application_job.rb create mode 100644 spec/dummy/app/mailers/application_mailer.rb create mode 100644 spec/dummy/app/models/application_record.rb create mode 100644 spec/dummy/app/models/concerns/.keep create mode 100644 spec/dummy/app/views/layouts/application.html.erb create mode 100644 spec/dummy/app/views/layouts/mailer.html.erb create mode 100644 spec/dummy/app/views/layouts/mailer.text.erb create mode 100755 spec/dummy/bin/bundle create mode 100755 spec/dummy/bin/rails create mode 100755 spec/dummy/bin/rake create mode 100755 spec/dummy/bin/setup create mode 100755 spec/dummy/bin/update create mode 100644 spec/dummy/config.ru create mode 100644 spec/dummy/config/application.rb create mode 100644 spec/dummy/config/boot.rb create mode 100644 spec/dummy/config/cable.yml create mode 100644 spec/dummy/config/database.yml create mode 100644 spec/dummy/config/environment.rb create mode 100644 spec/dummy/config/environments/development.rb create mode 100644 spec/dummy/config/environments/production.rb create mode 100644 spec/dummy/config/environments/test.rb create mode 100644 spec/dummy/config/initializers/application_controller_renderer.rb create mode 100644 spec/dummy/config/initializers/assets.rb create mode 100644 spec/dummy/config/initializers/backtrace_silencers.rb create mode 100644 spec/dummy/config/initializers/cookies_serializer.rb create mode 100644 spec/dummy/config/initializers/filter_parameter_logging.rb create mode 100644 spec/dummy/config/initializers/inflections.rb create mode 100644 spec/dummy/config/initializers/mime_types.rb create mode 100644 spec/dummy/config/initializers/new_framework_defaults.rb create mode 100644 spec/dummy/config/initializers/session_store.rb create mode 100644 spec/dummy/config/initializers/wrap_parameters.rb create mode 100644 spec/dummy/config/locales/en.yml create mode 100644 spec/dummy/config/puma.rb create mode 100644 spec/dummy/config/routes.rb create mode 100644 spec/dummy/config/secrets.yml create mode 100644 spec/dummy/config/spring.rb create mode 100644 spec/dummy/db/development.sqlite3 create mode 100644 spec/dummy/db/migrate/20161120191133_create_tweets.rb create mode 100644 spec/dummy/db/migrate/20161120191438_create_users.rb create mode 100644 spec/dummy/db/schema.rb create mode 100644 spec/dummy/lib/assets/.keep create mode 100644 spec/dummy/log/.keep create mode 100644 spec/dummy/log/development.log create mode 100644 spec/dummy/public/404.html create mode 100644 spec/dummy/public/422.html create mode 100644 spec/dummy/public/500.html create mode 100644 spec/dummy/public/apple-touch-icon-precomposed.png create mode 100644 spec/dummy/public/apple-touch-icon.png create mode 100644 spec/dummy/public/favicon.ico create mode 100644 spec/dummy/tmp/.keep diff --git a/.gitignore b/.gitignore index b8ce16c..0e71773 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,10 @@ /test/version_tmp/ /tmp/ +## Dummy app temp files: +/spec/dummy/db +/spec/dummy/log + ## Specific to RubyMotion: .dat* .repl_history diff --git a/jsonapi-rails.gemspec b/jsonapi-rails.gemspec index 656a00b..3a38e72 100644 --- a/jsonapi-rails.gemspec +++ b/jsonapi-rails.gemspec @@ -20,5 +20,4 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'sqlite3' spec.add_development_dependency 'rake', '~> 11.3' spec.add_development_dependency 'rspec-rails', '~> 3.5' - spec.add_development_dependency 'dry-validation', '~> 0.10' end diff --git a/spec/dummy/Rakefile b/spec/dummy/Rakefile new file mode 100644 index 0000000..e85f913 --- /dev/null +++ b/spec/dummy/Rakefile @@ -0,0 +1,6 @@ +# Add your own tasks in files placed in lib/tasks ending in .rake, +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. + +require_relative 'config/application' + +Rails.application.load_tasks diff --git a/spec/dummy/app/assets/config/manifest.js b/spec/dummy/app/assets/config/manifest.js new file mode 100644 index 0000000..c8e290c --- /dev/null +++ b/spec/dummy/app/assets/config/manifest.js @@ -0,0 +1,4 @@ + +//= link_tree ../images +//= link_directory ../javascripts .js +//= link_directory ../stylesheets .css diff --git a/spec/dummy/app/assets/images/.keep b/spec/dummy/app/assets/images/.keep new file mode 100644 index 0000000..e69de29 diff --git a/spec/dummy/app/assets/javascripts/application.js b/spec/dummy/app/assets/javascripts/application.js new file mode 100644 index 0000000..e54c646 --- /dev/null +++ b/spec/dummy/app/assets/javascripts/application.js @@ -0,0 +1,13 @@ +// 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. JavaScript code in this file should be added after the last require_* statement. +// +// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details +// about supported directives. +// +//= require_tree . diff --git a/spec/dummy/app/assets/javascripts/cable.js b/spec/dummy/app/assets/javascripts/cable.js new file mode 100644 index 0000000..71ee1e6 --- /dev/null +++ b/spec/dummy/app/assets/javascripts/cable.js @@ -0,0 +1,13 @@ +// Action Cable provides the framework to deal with WebSockets in Rails. +// You can generate new channels where WebSocket features live using the rails generate channel command. +// +//= require action_cable +//= require_self +//= require_tree ./channels + +(function() { + this.App || (this.App = {}); + + App.cable = ActionCable.createConsumer(); + +}).call(this); diff --git a/spec/dummy/app/assets/javascripts/channels/.keep b/spec/dummy/app/assets/javascripts/channels/.keep new file mode 100644 index 0000000..e69de29 diff --git a/spec/dummy/app/assets/stylesheets/application.css b/spec/dummy/app/assets/stylesheets/application.css new file mode 100644 index 0000000..0ebd7fe --- /dev/null +++ b/spec/dummy/app/assets/stylesheets/application.css @@ -0,0 +1,15 @@ +/* + * This is a manifest file that'll be compiled into application.css, which will include all the files + * listed below. + * + * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, + * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path. + * + * You're free to add application-wide styles to this file and they'll appear at the bottom of the + * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS + * files in this directory. Styles in this file should be added after the last require_* statement. + * It is generally better to create a new file per style scope. + * + *= require_tree . + *= require_self + */ diff --git a/spec/dummy/app/channels/application_cable/channel.rb b/spec/dummy/app/channels/application_cable/channel.rb new file mode 100644 index 0000000..d672697 --- /dev/null +++ b/spec/dummy/app/channels/application_cable/channel.rb @@ -0,0 +1,4 @@ +module ApplicationCable + class Channel < ActionCable::Channel::Base + end +end diff --git a/spec/dummy/app/channels/application_cable/connection.rb b/spec/dummy/app/channels/application_cable/connection.rb new file mode 100644 index 0000000..0ff5442 --- /dev/null +++ b/spec/dummy/app/channels/application_cable/connection.rb @@ -0,0 +1,4 @@ +module ApplicationCable + class Connection < ActionCable::Connection::Base + end +end diff --git a/spec/dummy/app/controllers/application_controller.rb b/spec/dummy/app/controllers/application_controller.rb new file mode 100644 index 0000000..1c07694 --- /dev/null +++ b/spec/dummy/app/controllers/application_controller.rb @@ -0,0 +1,3 @@ +class ApplicationController < ActionController::Base + protect_from_forgery with: :exception +end diff --git a/spec/dummy/app/controllers/concerns/.keep b/spec/dummy/app/controllers/concerns/.keep new file mode 100644 index 0000000..e69de29 diff --git a/spec/dummy/app/helpers/application_helper.rb b/spec/dummy/app/helpers/application_helper.rb new file mode 100644 index 0000000..de6be79 --- /dev/null +++ b/spec/dummy/app/helpers/application_helper.rb @@ -0,0 +1,2 @@ +module ApplicationHelper +end diff --git a/spec/dummy/app/jobs/application_job.rb b/spec/dummy/app/jobs/application_job.rb new file mode 100644 index 0000000..a009ace --- /dev/null +++ b/spec/dummy/app/jobs/application_job.rb @@ -0,0 +1,2 @@ +class ApplicationJob < ActiveJob::Base +end diff --git a/spec/dummy/app/mailers/application_mailer.rb b/spec/dummy/app/mailers/application_mailer.rb new file mode 100644 index 0000000..286b223 --- /dev/null +++ b/spec/dummy/app/mailers/application_mailer.rb @@ -0,0 +1,4 @@ +class ApplicationMailer < ActionMailer::Base + default from: 'from@example.com' + layout 'mailer' +end diff --git a/spec/dummy/app/models/application_record.rb b/spec/dummy/app/models/application_record.rb new file mode 100644 index 0000000..10a4cba --- /dev/null +++ b/spec/dummy/app/models/application_record.rb @@ -0,0 +1,3 @@ +class ApplicationRecord < ActiveRecord::Base + self.abstract_class = true +end diff --git a/spec/dummy/app/models/concerns/.keep b/spec/dummy/app/models/concerns/.keep new file mode 100644 index 0000000..e69de29 diff --git a/spec/dummy/app/views/layouts/application.html.erb b/spec/dummy/app/views/layouts/application.html.erb new file mode 100644 index 0000000..a3740a2 --- /dev/null +++ b/spec/dummy/app/views/layouts/application.html.erb @@ -0,0 +1,14 @@ + + + + Dummy + <%= csrf_meta_tags %> + + <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> + <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> + + + + <%= yield %> + + diff --git a/spec/dummy/app/views/layouts/mailer.html.erb b/spec/dummy/app/views/layouts/mailer.html.erb new file mode 100644 index 0000000..cbd34d2 --- /dev/null +++ b/spec/dummy/app/views/layouts/mailer.html.erb @@ -0,0 +1,13 @@ + + + + + + + + + <%= yield %> + + diff --git a/spec/dummy/app/views/layouts/mailer.text.erb b/spec/dummy/app/views/layouts/mailer.text.erb new file mode 100644 index 0000000..37f0bdd --- /dev/null +++ b/spec/dummy/app/views/layouts/mailer.text.erb @@ -0,0 +1 @@ +<%= yield %> diff --git a/spec/dummy/bin/bundle b/spec/dummy/bin/bundle new file mode 100755 index 0000000..66e9889 --- /dev/null +++ b/spec/dummy/bin/bundle @@ -0,0 +1,3 @@ +#!/usr/bin/env ruby +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) +load Gem.bin_path('bundler', 'bundle') diff --git a/spec/dummy/bin/rails b/spec/dummy/bin/rails new file mode 100755 index 0000000..0739660 --- /dev/null +++ b/spec/dummy/bin/rails @@ -0,0 +1,4 @@ +#!/usr/bin/env ruby +APP_PATH = File.expand_path('../config/application', __dir__) +require_relative '../config/boot' +require 'rails/commands' diff --git a/spec/dummy/bin/rake b/spec/dummy/bin/rake new file mode 100755 index 0000000..1724048 --- /dev/null +++ b/spec/dummy/bin/rake @@ -0,0 +1,4 @@ +#!/usr/bin/env ruby +require_relative '../config/boot' +require 'rake' +Rake.application.run diff --git a/spec/dummy/bin/setup b/spec/dummy/bin/setup new file mode 100755 index 0000000..e620b4d --- /dev/null +++ b/spec/dummy/bin/setup @@ -0,0 +1,34 @@ +#!/usr/bin/env ruby +require 'pathname' +require 'fileutils' +include FileUtils + +# path to your application root. +APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) + +def system!(*args) + system(*args) || abort("\n== Command #{args} failed ==") +end + +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') || system!('bundle install') + + # puts "\n== Copying sample files ==" + # unless File.exist?('config/database.yml') + # cp 'config/database.yml.sample', 'config/database.yml' + # end + + puts "\n== Preparing database ==" + system! 'bin/rails db:setup' + + puts "\n== Removing old logs and tempfiles ==" + system! 'bin/rails log:clear tmp:clear' + + puts "\n== Restarting application server ==" + system! 'bin/rails restart' +end diff --git a/spec/dummy/bin/update b/spec/dummy/bin/update new file mode 100755 index 0000000..a8e4462 --- /dev/null +++ b/spec/dummy/bin/update @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +require 'pathname' +require 'fileutils' +include FileUtils + +# path to your application root. +APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) + +def system!(*args) + system(*args) || abort("\n== Command #{args} failed ==") +end + +chdir APP_ROOT do + # This script is a way to update your development environment automatically. + # Add necessary update steps to this file. + + puts '== Installing dependencies ==' + system! 'gem install bundler --conservative' + system('bundle check') || system!('bundle install') + + puts "\n== Updating database ==" + system! 'bin/rails db:migrate' + + puts "\n== Removing old logs and tempfiles ==" + system! 'bin/rails log:clear tmp:clear' + + puts "\n== Restarting application server ==" + system! 'bin/rails restart' +end diff --git a/spec/dummy/config.ru b/spec/dummy/config.ru new file mode 100644 index 0000000..f7ba0b5 --- /dev/null +++ b/spec/dummy/config.ru @@ -0,0 +1,5 @@ +# This file is used by Rack-based servers to start the application. + +require_relative 'config/environment' + +run Rails.application diff --git a/spec/dummy/config/application.rb b/spec/dummy/config/application.rb new file mode 100644 index 0000000..df320c7 --- /dev/null +++ b/spec/dummy/config/application.rb @@ -0,0 +1,15 @@ +require_relative 'boot' + +require 'rails/all' + +Bundler.require(*Rails.groups) +require "jsonapi/rails" + +module Dummy + 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. + end +end + diff --git a/spec/dummy/config/boot.rb b/spec/dummy/config/boot.rb new file mode 100644 index 0000000..c9aef85 --- /dev/null +++ b/spec/dummy/config/boot.rb @@ -0,0 +1,5 @@ +# Set up gems listed in the Gemfile. +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../Gemfile', __dir__) + +require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) +$LOAD_PATH.unshift File.expand_path('../../../lib', __dir__) diff --git a/spec/dummy/config/cable.yml b/spec/dummy/config/cable.yml new file mode 100644 index 0000000..0bbde6f --- /dev/null +++ b/spec/dummy/config/cable.yml @@ -0,0 +1,9 @@ +development: + adapter: async + +test: + adapter: async + +production: + adapter: redis + url: redis://localhost:6379/1 diff --git a/spec/dummy/config/database.yml b/spec/dummy/config/database.yml new file mode 100644 index 0000000..1c1a37c --- /dev/null +++ b/spec/dummy/config/database.yml @@ -0,0 +1,25 @@ +# SQLite version 3.x +# gem install sqlite3 +# +# Ensure the SQLite 3 gem is defined in your Gemfile +# gem 'sqlite3' +# +default: &default + adapter: sqlite3 + pool: 5 + timeout: 5000 + +development: + <<: *default + database: db/development.sqlite3 + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: + <<: *default + database: db/test.sqlite3 + +production: + <<: *default + database: db/production.sqlite3 diff --git a/spec/dummy/config/environment.rb b/spec/dummy/config/environment.rb new file mode 100644 index 0000000..426333b --- /dev/null +++ b/spec/dummy/config/environment.rb @@ -0,0 +1,5 @@ +# Load the Rails application. +require_relative 'application' + +# Initialize the Rails application. +Rails.application.initialize! diff --git a/spec/dummy/config/environments/development.rb b/spec/dummy/config/environments/development.rb new file mode 100644 index 0000000..e64889c --- /dev/null +++ b/spec/dummy/config/environments/development.rb @@ -0,0 +1,54 @@ +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. + config.consider_all_requests_local = true + + # Enable/disable caching. By default caching is disabled. + if Rails.root.join('tmp/caching-dev.txt').exist? + config.action_controller.perform_caching = true + + config.cache_store = :memory_store + config.public_file_server.headers = { + 'Cache-Control' => 'public, max-age=172800' + } + else + config.action_controller.perform_caching = false + + config.cache_store = :null_store + end + + # Don't care if the mailer can't send. + config.action_mailer.raise_delivery_errors = false + + config.action_mailer.perform_caching = 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 + + # Suppress logger output for asset requests. + config.assets.quiet = true + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true + + # Use an evented file watcher to asynchronously detect changes in source code, + # routes, locales, etc. This feature depends on the listen gem. + # config.file_watcher = ActiveSupport::EventedFileUpdateChecker +end diff --git a/spec/dummy/config/environments/production.rb b/spec/dummy/config/environments/production.rb new file mode 100644 index 0000000..739e81c --- /dev/null +++ b/spec/dummy/config/environments/production.rb @@ -0,0 +1,86 @@ +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 + + # Disable serving static files from the `/public` folder by default since + # Apache or NGINX already handles this. + config.public_file_server.enabled = 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 + + # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb + + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.action_controller.asset_host = 'http://assets.example.com' + + # 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 + + # Mount Action Cable outside main process or domain + # config.action_cable.mount_path = nil + # config.action_cable.url = 'wss://example.com/cable' + # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ] + + # 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 = [ :request_id ] + + # Use a different cache store in production. + # config.cache_store = :mem_cache_store + + # Use a real queuing backend for Active Job (and separate queues per environment) + # config.active_job.queue_adapter = :resque + # config.active_job.queue_name_prefix = "dummy_#{Rails.env}" + config.action_mailer.perform_caching = false + + # 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 + + # Use a different logger for distributed setups. + # require 'syslog/logger' + # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') + + if ENV["RAILS_LOG_TO_STDOUT"].present? + logger = ActiveSupport::Logger.new(STDOUT) + logger.formatter = config.log_formatter + config.logger = ActiveSupport::TaggedLogging.new(logger) + end + + # Do not dump schema after migrations. + config.active_record.dump_schema_after_migration = false +end diff --git a/spec/dummy/config/environments/test.rb b/spec/dummy/config/environments/test.rb new file mode 100644 index 0000000..30587ef --- /dev/null +++ b/spec/dummy/config/environments/test.rb @@ -0,0 +1,42 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # The test environment is used exclusively to run your application's + # test suite. You never need to work with it otherwise. Remember that + # your test database is "scratch space" for the test suite and is wiped + # and recreated between test runs. Don't rely on the data there! + config.cache_classes = true + + # Do not eager load code on boot. This avoids loading your whole application + # just for the purpose of running a single test. If you are using a tool that + # preloads Rails for running tests, you may have to set it to true. + config.eager_load = false + + # Configure public file server for tests with Cache-Control for performance. + config.public_file_server.enabled = true + config.public_file_server.headers = { + '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 + config.action_mailer.perform_caching = 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 + + # Print deprecation notices to the stderr. + config.active_support.deprecation = :stderr + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true +end diff --git a/spec/dummy/config/initializers/application_controller_renderer.rb b/spec/dummy/config/initializers/application_controller_renderer.rb new file mode 100644 index 0000000..51639b6 --- /dev/null +++ b/spec/dummy/config/initializers/application_controller_renderer.rb @@ -0,0 +1,6 @@ +# Be sure to restart your server when you modify this file. + +# ApplicationController.renderer.defaults.merge!( +# http_host: 'example.org', +# https: false +# ) diff --git a/spec/dummy/config/initializers/assets.rb b/spec/dummy/config/initializers/assets.rb new file mode 100644 index 0000000..01ef3e6 --- /dev/null +++ b/spec/dummy/config/initializers/assets.rb @@ -0,0 +1,11 @@ +# Be sure to restart your server when you modify this file. + +# Version of your assets, change this if you want to expire all your assets. +Rails.application.config.assets.version = '1.0' + +# Add additional assets to the asset load path +# Rails.application.config.assets.paths << Emoji.images_path + +# Precompile additional assets. +# application.js, application.css, and all non-JS/CSS in app/assets folder are already added. +# Rails.application.config.assets.precompile += %w( search.js ) diff --git a/spec/dummy/config/initializers/backtrace_silencers.rb b/spec/dummy/config/initializers/backtrace_silencers.rb new file mode 100644 index 0000000..59385cd --- /dev/null +++ b/spec/dummy/config/initializers/backtrace_silencers.rb @@ -0,0 +1,7 @@ +# Be sure to restart your server when you modify this file. + +# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. +# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } + +# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. +# Rails.backtrace_cleaner.remove_silencers! diff --git a/spec/dummy/config/initializers/cookies_serializer.rb b/spec/dummy/config/initializers/cookies_serializer.rb new file mode 100644 index 0000000..5a6a32d --- /dev/null +++ b/spec/dummy/config/initializers/cookies_serializer.rb @@ -0,0 +1,5 @@ +# Be sure to restart your server when you modify this file. + +# Specify a serializer for the signed and encrypted cookie jars. +# Valid options are :json, :marshal, and :hybrid. +Rails.application.config.action_dispatch.cookies_serializer = :json diff --git a/spec/dummy/config/initializers/filter_parameter_logging.rb b/spec/dummy/config/initializers/filter_parameter_logging.rb new file mode 100644 index 0000000..4a994e1 --- /dev/null +++ b/spec/dummy/config/initializers/filter_parameter_logging.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Configure sensitive parameters which will be filtered from the log file. +Rails.application.config.filter_parameters += [:password] diff --git a/spec/dummy/config/initializers/inflections.rb b/spec/dummy/config/initializers/inflections.rb new file mode 100644 index 0000000..ac033bf --- /dev/null +++ b/spec/dummy/config/initializers/inflections.rb @@ -0,0 +1,16 @@ +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format. Inflections +# are locale specific, and you may define rules for as many different +# locales as you wish. All of these examples are active by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.plural /^(ox)$/i, '\1en' +# inflect.singular /^(ox)en/i, '\1' +# inflect.irregular 'person', 'people' +# inflect.uncountable %w( fish sheep ) +# end + +# These inflection rules are supported but not enabled by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.acronym 'RESTful' +# end diff --git a/spec/dummy/config/initializers/mime_types.rb b/spec/dummy/config/initializers/mime_types.rb new file mode 100644 index 0000000..dc18996 --- /dev/null +++ b/spec/dummy/config/initializers/mime_types.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Add new mime types for use in respond_to blocks: +# Mime::Type.register "text/richtext", :rtf diff --git a/spec/dummy/config/initializers/new_framework_defaults.rb b/spec/dummy/config/initializers/new_framework_defaults.rb new file mode 100644 index 0000000..0706caf --- /dev/null +++ b/spec/dummy/config/initializers/new_framework_defaults.rb @@ -0,0 +1,24 @@ +# Be sure to restart your server when you modify this file. +# +# This file contains migration options to ease your Rails 5.0 upgrade. +# +# Read the Rails 5.0 release notes for more info on each option. + +# Enable per-form CSRF tokens. Previous versions had false. +Rails.application.config.action_controller.per_form_csrf_tokens = true + +# Enable origin-checking CSRF mitigation. Previous versions had false. +Rails.application.config.action_controller.forgery_protection_origin_check = true + +# Make Ruby 2.4 preserve the timezone of the receiver when calling `to_time`. +# Previous versions had false. +ActiveSupport.to_time_preserves_timezone = true + +# Require `belongs_to` associations by default. Previous versions had false. +Rails.application.config.active_record.belongs_to_required_by_default = true + +# Do not halt callback chains when a callback returns false. Previous versions had true. +ActiveSupport.halt_callback_chains_on_return_false = false + +# Configure SSL options to enable HSTS with subdomains. Previous versions had false. +Rails.application.config.ssl_options = { hsts: { subdomains: true } } diff --git a/spec/dummy/config/initializers/session_store.rb b/spec/dummy/config/initializers/session_store.rb new file mode 100644 index 0000000..e766b67 --- /dev/null +++ b/spec/dummy/config/initializers/session_store.rb @@ -0,0 +1,3 @@ +# Be sure to restart your server when you modify this file. + +Rails.application.config.session_store :cookie_store, key: '_dummy_session' diff --git a/spec/dummy/config/initializers/wrap_parameters.rb b/spec/dummy/config/initializers/wrap_parameters.rb new file mode 100644 index 0000000..bbfc396 --- /dev/null +++ b/spec/dummy/config/initializers/wrap_parameters.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. + +# This file contains settings for ActionController::ParamsWrapper which +# is enabled by default. + +# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. +ActiveSupport.on_load(:action_controller) do + wrap_parameters format: [:json] +end + +# To enable root element in JSON for ActiveRecord objects. +# ActiveSupport.on_load(:active_record) do +# self.include_root_in_json = true +# end diff --git a/spec/dummy/config/locales/en.yml b/spec/dummy/config/locales/en.yml new file mode 100644 index 0000000..0653957 --- /dev/null +++ b/spec/dummy/config/locales/en.yml @@ -0,0 +1,23 @@ +# Files in the config/locales directory are used for internationalization +# and are automatically loaded by Rails. If you want to use locales other +# than English, add the necessary files in this directory. +# +# To use the locales, use `I18n.t`: +# +# I18n.t 'hello' +# +# In views, this is aliased to just `t`: +# +# <%= t('hello') %> +# +# To use a different locale, set it with `I18n.locale`: +# +# I18n.locale = :es +# +# This would use the information in config/locales/es.yml. +# +# To learn more, please read the Rails Internationalization guide +# available at http://guides.rubyonrails.org/i18n.html. + +en: + hello: "Hello world" diff --git a/spec/dummy/config/puma.rb b/spec/dummy/config/puma.rb new file mode 100644 index 0000000..c7f311f --- /dev/null +++ b/spec/dummy/config/puma.rb @@ -0,0 +1,47 @@ +# Puma can serve each request in a thread from an internal thread pool. +# The `threads` method setting takes two numbers a minimum and maximum. +# Any libraries that use thread pools should be configured to match +# the maximum value specified for Puma. Default is set to 5 threads for minimum +# and maximum, this matches the default thread size of Active Record. +# +threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }.to_i +threads threads_count, threads_count + +# Specifies the `port` that Puma will listen on to receive requests, default is 3000. +# +port ENV.fetch("PORT") { 3000 } + +# Specifies the `environment` that Puma will run in. +# +environment ENV.fetch("RAILS_ENV") { "development" } + +# Specifies the number of `workers` to boot in clustered mode. +# Workers are forked webserver processes. If using threads and workers together +# the concurrency of the application would be max `threads` * `workers`. +# Workers do not work on JRuby or Windows (both of which do not support +# processes). +# +# workers ENV.fetch("WEB_CONCURRENCY") { 2 } + +# Use the `preload_app!` method when specifying a `workers` number. +# This directive tells Puma to first boot the application and load code +# before forking the application. This takes advantage of Copy On Write +# process behavior so workers use less memory. If you use this option +# you need to make sure to reconnect any threads in the `on_worker_boot` +# block. +# +# preload_app! + +# The code in the `on_worker_boot` will be called if you are using +# clustered mode by specifying a number of `workers`. After each worker +# process is booted this block will be run, if you are using `preload_app!` +# option you will want to use this block to reconnect to any threads +# or connections that may have been created at application boot, Ruby +# cannot share connections between processes. +# +# on_worker_boot do +# ActiveRecord::Base.establish_connection if defined?(ActiveRecord) +# end + +# Allow puma to be restarted by `rails restart` command. +plugin :tmp_restart diff --git a/spec/dummy/config/routes.rb b/spec/dummy/config/routes.rb new file mode 100644 index 0000000..c5a0c79 --- /dev/null +++ b/spec/dummy/config/routes.rb @@ -0,0 +1,3 @@ +Rails.application.routes.draw do + resources :tweets +end diff --git a/spec/dummy/config/secrets.yml b/spec/dummy/config/secrets.yml new file mode 100644 index 0000000..2048bd5 --- /dev/null +++ b/spec/dummy/config/secrets.yml @@ -0,0 +1,22 @@ +# Be sure to restart your server when you modify this file. + +# Your secret key is used for verifying the integrity of signed cookies. +# If you change this key, all old signed cookies will become invalid! + +# Make sure the secret is at least 30 characters and all random, +# no regular words or you'll be exposed to dictionary attacks. +# You can use `rails secret` to generate a secure secret key. + +# Make sure the secrets in this file are kept private +# if you're sharing your code publicly. + +development: + secret_key_base: 483b898a551b60b7d10c9680b11b7635041cd0f7a2995bc3078a494dcf80dc7c375b00c113e324397650cc4ee9578083abd2902f2e968651273135a6c94b4a46 + +test: + secret_key_base: 68bee8a4563b42b119a1de203324cd381b22c2c0c59fbf4b224517dea32b67f65abb8c854dde95e52cd77add2e3375a6eb4f86436f085a75413d1b30b606e52c + +# Do not keep production secrets in the repository, +# instead read values from the environment. +production: + secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> diff --git a/spec/dummy/config/spring.rb b/spec/dummy/config/spring.rb new file mode 100644 index 0000000..c9119b4 --- /dev/null +++ b/spec/dummy/config/spring.rb @@ -0,0 +1,6 @@ +%w( + .ruby-version + .rbenv-vars + tmp/restart.txt + tmp/caching-dev.txt +).each { |path| Spring.watch(path) } diff --git a/spec/dummy/db/development.sqlite3 b/spec/dummy/db/development.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..eca4790829b894c33f9e4a6a8d98800964bada4c GIT binary patch literal 40960 zcmeI*Ur*Cq9Ki8*V;fVT=uN|w=P5TXiqH*+e-d@-Vu&~tMz^+5I_I{1Q0;rYzuU6XEUa0>iaK4_f=iCTQX?Ht8@1^OT|h_REqc3OTvm{ zmbh$rHA}3OE2W2}P4Q%N?QwB)TRbXli{e&gW38+XdR!`3M0rCkTkGprh2^^qX^D;- zRCnA!y_XHws}BaMfpkMzbKKApHMJFb4LR6AdpC-XsL%P68S~DZ-o4=YHMtkBobbJr zVasXyj@u4*nt|ihdZFw=r`F03O3#Hga&Jp)l!ethChBy*87t>!PCMVO8%RIwpKtQ? z^Y!;WdcMPo+>>-ehfB*sr zAbT!Fc + + + The page you were looking for doesn't exist (404) + + + + + + +
+
+

The page you were looking for doesn't exist.

+

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

+
+

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

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

The change you wanted was rejected.

+

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

+
+

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

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

We're sorry, but something went wrong.

+
+

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

+
+ + diff --git a/spec/dummy/public/apple-touch-icon-precomposed.png b/spec/dummy/public/apple-touch-icon-precomposed.png new file mode 100644 index 0000000..e69de29 diff --git a/spec/dummy/public/apple-touch-icon.png b/spec/dummy/public/apple-touch-icon.png new file mode 100644 index 0000000..e69de29 diff --git a/spec/dummy/public/favicon.ico b/spec/dummy/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/spec/dummy/tmp/.keep b/spec/dummy/tmp/.keep new file mode 100644 index 0000000..e69de29 diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 736d6e8..17e25b6 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -6,7 +6,6 @@ require 'spec_helper' require 'rspec/rails' # Add additional requires below this line. Rails is not loaded until this point! -require 'dry-validation' # Requires supporting ruby files with custom matchers and macros, etc, in # spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are @@ -56,40 +55,3 @@ # arbitrary gems may also be filtered via: # config.filter_gems_from_backtrace("gem name") end - -# Custom RSpec matchers -module JSONAPI - module RSpec - class BeValidJsonapiMatcher - def matches?(body) - JSONAPI.parse_response!(JSON.parse(body)) - true - end - end - - def be_valid_jsonapi - BeValidJsonapiMatcher.new - end - - class MatchSchemaMatcher - def matches?(body, &block) - schema = Dry::Validation.Schema(&block) - @body = JSON.parse(body) unless body.is_a?(Hash) - @result = schema.call(@body.with_indifferent_access) - @result.success? - end - - def failure_message - "#{@body} #{@result.errors}" - end - end - - def match_schema(&block) - MatchSchemaMatcher.new(&block) - end - end -end - -RSpec.configure do |config| - config.include JSONAPI::RSpec -end