cmor_contact 0.0.1.pre

Sign up to get free protection for your applications and to get access to all the features.
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