friendly_slug 0.1.4 → 0.1.5

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 (105) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -10
  3. data/friendly_slug_gem_test/.gitignore +30 -0
  4. data/friendly_slug_gem_test/.ruby-version +1 -0
  5. data/friendly_slug_gem_test/Gemfile +32 -0
  6. data/friendly_slug_gem_test/Gemfile.lock +222 -0
  7. data/friendly_slug_gem_test/README.md +24 -0
  8. data/friendly_slug_gem_test/Rakefile +6 -0
  9. data/friendly_slug_gem_test/app/assets/config/manifest.js +3 -0
  10. data/friendly_slug_gem_test/app/assets/images/.keep +0 -0
  11. data/friendly_slug_gem_test/app/assets/javascripts/application.js +16 -0
  12. data/friendly_slug_gem_test/app/assets/javascripts/blogs.coffee +3 -0
  13. data/friendly_slug_gem_test/app/assets/javascripts/cable.js +13 -0
  14. data/friendly_slug_gem_test/app/assets/javascripts/channels/.keep +0 -0
  15. data/friendly_slug_gem_test/app/assets/stylesheets/application.css +15 -0
  16. data/friendly_slug_gem_test/app/assets/stylesheets/blogs.scss +3 -0
  17. data/friendly_slug_gem_test/app/assets/stylesheets/scaffolds.scss +84 -0
  18. data/friendly_slug_gem_test/app/channels/application_cable/channel.rb +4 -0
  19. data/friendly_slug_gem_test/app/channels/application_cable/connection.rb +4 -0
  20. data/friendly_slug_gem_test/app/controllers/application_controller.rb +2 -0
  21. data/friendly_slug_gem_test/app/controllers/blogs_controller.rb +60 -0
  22. data/friendly_slug_gem_test/app/controllers/concerns/.keep +0 -0
  23. data/friendly_slug_gem_test/app/helpers/application_helper.rb +2 -0
  24. data/friendly_slug_gem_test/app/helpers/blogs_helper.rb +2 -0
  25. data/friendly_slug_gem_test/app/jobs/application_job.rb +2 -0
  26. data/friendly_slug_gem_test/app/mailers/application_mailer.rb +4 -0
  27. data/friendly_slug_gem_test/app/models/application_record.rb +3 -0
  28. data/friendly_slug_gem_test/app/models/blog.rb +3 -0
  29. data/friendly_slug_gem_test/app/models/concerns/.keep +0 -0
  30. data/friendly_slug_gem_test/app/views/blogs/_blog.json.jbuilder +2 -0
  31. data/friendly_slug_gem_test/app/views/blogs/_form.html.erb +32 -0
  32. data/friendly_slug_gem_test/app/views/blogs/edit.html.erb +6 -0
  33. data/friendly_slug_gem_test/app/views/blogs/index.html.erb +31 -0
  34. data/friendly_slug_gem_test/app/views/blogs/index.json.jbuilder +1 -0
  35. data/friendly_slug_gem_test/app/views/blogs/new.html.erb +5 -0
  36. data/friendly_slug_gem_test/app/views/blogs/show.html.erb +19 -0
  37. data/friendly_slug_gem_test/app/views/blogs/show.json.jbuilder +1 -0
  38. data/friendly_slug_gem_test/app/views/layouts/application.html.erb +15 -0
  39. data/friendly_slug_gem_test/app/views/layouts/mailer.html.erb +13 -0
  40. data/friendly_slug_gem_test/app/views/layouts/mailer.text.erb +1 -0
  41. data/friendly_slug_gem_test/bin/bundle +3 -0
  42. data/friendly_slug_gem_test/bin/rails +9 -0
  43. data/friendly_slug_gem_test/bin/rake +9 -0
  44. data/friendly_slug_gem_test/bin/setup +36 -0
  45. data/friendly_slug_gem_test/bin/spring +17 -0
  46. data/friendly_slug_gem_test/bin/update +31 -0
  47. data/friendly_slug_gem_test/bin/yarn +11 -0
  48. data/friendly_slug_gem_test/config.ru +5 -0
  49. data/friendly_slug_gem_test/config/application.rb +20 -0
  50. data/friendly_slug_gem_test/config/boot.rb +4 -0
  51. data/friendly_slug_gem_test/config/cable.yml +10 -0
  52. data/friendly_slug_gem_test/config/credentials.yml.enc +1 -0
  53. data/friendly_slug_gem_test/config/database.yml +25 -0
  54. data/friendly_slug_gem_test/config/environment.rb +5 -0
  55. data/friendly_slug_gem_test/config/environments/development.rb +61 -0
  56. data/friendly_slug_gem_test/config/environments/production.rb +94 -0
  57. data/friendly_slug_gem_test/config/environments/test.rb +46 -0
  58. data/friendly_slug_gem_test/config/initializers/application_controller_renderer.rb +8 -0
  59. data/friendly_slug_gem_test/config/initializers/assets.rb +14 -0
  60. data/friendly_slug_gem_test/config/initializers/backtrace_silencers.rb +7 -0
  61. data/friendly_slug_gem_test/config/initializers/content_security_policy.rb +25 -0
  62. data/friendly_slug_gem_test/config/initializers/cookies_serializer.rb +5 -0
  63. data/friendly_slug_gem_test/config/initializers/filter_parameter_logging.rb +4 -0
  64. data/friendly_slug_gem_test/config/initializers/inflections.rb +16 -0
  65. data/friendly_slug_gem_test/config/initializers/mime_types.rb +4 -0
  66. data/friendly_slug_gem_test/config/initializers/wrap_parameters.rb +14 -0
  67. data/friendly_slug_gem_test/config/locales/en.yml +33 -0
  68. data/friendly_slug_gem_test/config/puma.rb +34 -0
  69. data/friendly_slug_gem_test/config/routes.rb +4 -0
  70. data/friendly_slug_gem_test/config/spring.rb +6 -0
  71. data/friendly_slug_gem_test/config/storage.yml +34 -0
  72. data/friendly_slug_gem_test/db/migrate/20180628233122_create_blogs.rb +11 -0
  73. data/friendly_slug_gem_test/db/schema.rb +23 -0
  74. data/friendly_slug_gem_test/db/seeds.rb +7 -0
  75. data/friendly_slug_gem_test/lib/assets/.keep +0 -0
  76. data/friendly_slug_gem_test/lib/tasks/.keep +0 -0
  77. data/friendly_slug_gem_test/log/.keep +0 -0
  78. data/friendly_slug_gem_test/package.json +5 -0
  79. data/friendly_slug_gem_test/public/404.html +67 -0
  80. data/friendly_slug_gem_test/public/422.html +67 -0
  81. data/friendly_slug_gem_test/public/500.html +66 -0
  82. data/friendly_slug_gem_test/public/apple-touch-icon-precomposed.png +0 -0
  83. data/friendly_slug_gem_test/public/apple-touch-icon.png +0 -0
  84. data/friendly_slug_gem_test/public/favicon.ico +0 -0
  85. data/friendly_slug_gem_test/public/robots.txt +1 -0
  86. data/friendly_slug_gem_test/test/application_system_test_case.rb +5 -0
  87. data/friendly_slug_gem_test/test/controllers/.keep +0 -0
  88. data/friendly_slug_gem_test/test/controllers/blogs_controller_test.rb +48 -0
  89. data/friendly_slug_gem_test/test/fixtures/.keep +0 -0
  90. data/friendly_slug_gem_test/test/fixtures/blogs.yml +17 -0
  91. data/friendly_slug_gem_test/test/fixtures/files/.keep +0 -0
  92. data/friendly_slug_gem_test/test/helpers/.keep +0 -0
  93. data/friendly_slug_gem_test/test/integration/.keep +0 -0
  94. data/friendly_slug_gem_test/test/integration/main_slug_test.rb +14 -0
  95. data/friendly_slug_gem_test/test/mailers/.keep +0 -0
  96. data/friendly_slug_gem_test/test/models/.keep +0 -0
  97. data/friendly_slug_gem_test/test/models/blog_test.rb +9 -0
  98. data/friendly_slug_gem_test/test/system/.keep +0 -0
  99. data/friendly_slug_gem_test/test/system/blogs_test.rb +47 -0
  100. data/friendly_slug_gem_test/test/test_helper.rb +22 -0
  101. data/friendly_slug_gem_test/tmp/.keep +0 -0
  102. data/friendly_slug_gem_test/vendor/.keep +0 -0
  103. data/lib/friendly_slug/active_record/base.rb +10 -1
  104. data/lib/friendly_slug/version.rb +1 -1
  105. metadata +102 -2
@@ -0,0 +1,3 @@
1
+ // Place all the styles related to the blogs controller here.
2
+ // They will automatically be included in application.css.
3
+ // You can use Sass (SCSS) here: http://sass-lang.com/
@@ -0,0 +1,84 @@
1
+ body {
2
+ background-color: #fff;
3
+ color: #333;
4
+ margin: 33px;
5
+ font-family: verdana, arial, helvetica, sans-serif;
6
+ font-size: 13px;
7
+ line-height: 18px;
8
+ }
9
+
10
+ p, ol, ul, td {
11
+ font-family: verdana, arial, helvetica, sans-serif;
12
+ font-size: 13px;
13
+ line-height: 18px;
14
+ }
15
+
16
+ pre {
17
+ background-color: #eee;
18
+ padding: 10px;
19
+ font-size: 11px;
20
+ }
21
+
22
+ a {
23
+ color: #000;
24
+
25
+ &:visited {
26
+ color: #666;
27
+ }
28
+
29
+ &:hover {
30
+ color: #fff;
31
+ background-color: #000;
32
+ }
33
+ }
34
+
35
+ th {
36
+ padding-bottom: 5px;
37
+ }
38
+
39
+ td {
40
+ padding: 0 5px 7px;
41
+ }
42
+
43
+ div {
44
+ &.field, &.actions {
45
+ margin-bottom: 10px;
46
+ }
47
+ }
48
+
49
+ #notice {
50
+ color: green;
51
+ }
52
+
53
+ .field_with_errors {
54
+ padding: 2px;
55
+ background-color: red;
56
+ display: table;
57
+ }
58
+
59
+ #error_explanation {
60
+ width: 450px;
61
+ border: 2px solid red;
62
+ padding: 7px 7px 0;
63
+ margin-bottom: 20px;
64
+ background-color: #f0f0f0;
65
+
66
+ h2 {
67
+ text-align: left;
68
+ font-weight: bold;
69
+ padding: 5px 5px 5px 15px;
70
+ font-size: 12px;
71
+ margin: -7px -7px 0;
72
+ background-color: #c00;
73
+ color: #fff;
74
+ }
75
+
76
+ ul li {
77
+ font-size: 12px;
78
+ list-style: square;
79
+ }
80
+ }
81
+
82
+ label {
83
+ display: block;
84
+ }
@@ -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
@@ -0,0 +1,2 @@
1
+ class ApplicationController < ActionController::Base
2
+ end
@@ -0,0 +1,60 @@
1
+ class BlogsController < ApplicationController
2
+ before_action :set_blog, only: [:show, :edit, :update, :destroy]
3
+
4
+ def index
5
+ @blogs = Blog.all
6
+ end
7
+
8
+ def show
9
+ end
10
+
11
+ def new
12
+ @blog = Blog.new
13
+ end
14
+
15
+ def edit
16
+ end
17
+
18
+ def create
19
+ @blog = Blog.new(blog_params)
20
+
21
+ respond_to do |format|
22
+ if @blog.save
23
+ format.html { redirect_to @blog, notice: 'Blog was successfully created.' }
24
+ format.json { render :show, status: :created, location: @blog }
25
+ else
26
+ format.html { render :new }
27
+ format.json { render json: @blog.errors, status: :unprocessable_entity }
28
+ end
29
+ end
30
+ end
31
+
32
+ def update
33
+ respond_to do |format|
34
+ if @blog.update(blog_params)
35
+ format.html { redirect_to @blog, notice: 'Blog was successfully updated.' }
36
+ format.json { render :show, status: :ok, location: @blog }
37
+ else
38
+ format.html { render :edit }
39
+ format.json { render json: @blog.errors, status: :unprocessable_entity }
40
+ end
41
+ end
42
+ end
43
+
44
+ def destroy
45
+ @blog.destroy
46
+ respond_to do |format|
47
+ format.html { redirect_to blogs_url, notice: 'Blog was successfully destroyed.' }
48
+ format.json { head :no_content }
49
+ end
50
+ end
51
+
52
+ private
53
+ def set_blog
54
+ @blog = Blog.find_slugged(params[:id])
55
+ end
56
+
57
+ def blog_params
58
+ params.require(:blog).permit(:title, :body, :views)
59
+ end
60
+ end
@@ -0,0 +1,2 @@
1
+ module ApplicationHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module BlogsHelper
2
+ 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
@@ -0,0 +1,3 @@
1
+ class Blog < ApplicationRecord
2
+ build_friendly_slug :title, :id, use: :last
3
+ end
@@ -0,0 +1,2 @@
1
+ json.extract! blog, :id, :title, :body, :views, :created_at, :updated_at
2
+ json.url blog_url(blog, format: :json)
@@ -0,0 +1,32 @@
1
+ <%= form_with(model: blog, local: true) do |form| %>
2
+ <% if blog.errors.any? %>
3
+ <div id="error_explanation">
4
+ <h2><%= pluralize(blog.errors.count, "error") %> prohibited this blog from being saved:</h2>
5
+
6
+ <ul>
7
+ <% blog.errors.full_messages.each do |message| %>
8
+ <li><%= message %></li>
9
+ <% end %>
10
+ </ul>
11
+ </div>
12
+ <% end %>
13
+
14
+ <div class="field">
15
+ <%= form.label :title %>
16
+ <%= form.text_field :title %>
17
+ </div>
18
+
19
+ <div class="field">
20
+ <%= form.label :body %>
21
+ <%= form.text_area :body %>
22
+ </div>
23
+
24
+ <div class="field">
25
+ <%= form.label :views %>
26
+ <%= form.text_field :views %>
27
+ </div>
28
+
29
+ <div class="actions">
30
+ <%= form.submit %>
31
+ </div>
32
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <h1>Editing Blog</h1>
2
+
3
+ <%= render 'form', blog: @blog %>
4
+
5
+ <%= link_to 'Show', @blog %> |
6
+ <%= link_to 'Back', blogs_path %>
@@ -0,0 +1,31 @@
1
+ <p id="notice"><%= notice %></p>
2
+
3
+ <h1>Blogs</h1>
4
+
5
+ <table>
6
+ <thead>
7
+ <tr>
8
+ <th>Title</th>
9
+ <th>Body</th>
10
+ <th>Views</th>
11
+ <th colspan="3"></th>
12
+ </tr>
13
+ </thead>
14
+
15
+ <tbody>
16
+ <% @blogs.each do |blog| %>
17
+ <tr>
18
+ <td><%= blog.title %></td>
19
+ <td><%= blog.body %></td>
20
+ <td><%= blog.views %></td>
21
+ <td><%= link_to 'Show', blog %></td>
22
+ <td><%= link_to 'Edit', edit_blog_path(blog) %></td>
23
+ <td><%= link_to 'Destroy', blog, method: :delete, data: { confirm: 'Are you sure?' } %></td>
24
+ </tr>
25
+ <% end %>
26
+ </tbody>
27
+ </table>
28
+
29
+ <br>
30
+
31
+ <%= link_to 'New Blog', new_blog_path %>
@@ -0,0 +1 @@
1
+ json.array! @blogs, partial: 'blogs/blog', as: :blog
@@ -0,0 +1,5 @@
1
+ <h1>New Blog</h1>
2
+
3
+ <%= render 'form', blog: @blog %>
4
+
5
+ <%= link_to 'Back', blogs_path %>
@@ -0,0 +1,19 @@
1
+ <p id="notice"><%= notice %></p>
2
+
3
+ <p>
4
+ <strong>Title:</strong>
5
+ <%= @blog.title %>
6
+ </p>
7
+
8
+ <p>
9
+ <strong>Body:</strong>
10
+ <%= @blog.body %>
11
+ </p>
12
+
13
+ <p>
14
+ <strong>Views:</strong>
15
+ <%= @blog.views %>
16
+ </p>
17
+
18
+ <%= link_to 'Edit', edit_blog_path(@blog) %> |
19
+ <%= link_to 'Back', blogs_path %>
@@ -0,0 +1 @@
1
+ json.partial! "blogs/blog", blog: @blog
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>FriendlySlugGemTest</title>
5
+ <%= csrf_meta_tags %>
6
+ <%= csp_meta_tag %>
7
+
8
+ <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
9
+ <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
10
+ </head>
11
+
12
+ <body>
13
+ <%= yield %>
14
+ </body>
15
+ </html>
@@ -0,0 +1,13 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5
+ <style>
6
+ /* Email styles need to be inline */
7
+ </style>
8
+ </head>
9
+
10
+ <body>
11
+ <%= yield %>
12
+ </body>
13
+ </html>
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
3
+ load Gem.bin_path('bundler', 'bundle')
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+ begin
3
+ load File.expand_path('../spring', __FILE__)
4
+ rescue LoadError => e
5
+ raise unless e.message.include?('spring')
6
+ end
7
+ APP_PATH = File.expand_path('../config/application', __dir__)
8
+ require_relative '../config/boot'
9
+ require 'rails/commands'
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+ begin
3
+ load File.expand_path('../spring', __FILE__)
4
+ rescue LoadError => e
5
+ raise unless e.message.include?('spring')
6
+ end
7
+ require_relative '../config/boot'
8
+ require 'rake'
9
+ Rake.application.run
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby
2
+ require 'fileutils'
3
+ include FileUtils
4
+
5
+ # path to your application root.
6
+ APP_ROOT = File.expand_path('..', __dir__)
7
+
8
+ def system!(*args)
9
+ system(*args) || abort("\n== Command #{args} failed ==")
10
+ end
11
+
12
+ chdir APP_ROOT do
13
+ # This script is a starting point to setup your application.
14
+ # Add necessary setup steps to this file.
15
+
16
+ puts '== Installing dependencies =='
17
+ system! 'gem install bundler --conservative'
18
+ system('bundle check') || system!('bundle install')
19
+
20
+ # Install JavaScript dependencies if using Yarn
21
+ # system('bin/yarn')
22
+
23
+ # puts "\n== Copying sample files =="
24
+ # unless File.exist?('config/database.yml')
25
+ # cp 'config/database.yml.sample', 'config/database.yml'
26
+ # end
27
+
28
+ puts "\n== Preparing database =="
29
+ system! 'bin/rails db:setup'
30
+
31
+ puts "\n== Removing old logs and tempfiles =="
32
+ system! 'bin/rails log:clear tmp:clear'
33
+
34
+ puts "\n== Restarting application server =="
35
+ system! 'bin/rails restart'
36
+ end
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # This file loads spring without using Bundler, in order to be fast.
4
+ # It gets overwritten when you run the `spring binstub` command.
5
+
6
+ unless defined?(Spring)
7
+ require 'rubygems'
8
+ require 'bundler'
9
+
10
+ lockfile = Bundler::LockfileParser.new(Bundler.default_lockfile.read)
11
+ spring = lockfile.specs.detect { |spec| spec.name == "spring" }
12
+ if spring
13
+ Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path
14
+ gem 'spring', spring.version
15
+ require 'spring/binstub'
16
+ end
17
+ end
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+ require 'fileutils'
3
+ include FileUtils
4
+
5
+ # path to your application root.
6
+ APP_ROOT = File.expand_path('..', __dir__)
7
+
8
+ def system!(*args)
9
+ system(*args) || abort("\n== Command #{args} failed ==")
10
+ end
11
+
12
+ chdir APP_ROOT do
13
+ # This script is a way to update your development environment automatically.
14
+ # Add necessary update steps to this file.
15
+
16
+ puts '== Installing dependencies =='
17
+ system! 'gem install bundler --conservative'
18
+ system('bundle check') || system!('bundle install')
19
+
20
+ # Install JavaScript dependencies if using Yarn
21
+ # system('bin/yarn')
22
+
23
+ puts "\n== Updating database =="
24
+ system! 'bin/rails db:migrate'
25
+
26
+ puts "\n== Removing old logs and tempfiles =="
27
+ system! 'bin/rails log:clear tmp:clear'
28
+
29
+ puts "\n== Restarting application server =="
30
+ system! 'bin/rails restart'
31
+ end