paranoia_uniqueness_validator 1.2.0 → 3.3.0

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 (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>