paranoia_uniqueness_validator 1.2.0 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +13 -0
  3. data/.github/workflows/ci.yml +46 -0
  4. data/.gitignore +4 -1
  5. data/Gemfile +13 -31
  6. data/README.md +19 -13
  7. data/lib/paranoia_uniqueness_validator/validations/uniqueness_without_deleted.rb +16 -14
  8. data/lib/paranoia_uniqueness_validator/version.rb +1 -1
  9. data/paranoia_uniqueness_validator.gemspec +6 -5
  10. data/spec/dummy/.gitignore +9 -3
  11. data/spec/dummy/.rspec +1 -0
  12. data/spec/dummy/{README.rdoc → README.md} +1 -5
  13. data/spec/dummy/Rakefile +2 -2
  14. data/spec/dummy/app/assets/config/manifest.js +3 -0
  15. data/spec/dummy/app/{mailers → assets/images}/.keep +0 -0
  16. data/spec/dummy/app/assets/javascripts/application.js +4 -4
  17. data/spec/dummy/app/assets/javascripts/cable.js +13 -0
  18. data/spec/dummy/app/{models → assets/javascripts/channels}/.keep +0 -0
  19. data/spec/dummy/app/assets/stylesheets/application.css +6 -4
  20. data/spec/dummy/app/channels/application_cable/channel.rb +4 -0
  21. data/spec/dummy/app/channels/application_cable/connection.rb +4 -0
  22. data/spec/dummy/app/controllers/application_controller.rb +0 -2
  23. data/spec/dummy/app/jobs/application_job.rb +2 -0
  24. data/spec/dummy/app/mailers/application_mailer.rb +4 -0
  25. data/spec/dummy/app/models/application_record.rb +3 -0
  26. data/spec/dummy/app/models/dummy_model.rb +1 -1
  27. data/spec/dummy/app/models/dummy_non_nil_model.rb +1 -1
  28. data/spec/dummy/app/views/layouts/application.html.erb +9 -9
  29. data/spec/dummy/app/views/layouts/mailer.html.erb +13 -0
  30. data/spec/dummy/app/views/layouts/mailer.text.erb +1 -0
  31. data/spec/dummy/bin/rails +1 -1
  32. data/spec/dummy/bin/setup +34 -0
  33. data/spec/dummy/bin/update +29 -0
  34. data/spec/dummy/config.ru +2 -1
  35. data/spec/dummy/config/application.rb +8 -10
  36. data/spec/dummy/config/boot.rb +3 -5
  37. data/spec/dummy/config/cable.yml +9 -0
  38. data/spec/dummy/config/database.yml +7 -11
  39. data/spec/dummy/config/environment.rb +4 -4
  40. data/spec/dummy/config/environments/development.rb +30 -5
  41. data/spec/dummy/config/environments/production.rb +37 -31
  42. data/spec/dummy/config/environments/test.rb +10 -4
  43. data/spec/dummy/config/initializers/application_controller_renderer.rb +6 -0
  44. data/spec/dummy/config/initializers/assets.rb +11 -0
  45. data/spec/dummy/config/initializers/cookies_serializer.rb +5 -0
  46. data/spec/dummy/config/initializers/mime_types.rb +0 -1
  47. data/spec/dummy/config/initializers/new_framework_defaults.rb +21 -0
  48. data/spec/dummy/config/initializers/session_store.rb +1 -1
  49. data/spec/dummy/config/initializers/wrap_parameters.rb +2 -2
  50. data/spec/dummy/config/puma.rb +47 -0
  51. data/spec/dummy/config/routes.rb +2 -48
  52. data/spec/dummy/config/secrets.yml +22 -0
  53. data/spec/dummy/config/spring.rb +6 -0
  54. data/spec/dummy/db/migrate/20130511080827_create_dummy_models.rb +1 -1
  55. data/spec/dummy/db/migrate/20160421194241_create_dummy_non_nil_models.rb +1 -1
  56. data/spec/dummy/db/schema.rb +5 -6
  57. data/spec/dummy/db/seeds.rb +3 -3
  58. data/spec/dummy/db/test.sqlite3 +0 -0
  59. data/spec/dummy/public/404.html +20 -11
  60. data/spec/dummy/public/422.html +20 -11
  61. data/spec/dummy/public/500.html +19 -10
  62. data/spec/dummy/public/apple-touch-icon-precomposed.png +0 -0
  63. data/spec/dummy/public/apple-touch-icon.png +0 -0
  64. data/spec/dummy/public/robots.txt +1 -1
  65. data/spec/spec_helper.rb +1 -2
  66. data/spec/validations/uniqueness_without_deleted_spec.rb +12 -15
  67. metadata +79 -32
  68. data/.travis.yml +0 -19
  69. data/spec/dummy/config/initializers/secret_token.rb +0 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: a61f98888b05a46e6a994dd16e1bdf7136a22c91
4
- data.tar.gz: 19699acd3367c7551a071a1accae0105c8f0a9cd
2
+ SHA256:
3
+ metadata.gz: d29fc508132d418f52aea5d237bcccce95c994e3fb4d16b759542aa77fffec04
4
+ data.tar.gz: ae973b381406fdf16690ea60c0dd6744ed31091f1a0a3293d15e28ffe2157b8d
5
5
  SHA512:
6
- metadata.gz: 45cddd3449be7e2d54767cd37e4251e0e9bb79aa9d019f32c093716aaa869acee8fefb21ebbc6e46b1d16460d4f4a85c367cac17978c8858024b9ee6122955de
7
- data.tar.gz: 2fd6d1fd44c9bb25fb7a34d87e08c9d638599ec9a42c6028322a0f769e645b2d47cd52528ce017ffd69fe172b62c3fb5b4bbf9d782b2c91f0e1ff8d6ab5fd597
6
+ metadata.gz: d9ab8068e76c5903abc9dedce9c9d217471da093e4c5fb477c5c29ae17b9e4634519068467070a98b5c351ccd09a1f62d795bafe8545e6b410a52dae2ce127c8
7
+ data.tar.gz: fd54fb5b3e9cd372ee51ebca5fd096e766ba1b97f8342e22a7eb81000dbff6d84a4c39ae5a845251d5a54585b155526f78a2e1b6ae8f7a61f41a38539ea36b87
@@ -0,0 +1,13 @@
1
+ version: 2
2
+
3
+ updates:
4
+ - package-ecosystem: bundler
5
+
6
+ directory: "/"
7
+
8
+ schedule:
9
+ interval: daily
10
+
11
+ open-pull-requests-limit: 10
12
+
13
+ target-branch: develop
@@ -0,0 +1,46 @@
1
+ name: ci
2
+
3
+ on: push
4
+
5
+ jobs:
6
+ test:
7
+ strategy:
8
+ matrix:
9
+ rails: ['6.1', '5.2']
10
+
11
+ ruby: ['2.5', '2.6', '2.7']
12
+
13
+ runs-on: ubuntu-latest
14
+
15
+ steps:
16
+ - uses: actions/checkout@v2
17
+
18
+ - uses: actions/setup-ruby@v1
19
+
20
+ with:
21
+ ruby-version: ${{ matrix.ruby }}
22
+
23
+ - name: Install native toolchain
24
+
25
+ run: |
26
+ sudo apt-get update
27
+
28
+ sudo apt-get install build-essential libsqlite3-dev
29
+
30
+ - name: Run gem install bundler
31
+
32
+ run: gem install bundler
33
+
34
+ - name: Run bundle install
35
+
36
+ env:
37
+ RAILS_VERSION: ${{ matrix.rails }}
38
+
39
+ run: bundle install
40
+
41
+ - name: Run bundle exec rspec
42
+
43
+ env:
44
+ RAILS_VERSION: ${{ matrix.rails }}
45
+
46
+ run: bundle exec rspec
data/.gitignore CHANGED
@@ -8,4 +8,7 @@ spec/dummy/tmp/
8
8
  spec/dummy/.sass-cache
9
9
  Gemfile.lock
10
10
  .rbenv*
11
- coverage
11
+ coverage
12
+ .ruby-version
13
+ .gems/
14
+ .DS_Store
data/Gemfile CHANGED
@@ -5,41 +5,23 @@ gemspec
5
5
 
6
6
  rails_version = ENV['RAILS_VERSION'] || 'default'
7
7
 
8
- rails = case rails_version
9
- when 'master'
10
- { github: 'rails/rails' }
11
- when 'default'
12
- '>= 4.2.0'
13
- else
14
- "~> #{rails_version}"
15
- end
8
+ rails =
9
+ case rails_version
10
+ when 'master'
11
+ { github: 'rails/rails' }
12
+ when 'default'
13
+ '>= 6.1.0'
14
+ else
15
+ "~> #{rails_version}"
16
+ end
16
17
 
17
18
  gem 'rails', rails
18
19
 
19
- platforms :jruby do
20
- gem "activerecord-jdbcsqlite3-adapter"
21
- gem "jruby-openssl"
22
- end
23
-
24
- platforms :ruby do
25
- gem "sqlite3"
26
- gem "test-unit"
27
- end
28
-
29
- platforms :ruby_19, :jruby_19 do
30
- gem "mime-types", "< 3.0"
31
- end
32
-
33
- platforms :rbx do
34
- #gem 'psych'
35
- #gem 'racc'
36
- #gem 'rubinius-coverage'
37
- #gem 'rubysl'
38
- #gem 'rubysl-test-unit'
39
- end
40
-
41
20
  group :development do
42
21
  gem 'bundler'
43
- gem 'coveralls', :require => false
22
+ gem 'coveralls', require: false
23
+ gem 'listen'
44
24
  gem 'rake'
25
+ gem 'sqlite3'
26
+ gem 'test-unit'
45
27
  end
data/README.md CHANGED
@@ -1,10 +1,13 @@
1
1
  # ParanoiaUniquenessValidator
2
2
 
3
- Adds validator validates_uniqueness_without_deleted.
3
+ Adds `validates_uniqueness_without_deleted`.
4
4
 
5
- This validator will ignore any record that has a non-null value for the deleted_at field. This gem was made specifically for use with the [Paranoia](https://github.com/radar/paranoia) gem but it can be used with any gem that uses the deleted_at field for marking records as deleted.
5
+ This validator will ignore any record that has a non-null value for the
6
+ `deleted_at` field. This gem was made specifically for use with the
7
+ [Paranoia](https://github.com/radar/paranoia) gem but it can be used with any
8
+ gem that uses the `deleted_at` field for marking records as deleted.
6
9
 
7
- [![Gem Version](https://badge.fury.io/rb/paranoia_uniqueness_validator.png)](http://badge.fury.io/rb/paranoia_uniqueness_validator) [![Build Status](https://secure.travis-ci.org/anthonator/paranoia_uniqueness_validator.png)](http://travis-ci.org/anthonator/paranoia_uniqueness_validator) [![Dependency Status](https://gemnasium.com/anthonator/paranoia_uniqueness_validator.png)](https://gemnasium.com/anthonator/paranoia_uniqueness_validator) [![Coverage Status](https://coveralls.io/repos/anthonator/paranoia_uniqueness_validator/badge.png)](https://coveralls.io/r/anthonator/paranoia_uniqueness_validator) [![Code Climate](https://codeclimate.com/github/anthonator/paranoia_uniqueness_validator.png)](https://codeclimate.com/github/anthonator/paranoia_uniqueness_validator)
10
+ [![Gem Version](https://badge.fury.io/rb/paranoia_uniqueness_validator.png)](http://badge.fury.io/rb/paranoia_uniqueness_validator) ![ci](https://github.com/anthonator/paranoia_uniqueness_validator/workflows/ci/badge.svg) [![Coverage Status](https://coveralls.io/repos/anthonator/paranoia_uniqueness_validator/badge.png)](https://coveralls.io/r/anthonator/paranoia_uniqueness_validator) [![Code Climate](https://codeclimate.com/github/anthonator/paranoia_uniqueness_validator.png)](https://codeclimate.com/github/anthonator/paranoia_uniqueness_validator)
8
11
 
9
12
  ## Installation
10
13
 
@@ -15,6 +18,16 @@ Add this line to your application's Gemfile:
15
18
 
16
19
  # Rails 4
17
20
  gem 'paranoia_uniqueness_validator', '1.1.0'
21
+
22
+ # Rails 5.0
23
+ gem 'paranoia_uniqueness_validator', '2.0.0'
24
+
25
+ # Rails 5.1
26
+ gem 'paranoia_uniqueness_validator', '3.1.0'
27
+
28
+ # Rails 6
29
+ gem 'paranoia_uniqueness_validator', '3.3.0'
30
+
18
31
  And then execute:
19
32
 
20
33
  $ bundle
@@ -25,13 +38,14 @@ Or install it yourself as:
25
38
 
26
39
  ## Configuration
27
40
 
28
- This validator supports all configuration options used by the base ActiveRecord uniqueness validator. For more information check out the [Rails API documentation](http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#method-i-validates_uniqueness_of).
41
+ This validator supports all configuration options used by the base ActiveRecord
42
+ uniqueness validator. For more information check out the [Rails API documentation](http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#method-i-validates_uniqueness_of).
29
43
 
30
44
  ## Usage
31
45
 
32
46
  ```ruby
33
47
  class SomeModel < ActiveRecord::Base
34
- validates :some_field, :uniqueness_without_deleted => true
48
+ validates :some_field, uniqueness_without_deleted: true
35
49
  end
36
50
  ```
37
51
 
@@ -42,11 +56,3 @@ end
42
56
  3. Commit your changes (`git commit -am 'Add some feature'`)
43
57
  4. Push to the branch (`git push origin my-new-feature`)
44
58
  5. Create new Pull Request
45
-
46
- ## Credits
47
-
48
- [![Sticksnleaves](http://sticksnleaves-wordpress.herokuapp.com/wp-content/themes/sticksnleaves/images/snl-logo-116x116.png)](http://www.sticksnleaves.com)
49
-
50
- paranoia_uniqueness_validator is maintained and funded by [Sticksnleaves](http://www.sticksnleaves.com)
51
-
52
- Thanks to all of our [contributors](https://github.com/anthonator/paranoia_uniqueness_validator/graphs/contributors)
@@ -3,24 +3,26 @@ module ParanoiaUniquenessValidator
3
3
  class UniquenessWithoutDeletedValidator < ActiveRecord::Validations::UniquenessValidator
4
4
  def validate_each(record, attribute, value)
5
5
  finder_class = find_finder_class_for(record)
6
- table = finder_class.arel_table
6
+ value = map_enum_attribute(finder_class, attribute, value)
7
+
8
+ relation = build_relation(finder_class, attribute, value)
9
+ if record.persisted?
10
+ if finder_class.primary_key
11
+ relation = relation.where.not(finder_class.primary_key => record.id_in_database || record.id)
12
+ else
13
+ raise UnknownPrimaryKey.new(finder_class, "Can not validate uniqueness for persisted record without primary key.")
14
+ end
15
+ end
16
+ relation = scope_relation(record, relation)
17
+ relation = relation.merge(options[:conditions]) if options[:conditions]
7
18
 
8
- if ActiveRecord.version.to_s >= '4.2.0'
9
- value = map_enum_attribute(finder_class, attribute, value)
19
+ if defined?('Paranoia') && Paranoia.respond_to?(:default_sentinel_value)
20
+ sentinel_value = Paranoia.default_sentinel_value
10
21
  else
11
- value = deserialize_attribute(record, attribute, value)
22
+ sentinel_value = nil
12
23
  end
13
24
 
14
- relation = build_relation(finder_class, table, attribute, value)
15
- relation = relation.and(table[finder_class.primary_key.to_sym].not_eq(record.id)) if record.persisted?
16
-
17
- default_sentinel_value = Object.const_defined?('Paranoia') ? Paranoia.default_sentinel_value : nil
18
-
19
- relation = relation.and(table[:deleted_at].eq(default_sentinel_value))
20
-
21
- relation = scope_relation(record, table, relation)
22
- relation = finder_class.unscoped.where(relation)
23
- relation = relation.merge(options[:conditions]) if options[:conditions]
25
+ relation = relation.where(deleted_at: sentinel_value)
24
26
 
25
27
  if relation.exists?
26
28
  error_options = options.except(:case_sensitive, :scope, :conditions)
@@ -1,3 +1,3 @@
1
1
  module ParanoiaUniquenessValidator
2
- VERSION = "1.2.0"
2
+ VERSION = "3.3.0"
3
3
  end
@@ -6,20 +6,21 @@ require 'paranoia_uniqueness_validator/version'
6
6
  Gem::Specification.new do |gem|
7
7
  gem.name = "paranoia_uniqueness_validator"
8
8
  gem.version = ParanoiaUniquenessValidator::VERSION
9
+ gem.licenses = ['MIT']
9
10
  gem.authors = ["Anthony Smith"]
10
11
  gem.email = ["anthony@sticksnleaves.com"]
11
12
  gem.description = %q{Adds the validates_uniqueness_without_deleted validator to ignore deleted fields when validating for uniqueness.}
12
13
  gem.summary = %q{Validate unique fields without letting those pesky deleted records get in the way. Great for use with Paranoia.}
13
- gem.homepage = ""
14
+ gem.homepage = "https://github.com/anthonator/paranoia_uniqueness_validator"
14
15
 
15
16
  gem.files = `git ls-files`.split($/)
16
17
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
19
  gem.require_paths = ["lib"]
19
20
 
20
- gem.add_dependency "activerecord", ">= 4.0.0"
21
+ gem.add_dependency "activerecord", ">= 5.1.0", "< 6.2"
21
22
 
22
- gem.add_development_dependency "paranoia"
23
- gem.add_development_dependency "database_cleaner"
24
- gem.add_development_dependency "rspec-rails"
23
+ gem.add_development_dependency "paranoia", "~> 2.3"
24
+ gem.add_development_dependency "database_cleaner", "~> 1.6"
25
+ gem.add_development_dependency "rspec-rails", "~> 4.0"
25
26
  end
@@ -1,4 +1,4 @@
1
- # See http://help.github.com/ignore-files/ for more about ignoring files.
1
+ # See https://help.github.com/articles/ignoring-files for more about ignoring files.
2
2
  #
3
3
  # If you find yourself ignoring temporary files generated by your text editor
4
4
  # or operating system, you probably want to add a global ignore instead:
@@ -8,8 +8,14 @@
8
8
  /.bundle
9
9
 
10
10
  # Ignore the default SQLite database.
11
+ /db/*.sqlite3
11
12
  /db/*.sqlite3-journal
12
13
 
13
14
  # Ignore all logfiles and tempfiles.
14
- /log/*.log
15
- /tmp
15
+ /log/*
16
+ /tmp/*
17
+ !/log/.keep
18
+ !/tmp/.keep
19
+
20
+ # Ignore Byebug command history file.
21
+ .byebug_history
@@ -1 +1,2 @@
1
1
  --color
2
+ --require spec_helper
@@ -1,4 +1,4 @@
1
- == README
1
+ # README
2
2
 
3
3
  This README would normally document whatever steps are necessary to get the
4
4
  application up and running.
@@ -22,7 +22,3 @@ Things you may want to cover:
22
22
  * Deployment instructions
23
23
 
24
24
  * ...
25
-
26
-
27
- Please feel free to use a different markup language if you do not plan to run
28
- <tt>rake doc:app</tt>.
@@ -1,6 +1,6 @@
1
1
  # Add your own tasks in files placed in lib/tasks ending in .rake,
2
2
  # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
3
 
4
- require File.expand_path('../config/application', __FILE__)
4
+ require_relative 'config/application'
5
5
 
6
- Dummy::Application.load_tasks
6
+ Rails.application.load_tasks
@@ -0,0 +1,3 @@
1
+ //= link_tree ../images
2
+ //= link_directory ../javascripts .js
3
+ //= link_directory ../stylesheets .css
@@ -2,13 +2,13 @@
2
2
  // listed below.
3
3
  //
4
4
  // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
- // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
5
+ // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6
6
  //
7
7
  // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
- // compiled file.
8
+ // compiled file. JavaScript code in this file should be added after the last require_* statement.
9
9
  //
10
- // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
11
- // GO AFTER THE REQUIRES BELOW.
10
+ // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
12
  //
13
13
  //= require jquery
14
14
  //= require jquery_ujs
@@ -0,0 +1,13 @@
1
+ // Action Cable provides the framework to deal with WebSockets in Rails.
2
+ // You can generate new channels where WebSocket features live using the rails generate channel command.
3
+ //
4
+ //= require action_cable
5
+ //= require_self
6
+ //= require_tree ./channels
7
+
8
+ (function() {
9
+ this.App || (this.App = {});
10
+
11
+ App.cable = ActionCable.createConsumer();
12
+
13
+ }).call(this);
@@ -3,11 +3,13 @@
3
3
  * listed below.
4
4
  *
5
5
  * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
- * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
6
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
7
  *
8
- * You're free to add application-wide styles to this file and they'll appear at the top of the
9
- * compiled file, but it's generally better to create a new file per style scope.
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
+ * files in this directory. Styles in this file should be added after the last require_* statement.
11
+ * It is generally better to create a new file per style scope.
10
12
  *
11
- *= require_self
12
13
  *= require_tree .
14
+ *= require_self
13
15
  */
@@ -0,0 +1,4 @@
1
+ module ApplicationCable
2
+ class Channel < ActionCable::Channel::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module ApplicationCable
2
+ class Connection < ActionCable::Connection::Base
3
+ end
4
+ end
@@ -1,5 +1,3 @@
1
1
  class ApplicationController < ActionController::Base
2
- # Prevent CSRF attacks by raising an exception.
3
- # For APIs, you may want to use :null_session instead.
4
2
  protect_from_forgery with: :exception
5
3
  end
@@ -0,0 +1,2 @@
1
+ class ApplicationJob < ActiveJob::Base
2
+ end
@@ -0,0 +1,4 @@
1
+ class ApplicationMailer < ActionMailer::Base
2
+ default from: 'from@example.com'
3
+ layout 'mailer'
4
+ end
@@ -0,0 +1,3 @@
1
+ class ApplicationRecord < ActiveRecord::Base
2
+ self.abstract_class = true
3
+ end
@@ -1,3 +1,3 @@
1
- class DummyModel < ActiveRecord::Base
1
+ class DummyModel < ApplicationRecord
2
2
  validates :unique_field, :uniqueness_without_deleted => true
3
3
  end
@@ -1,3 +1,3 @@
1
- class DummyNonNilModel < ActiveRecord::Base
1
+ class DummyNonNilModel < ApplicationRecord
2
2
  validates :unique_field, :uniqueness_without_deleted => true
3
3
  end
@@ -1,14 +1,14 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
- <head>
4
- <title>Dummy</title>
5
- <%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>
6
- <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
7
- <%= csrf_meta_tags %>
8
- </head>
9
- <body>
3
+ <head>
4
+ <title>Dummy</title>
5
+ <%= csrf_meta_tags %>
10
6
 
11
- <%= yield %>
7
+ <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
8
+ <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
9
+ </head>
12
10
 
13
- </body>
11
+ <body>
12
+ <%= yield %>
13
+ </body>
14
14
  </html>