cmor_contact 0.0.1.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +32 -0
  4. data/Rakefile +19 -0
  5. data/app/assets/config/cmor_contact_manifest.js +2 -0
  6. data/app/assets/javascripts/cmor/contact/application.js +13 -0
  7. data/app/assets/javascripts/cmor/contact/application/keep.js +0 -0
  8. data/app/assets/stylesheets/cmor/contact/application.css +15 -0
  9. data/app/assets/stylesheets/cmor/contact/application/keep.css +0 -0
  10. data/app/controllers/cmor/contact/application_controller.rb +7 -0
  11. data/app/controllers/cmor/contact/contact_requests_controller.rb +57 -0
  12. data/app/helpers/cmor/contact/application_helper.rb +6 -0
  13. data/app/jobs/cmor/contact/application_job.rb +6 -0
  14. data/app/jobs/cmor/contact/notify_new_contact_request_job.rb +25 -0
  15. data/app/mailers/cmor/contact/application_mailer.rb +8 -0
  16. data/app/mailers/cmor/contact/contact_request_mailer.rb +31 -0
  17. data/app/models/cmor/contact/application_record.rb +7 -0
  18. data/app/models/cmor/contact/contact_request.rb +36 -0
  19. data/app/views/cmor/contact/contact_request_mailer/notify.html.haml +7 -0
  20. data/app/views/cmor/contact/contact_request_mailer/notify.text.erb +5 -0
  21. data/app/views/cmor/contact/contact_requests/_form.haml +6 -0
  22. data/app/views/cmor/contact/contact_requests/_form_errors.haml +6 -0
  23. data/app/views/cmor/contact/contact_requests/new.haml +8 -0
  24. data/app/views/layouts/cmor/contact/application.html.erb +14 -0
  25. data/app/views/layouts/cmor/contact/mailer.html.erb +13 -0
  26. data/app/views/layouts/cmor/contact/mailer.text.erb +1 -0
  27. data/config/locales/de.yml +50 -0
  28. data/config/locales/en.yml +50 -0
  29. data/config/routes.rb +9 -0
  30. data/db/migrate/20170813142704_create_cmor_contact_contact_requests.rb +15 -0
  31. data/lib/cmor/contact.rb +10 -0
  32. data/lib/cmor/contact/configuration.rb +60 -0
  33. data/lib/cmor/contact/engine.rb +16 -0
  34. data/lib/cmor/contact/version.rb +7 -0
  35. data/lib/cmor_contact.rb +3 -0
  36. data/lib/generators/cmor/contact/install/install_generator.rb +26 -0
  37. data/lib/generators/cmor/contact/install/templates/initializer.rb +83 -0
  38. data/lib/generators/cmor/contact/install/templates/routes.source +3 -0
  39. data/lib/tasks/cmor_contact_tasks.rake +4 -0
  40. data/spec/dummy/config/initializers/content_security_policy.rb +25 -0
  41. data/spec/dummy/config/initializers/i18n.rb +2 -0
  42. data/spec/dummy/config/storage.yml +34 -0
  43. data/spec/dummy/db/development.sqlite3 +0 -0
  44. data/spec/dummy/db/migrate/20190325174020_create_active_storage_tables.active_storage.rb +27 -0
  45. data/spec/dummy/db/migrate/20190325174040_create_cmor_contact_contact_requests.cmor_contact.rb +16 -0
  46. data/spec/dummy/db/test.sqlite3 +0 -0
  47. data/spec/dummy/log/development.log +108 -0
  48. data/spec/dummy/log/test.log +345 -0
  49. data/spec/dummy/tmp/development_secret.txt +1 -0
  50. data/spec/dummy~/Rakefile +6 -0
  51. data/spec/dummy~/app/assets/config/manifest.js +5 -0
  52. data/spec/dummy~/app/assets/javascripts/application.js +13 -0
  53. data/spec/dummy~/app/assets/javascripts/cable.js +13 -0
  54. data/spec/dummy~/app/assets/stylesheets/application.css +15 -0
  55. data/spec/dummy~/app/channels/application_cable/channel.rb +4 -0
  56. data/spec/dummy~/app/channels/application_cable/connection.rb +4 -0
  57. data/spec/dummy~/app/controllers/application_controller.rb +3 -0
  58. data/spec/dummy~/app/helpers/application_helper.rb +2 -0
  59. data/spec/dummy~/app/jobs/application_job.rb +2 -0
  60. data/spec/dummy~/app/mailers/application_mailer.rb +4 -0
  61. data/spec/dummy~/app/models/application_record.rb +3 -0
  62. data/spec/dummy~/app/views/layouts/application.html.erb +14 -0
  63. data/spec/dummy~/app/views/layouts/mailer.html.erb +13 -0
  64. data/spec/dummy~/app/views/layouts/mailer.text.erb +1 -0
  65. data/spec/dummy~/bin/bundle +3 -0
  66. data/spec/dummy~/bin/rails +4 -0
  67. data/spec/dummy~/bin/rake +4 -0
  68. data/spec/dummy~/bin/setup +38 -0
  69. data/spec/dummy~/bin/update +29 -0
  70. data/spec/dummy~/bin/yarn +11 -0
  71. data/spec/dummy~/config.ru +5 -0
  72. data/spec/dummy~/config/application.rb +26 -0
  73. data/spec/dummy~/config/boot.rb +5 -0
  74. data/spec/dummy~/config/cable.yml +10 -0
  75. data/spec/dummy~/config/database.yml +25 -0
  76. data/spec/dummy~/config/environment.rb +5 -0
  77. data/spec/dummy~/config/environments/development.rb +54 -0
  78. data/spec/dummy~/config/environments/production.rb +91 -0
  79. data/spec/dummy~/config/environments/test.rb +42 -0
  80. data/spec/dummy~/config/initializers/application_controller_renderer.rb +6 -0
  81. data/spec/dummy~/config/initializers/assets.rb +14 -0
  82. data/spec/dummy~/config/initializers/backtrace_silencers.rb +7 -0
  83. data/spec/dummy~/config/initializers/cmor_contact.rb +83 -0
  84. data/spec/dummy~/config/initializers/cookies_serializer.rb +5 -0
  85. data/spec/dummy~/config/initializers/filter_parameter_logging.rb +4 -0
  86. data/spec/dummy~/config/initializers/inflections.rb +16 -0
  87. data/spec/dummy~/config/initializers/mime_types.rb +4 -0
  88. data/spec/dummy~/config/initializers/wrap_parameters.rb +14 -0
  89. data/spec/dummy~/config/locales/en.yml +33 -0
  90. data/spec/dummy~/config/puma.rb +56 -0
  91. data/spec/dummy~/config/routes.rb +3 -0
  92. data/spec/dummy~/config/secrets.yml +32 -0
  93. data/spec/dummy~/config/spring.rb +6 -0
  94. data/spec/dummy~/db/development.sqlite3 +0 -0
  95. data/spec/dummy~/db/migrate/20170813150718_create_cmor_contact_contact_requests.cmor_contact.rb +16 -0
  96. data/spec/dummy~/db/schema.rb +27 -0
  97. data/spec/dummy~/db/test.sqlite3 +0 -0
  98. data/spec/dummy~/log/test.log +0 -0
  99. data/spec/dummy~/package.json +5 -0
  100. data/spec/dummy~/public/404.html +67 -0
  101. data/spec/dummy~/public/422.html +67 -0
  102. data/spec/dummy~/public/500.html +66 -0
  103. data/spec/dummy~/public/apple-touch-icon-precomposed.png +0 -0
  104. data/spec/dummy~/public/apple-touch-icon.png +0 -0
  105. data/spec/dummy~/public/favicon.ico +0 -0
  106. data/spec/factories/cmor_contact_contact_requests.rb +10 -0
  107. data/spec/fixtures/cmor/contact/contact_request_mailer/notify +3 -0
  108. data/spec/jobs/cmor/contact/notify_new_contact_request_job_spec.rb +22 -0
  109. data/spec/mailers/cmor/contact/contact_request_mailer_spec.rb +24 -0
  110. data/spec/mailers/previews/cmor/contact/contact_request_mailer_preview.rb +11 -0
  111. data/spec/models/cmor/contact/contact_request_spec.rb +48 -0
  112. data/spec/models/generic_spec.rb +49 -0
  113. data/spec/models/i18n_spec.rb +40 -0
  114. data/spec/rails_helper.rb +62 -0
  115. data/spec/spec_helper.rb +96 -0
  116. data/spec/support/action_mailer.rb +13 -0
  117. data/spec/support/active_job.rb +9 -0
  118. data/spec/support/capybara.rb +1 -0
  119. data/spec/support/factory_bot.rb +9 -0
  120. data/spec/support/rao-shoulda_matchers.rb +5 -0
  121. data/spec/support/shoulda_matchers.rb +8 -0
  122. metadata +429 -0
@@ -0,0 +1,50 @@
1
+ en:
2
+ classes:
3
+ cmor/contact/engine: Contact
4
+ activerecord:
5
+ models:
6
+ cmor/contact/contact_request:
7
+ one: Contact Request
8
+ other: Contact Requests
9
+ attributes:
10
+ cmor/contact/contact_request:
11
+ id: ID
12
+ accept_terms_of_service: 'I hereby allow the site owner to use my personal data for the purpose of answering this request.'
13
+ name: Name
14
+ email: E-Mail
15
+ phone: Phone
16
+ ip_address: IP Address
17
+ message: Message
18
+ notified_at: Notified at
19
+ created_at: Created at
20
+ updated_at: Updated at
21
+ additional_actions: Additional Actions
22
+ cmor:
23
+ contact:
24
+ contact_requests:
25
+ new:
26
+ title: "Contact Request"
27
+ contact_request_mailer:
28
+ notify:
29
+ subject: "[%{application_name}] New contact request"
30
+ title: "New contact request"
31
+ flash:
32
+ cmor:
33
+ contact:
34
+ contact_requests:
35
+ create:
36
+ notice: "Your contact request has been delivered."
37
+ helpers:
38
+ submit:
39
+ contact_request:
40
+ create: Submit
41
+ routes:
42
+ cmor_contact_engine: contact
43
+ contact_requests: request
44
+ simple_form:
45
+ placeholders:
46
+ contact_request:
47
+ name: "John Doe"
48
+ email: "john.doe@example.com"
49
+ message: "Hi Dave..."
50
+ phone: "+1-541-754-3010"
data/config/routes.rb ADDED
@@ -0,0 +1,9 @@
1
+ Cmor::Contact::Engine.routes.draw do
2
+ localized do
3
+ scope :cmor_contact_engine do
4
+ resources :contact_requests, only: [:create, :index]
5
+
6
+ root to: 'contact_requests#index'
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,15 @@
1
+ class CreateCmorContactContactRequests < ActiveRecord::Migration[5.1]
2
+ def change
3
+ create_table :cmor_contact_contact_requests do |t|
4
+ t.string :name
5
+ t.string :email
6
+ t.string :phone
7
+ t.string :ip_address
8
+ t.text :message
9
+ t.boolean :accept_terms_of_service
10
+ t.timestamp :notified_at
11
+
12
+ t.timestamps
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,10 @@
1
+ require "cmor/contact/configuration"
2
+ require "cmor/contact/engine"
3
+
4
+ module Cmor
5
+ module Contact
6
+ extend Configuration
7
+ end
8
+ end
9
+
10
+ Cmor.configure { |c| c.register_configuration(:contact, Cmor::Contact) }
@@ -0,0 +1,60 @@
1
+ require 'active_support/core_ext/module/delegation'
2
+ require 'active_support/core_ext/module/attribute_accessors'
3
+
4
+ module Cmor
5
+ module Contact
6
+ module Configuration
7
+ def configure
8
+ yield self
9
+ end
10
+
11
+ mattr_accessor :input_name_css_classes do
12
+ 'form-control'
13
+ end
14
+
15
+ mattr_accessor :input_email_css_classes do
16
+ 'form-control'
17
+ end
18
+
19
+ mattr_accessor :input_phone_css_classes do
20
+ 'form-control'
21
+ end
22
+
23
+ mattr_accessor :input_message_css_classes do
24
+ 'form-control'
25
+ end
26
+
27
+ mattr_accessor :input_terms_of_service_css_classes do
28
+ ''
29
+ end
30
+
31
+ mattr_accessor :form_actions_wrapper_css_classes do
32
+ 'controls form-actions well'
33
+ end
34
+
35
+ mattr_accessor :recipients do
36
+ {}
37
+ end
38
+
39
+ mattr_accessor :sender do
40
+ ->(mail_form) { %("#{mail_form.name}" <#{mail_form.email}>) }
41
+ end
42
+
43
+ mattr_accessor :base_controller do
44
+ 'ApplicationController'
45
+ end
46
+
47
+ mattr_accessor :additional_contact_information do
48
+ nil
49
+ end
50
+
51
+ mattr_accessor :after_create_url do
52
+ ->(controller) { controller.root_path }
53
+ end
54
+
55
+ def recipients=(recipients)
56
+ @@recipients = HashWithIndifferentAccess.new(recipients)
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,16 @@
1
+ module Cmor
2
+ module Contact
3
+ class Engine < ::Rails::Engine
4
+ isolate_namespace Cmor::Contact
5
+
6
+ config.generators do |g|
7
+ g.test_framework :rspec, fixture: true
8
+ g.fixture_replacement :factory_girl, dir: 'spec/factories'
9
+ # g.form_builder :simple_form
10
+ # g.template_engine :haml
11
+
12
+ end
13
+
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,7 @@
1
+ require 'cmor/version'
2
+
3
+ module Cmor
4
+ module Contact
5
+ VERSION = ::Cmor::VERSION
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ require "cmor_core"
2
+
3
+ require "cmor/contact"
@@ -0,0 +1,26 @@
1
+ module Cmor
2
+ module Contact
3
+ module Generators
4
+ class InstallGenerator < Rails::Generators::Base
5
+ desc 'Generates the intializer'
6
+
7
+ source_root File.expand_path('../templates', __FILE__)
8
+
9
+ attr_reader :base_controller_class_name
10
+
11
+ def initialize(*args)
12
+ super
13
+ @base_controller_class_name = ENV.fetch('BASE_CONTROLLER_CLASS_NAME') { '::ApplicationController' }
14
+ end
15
+
16
+ def generate_initializer
17
+ template 'initializer.rb', 'config/initializers/cmor_contact.rb'
18
+ end
19
+
20
+ def generate_routes
21
+ route File.read(File.join(File.expand_path('../templates', __FILE__), 'routes.source'))
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,83 @@
1
+ Cmor::Contact.configure do |config|
2
+ # Configure your contact requiest recipients here.
3
+ #
4
+ # You can specify multiple recipients and multiple environments.
5
+ #
6
+ # Default:
7
+ #
8
+ # config.recipients = {
9
+ # development: %w( info@development.example.com ),
10
+ # test: %w( info@test.example.com ),
11
+ # production: %w( info@production.example.com )
12
+ # }
13
+ #
14
+ config.recipients = {
15
+ development: %w( info@development.example.com ),
16
+ test: %w( info@test.example.com ),
17
+ production: %w( info@production.example.com )
18
+ }
19
+
20
+ # Configure your input field css classes here.
21
+ #
22
+ # Default: config.input_name_css_classes = 'form-control'
23
+ #
24
+ config.input_name_css_classes = 'form-control'
25
+
26
+ # Configure your input field css classes here.
27
+ #
28
+ # Default: config.input_email_css_classes = 'form-control'
29
+ #
30
+ config.input_email_css_classes = 'form-control'
31
+
32
+ # Configure your input field css classes here.
33
+ #
34
+ # Default: config.input_phone_css_classes = 'form-control'
35
+ #
36
+ config.input_phone_css_classes = 'form-control'
37
+
38
+ # Configure your input field css classes here.
39
+ #
40
+ # Default: config.input_message_css_classes = 'form-control'
41
+ #
42
+ config.input_message_css_classes = 'form-control'
43
+
44
+ # Configure your input field css classes here.
45
+ #
46
+ # Default: config.input_terms_of_service_css_classes = 'form-control'
47
+ #
48
+ config.input_terms_of_service_css_classes = ''
49
+
50
+ # Configure your form action wrapper div css classes here.
51
+ #
52
+ # Default: config.form_actions_wrapper_css_classes = 'controls form-actions well'
53
+ #
54
+ config.form_actions_wrapper_css_classes = 'controls form-actions well'
55
+
56
+ # set the base controller for the contact form
57
+ #
58
+ # Default: config.base_controller = '<%= base_controller_class_name %>'
59
+ #
60
+ config.base_controller = '<%= base_controller_class_name %>'
61
+
62
+ # Add additional information to the contact form. This will be printed
63
+ # between the heading and the form. You should provide a proc, or
64
+ # an object, that reponds to #call. The view ist provided as parameter.
65
+ #
66
+ # Example: config.additional_contact_information = lambda { |view| view.render 'additional_contact_information' }
67
+ #
68
+ # Default: config.additional_contact_information = nil
69
+ #
70
+ config.additional_contact_information = nil
71
+
72
+ # url to redirect to after successful contact request.
73
+ #
74
+ # default: config.after_create_url = ->(controller) { controller.root_path }
75
+ #
76
+ config.after_create_url = ->(controller) { controller.root_path }
77
+
78
+ # Set the sender address.
79
+ #
80
+ # default: config.sender = ->(mail_form) { %("#{mail_form.name}" <#{mail_form.email}>) }
81
+ #
82
+ config.sender = ->(mail_form) { %("#{mail_form.name}" <#{mail_form.email}>) }
83
+ end
@@ -0,0 +1,3 @@
1
+
2
+
3
+ mount Cmor::Contact::Engine, at: '/'
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :cmor_contact do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,25 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Define an application-wide content security policy
4
+ # For further information see the following documentation
5
+ # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
6
+
7
+ # Rails.application.config.content_security_policy do |policy|
8
+ # policy.default_src :self, :https
9
+ # policy.font_src :self, :https, :data
10
+ # policy.img_src :self, :https, :data
11
+ # policy.object_src :none
12
+ # policy.script_src :self, :https
13
+ # policy.style_src :self, :https
14
+
15
+ # # Specify URI for violation reports
16
+ # # policy.report_uri "/csp-violation-report-endpoint"
17
+ # end
18
+
19
+ # If you are using UJS then enable automatic nonce generation
20
+ # Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) }
21
+
22
+ # Report CSP violations to a specified URI
23
+ # For further information see the following documentation:
24
+ # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
25
+ # Rails.application.config.content_security_policy_report_only = true
@@ -0,0 +1,2 @@
1
+ Rails.application.config.i18n.available_locales = [:en, :de]
2
+ Rails.application.config.i18n.default_locale = :de
@@ -0,0 +1,34 @@
1
+ test:
2
+ service: Disk
3
+ root: <%= Rails.root.join("tmp/storage") %>
4
+
5
+ local:
6
+ service: Disk
7
+ root: <%= Rails.root.join("storage") %>
8
+
9
+ # Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
10
+ # amazon:
11
+ # service: S3
12
+ # access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
13
+ # secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
14
+ # region: us-east-1
15
+ # bucket: your_own_bucket
16
+
17
+ # Remember not to checkin your GCS keyfile to a repository
18
+ # google:
19
+ # service: GCS
20
+ # project: your_project
21
+ # credentials: <%= Rails.root.join("path/to/gcs.keyfile") %>
22
+ # bucket: your_own_bucket
23
+
24
+ # Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
25
+ # microsoft:
26
+ # service: AzureStorage
27
+ # storage_account_name: your_account_name
28
+ # storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>
29
+ # container: your_container_name
30
+
31
+ # mirror:
32
+ # service: Mirror
33
+ # primary: local
34
+ # mirrors: [ amazon, google, microsoft ]
Binary file
@@ -0,0 +1,27 @@
1
+ # This migration comes from active_storage (originally 20170806125915)
2
+ class CreateActiveStorageTables < ActiveRecord::Migration[5.2]
3
+ def change
4
+ create_table :active_storage_blobs do |t|
5
+ t.string :key, null: false
6
+ t.string :filename, null: false
7
+ t.string :content_type
8
+ t.text :metadata
9
+ t.bigint :byte_size, null: false
10
+ t.string :checksum, null: false
11
+ t.datetime :created_at, null: false
12
+
13
+ t.index [ :key ], unique: true
14
+ end
15
+
16
+ create_table :active_storage_attachments do |t|
17
+ t.string :name, null: false
18
+ t.references :record, null: false, polymorphic: true, index: false
19
+ t.references :blob, null: false
20
+
21
+ t.datetime :created_at, null: false
22
+
23
+ t.index [ :record_type, :record_id, :name, :blob_id ], name: "index_active_storage_attachments_uniqueness", unique: true
24
+ t.foreign_key :active_storage_blobs, column: :blob_id
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,16 @@
1
+ # This migration comes from cmor_contact (originally 20170813142704)
2
+ class CreateCmorContactContactRequests < ActiveRecord::Migration[5.1]
3
+ def change
4
+ create_table :cmor_contact_contact_requests do |t|
5
+ t.string :name
6
+ t.string :email
7
+ t.string :phone
8
+ t.string :ip_address
9
+ t.text :message
10
+ t.boolean :accept_terms_of_service
11
+ t.timestamp :notified_at
12
+
13
+ t.timestamps
14
+ end
15
+ end
16
+ end
Binary file
@@ -0,0 +1,108 @@
1
+  (0.2ms) SELECT sqlite_version(*)
2
+ ↳ bin/rails:4
3
+  (5.9ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL PRIMARY KEY)
4
+ ↳ bin/rails:4
5
+  (5.7ms) CREATE TABLE "ar_internal_metadata" ("key" varchar NOT NULL PRIMARY KEY, "value" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
6
+ ↳ bin/rails:4
7
+  (0.4ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
8
+ ↳ bin/rails:4
9
+ Migrating to CreateActiveStorageTables (20190325174020)
10
+  (0.1ms) begin transaction
11
+ ↳ bin/rails:4
12
+  (0.8ms) CREATE TABLE "active_storage_blobs" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "key" varchar NOT NULL, "filename" varchar NOT NULL, "content_type" varchar, "metadata" text, "byte_size" bigint NOT NULL, "checksum" varchar NOT NULL, "created_at" datetime NOT NULL)
13
+ ↳ db/migrate/20190325174020_create_active_storage_tables.active_storage.rb:4
14
+  (0.3ms) CREATE UNIQUE INDEX "index_active_storage_blobs_on_key" ON "active_storage_blobs" ("key")
15
+ ↳ db/migrate/20190325174020_create_active_storage_tables.active_storage.rb:4
16
+  (0.4ms) CREATE TABLE "active_storage_attachments" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "record_type" varchar NOT NULL, "record_id" integer NOT NULL, "blob_id" integer NOT NULL, "created_at" datetime NOT NULL, CONSTRAINT "fk_rails_c3b3935057"
17
+ FOREIGN KEY ("blob_id")
18
+ REFERENCES "active_storage_blobs" ("id")
19
+ )
20
+ ↳ db/migrate/20190325174020_create_active_storage_tables.active_storage.rb:16
21
+  (0.2ms) CREATE INDEX "index_active_storage_attachments_on_blob_id" ON "active_storage_attachments" ("blob_id")
22
+ ↳ db/migrate/20190325174020_create_active_storage_tables.active_storage.rb:16
23
+  (0.3ms) CREATE UNIQUE INDEX "index_active_storage_attachments_uniqueness" ON "active_storage_attachments" ("record_type", "record_id", "name", "blob_id")
24
+ ↳ db/migrate/20190325174020_create_active_storage_tables.active_storage.rb:16
25
+ ActiveRecord::SchemaMigration Create (0.3ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20190325174020"]]
26
+ ↳ bin/rails:4
27
+  (11.2ms) commit transaction
28
+ ↳ bin/rails:4
29
+ Migrating to CreateCmorContactContactRequests (20190325174040)
30
+  (0.2ms) begin transaction
31
+ ↳ bin/rails:4
32
+  (0.7ms) CREATE TABLE "cmor_contact_contact_requests" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "email" varchar, "phone" varchar, "ip_address" varchar, "message" text, "accept_terms_of_service" boolean, "notified_at" datetime, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
33
+ ↳ db/migrate/20190325174040_create_cmor_contact_contact_requests.cmor_contact.rb:4
34
+ ActiveRecord::SchemaMigration Create (0.3ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20190325174040"]]
35
+ ↳ bin/rails:4
36
+  (18.3ms) commit transaction
37
+ ↳ bin/rails:4
38
+ ActiveRecord::InternalMetadata Load (0.3ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ? [["key", "environment"], ["LIMIT", 1]]
39
+ ↳ bin/rails:4
40
+  (0.1ms) begin transaction
41
+ ↳ bin/rails:4
42
+ ActiveRecord::InternalMetadata Create (0.6ms) INSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["key", "environment"], ["value", "development"], ["created_at", "2019-03-25 17:40:40.573893"], ["updated_at", "2019-03-25 17:40:40.573893"]]
43
+ ↳ bin/rails:4
44
+  (9.7ms) commit transaction
45
+ ↳ bin/rails:4
46
+  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
47
+ ↳ bin/rails:4
48
+  (2.6ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
49
+ ↳ bin/rails:4
50
+  (0.2ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? [["key", "environment"]]
51
+ ↳ bin/rails:4
52
+  (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
53
+ ↳ bin/rails:4
54
+  (0.2ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? [["key", "environment"]]
55
+ ↳ bin/rails:4
56
+  (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
57
+ ↳ bin/rails:4
58
+  (0.3ms) SELECT "ar_internal_metadata"."value" FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? [["key", "environment"]]
59
+ ↳ bin/rails:4
60
+  (0.2ms) DROP TABLE IF EXISTS "active_storage_attachments"
61
+ ↳ db/schema.rb:15
62
+  (0.3ms) SELECT sqlite_version(*)
63
+ ↳ db/schema.rb:15
64
+  (17.3ms) CREATE TABLE "active_storage_attachments" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL, "record_type" varchar NOT NULL, "record_id" integer NOT NULL, "blob_id" integer NOT NULL, "created_at" datetime NOT NULL)
65
+ ↳ db/schema.rb:15
66
+  (5.6ms) CREATE INDEX "index_active_storage_attachments_on_blob_id" ON "active_storage_attachments" ("blob_id")
67
+ ↳ db/schema.rb:15
68
+  (5.1ms) CREATE UNIQUE INDEX "index_active_storage_attachments_uniqueness" ON "active_storage_attachments" ("record_type", "record_id", "name", "blob_id")
69
+ ↳ db/schema.rb:15
70
+  (0.4ms) DROP TABLE IF EXISTS "active_storage_blobs"
71
+ ↳ db/schema.rb:25
72
+  (29.9ms) CREATE TABLE "active_storage_blobs" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "key" varchar NOT NULL, "filename" varchar NOT NULL, "content_type" varchar, "metadata" text, "byte_size" bigint NOT NULL, "checksum" varchar NOT NULL, "created_at" datetime NOT NULL)
73
+ ↳ db/schema.rb:25
74
+  (15.2ms) CREATE UNIQUE INDEX "index_active_storage_blobs_on_key" ON "active_storage_blobs" ("key")
75
+ ↳ db/schema.rb:25
76
+  (0.3ms) DROP TABLE IF EXISTS "cmor_contact_contact_requests"
77
+ ↳ db/schema.rb:36
78
+  (15.5ms) CREATE TABLE "cmor_contact_contact_requests" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "email" varchar, "phone" varchar, "ip_address" varchar, "message" text, "accept_terms_of_service" boolean, "notified_at" datetime, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
79
+ ↳ db/schema.rb:36
80
+  (4.8ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL PRIMARY KEY)
81
+ ↳ db/schema.rb:13
82
+  (0.3ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
83
+ ↳ db/schema.rb:13
84
+  (5.1ms) INSERT INTO "schema_migrations" (version) VALUES (20190325174040)
85
+ ↳ db/schema.rb:13
86
+  (4.9ms) INSERT INTO "schema_migrations" (version) VALUES
87
+ (20190325174020);
88
+
89
+ 
90
+ ↳ db/schema.rb:13
91
+  (4.6ms) CREATE TABLE "ar_internal_metadata" ("key" varchar NOT NULL PRIMARY KEY, "value" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
92
+ ↳ db/schema.rb:13
93
+ ActiveRecord::InternalMetadata Load (0.4ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ? [["key", "environment"], ["LIMIT", 1]]
94
+ ↳ db/schema.rb:13
95
+  (0.1ms) begin transaction
96
+ ↳ db/schema.rb:13
97
+ ActiveRecord::InternalMetadata Create (0.3ms) INSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["key", "environment"], ["value", "development"], ["created_at", "2019-03-25 17:40:40.777560"], ["updated_at", "2019-03-25 17:40:40.777560"]]
98
+ ↳ db/schema.rb:13
99
+  (3.3ms) commit transaction
100
+ ↳ db/schema.rb:13
101
+ ActiveRecord::InternalMetadata Load (0.1ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ? [["key", "environment"], ["LIMIT", 1]]
102
+ ↳ bin/rails:4
103
+  (0.1ms) begin transaction
104
+ ↳ bin/rails:4
105
+ ActiveRecord::InternalMetadata Update (0.3ms) UPDATE "ar_internal_metadata" SET "value" = ?, "updated_at" = ? WHERE "ar_internal_metadata"."key" = ? [["value", "test"], ["updated_at", "2019-03-25 17:40:40.787516"], ["key", "environment"]]
106
+ ↳ bin/rails:4
107
+  (4.3ms) commit transaction
108
+ ↳ bin/rails:4