slugworth 1.2.0 → 1.2.1
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.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +4 -0
 - data/README.md +5 -5
 - data/lib/slugworth.rb +12 -7
 - data/lib/slugworth/version.rb +1 -1
 - data/lib/slugworth_shared_examples.rb +7 -1
 - data/slugworth.gemspec +6 -6
 - metadata +5 -5
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 29c5a2617fdb5cb5bfebeb4545eeb25e19833dba
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 4667dd9a4eab4e2934a22694fe730bb239da6f60
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 2695d24b686191d58b56ffd5e04e2083b5cc059be663fc6a5a433a096de361a9a060b339f8f67471dcae66439bc5004026a02b69ad502a9cfed69544f0c34473
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 112887759a1197cbc69e74e06597cb5ae5f062a4143b31a09c31ac9883f2334d2610d22ae4553201c9eed94928e66459f7aefb27a26a96a68eafe32a106ba97b
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,8 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            [](http://badge.fury.io/rb/slugworth)
         
     | 
| 
      
 4 
     | 
    
         
            +
            [](https://travis-ci.org/mattpolito/slugworth)
         
     | 
| 
      
 5 
     | 
    
         
            +
            [](https://codeclimate.com/github/mattpolito/slugworth)
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            Simple slug functionality for your ActiveRecord objects
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
         @@ -41,12 +41,12 @@ class User < ActiveRecord::Base 
     | 
|
| 
       41 
41 
     | 
    
         
             
            end
         
     | 
| 
       42 
42 
     | 
    
         
             
            ```
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
     | 
    
         
            -
            After you `include` the `Slugworth` module, all you need to do is declare what method will be used to create the slug. The method passed to `slugged_with` will then be  
     | 
| 
      
 44 
     | 
    
         
            +
            After you `include` the `Slugworth` module, all you need to do is declare what method will be used to create the slug. The method passed to `slugged_with` will then be parameterized.
         
     | 
| 
       45 
45 
     | 
    
         | 
| 
       46 
46 
     | 
    
         
             
            This provides most of the default slug functionality you would need.
         
     | 
| 
       47 
47 
     | 
    
         | 
| 
       48 
48 
     | 
    
         
             
            * Finders `.find_by_slug` & `.find_by_slug!` are provided. This will, of course, do what you expect and find a single record by the slug attribute provided.
         
     | 
| 
       49 
     | 
    
         
            -
            * `#to_param` has been defined as a  
     | 
| 
      
 49 
     | 
    
         
            +
            * `#to_param` has been defined as a parameterized version of the attribute declared to `slugged_with`.
         
     | 
| 
       50 
50 
     | 
    
         
             
            * Validations stating that `slug` is present and unique in the database.
         
     | 
| 
       51 
51 
     | 
    
         | 
| 
       52 
52 
     | 
    
         
             
            ### Scoping uniqueness
         
     | 
    
        data/lib/slugworth.rb
    CHANGED
    
    | 
         @@ -5,15 +5,15 @@ module Slugworth 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
              included do
         
     | 
| 
       7 
7 
     | 
    
         
             
                cattr_accessor :slug_attribute, :slug_scope, :slug_incremental, :slug_updatable
         
     | 
| 
       8 
     | 
    
         
            -
                before_validation(:add_slug)
         
     | 
| 
      
 8 
     | 
    
         
            +
                before_validation(:add_slug, if: :slug_attribute_value)
         
     | 
| 
       9 
9 
     | 
    
         
             
              end
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
              module ClassMethods
         
     | 
| 
       12 
     | 
    
         
            -
                def slugged_with(slug_attribute, opts={})
         
     | 
| 
       13 
     | 
    
         
            -
                  self.slug_attribute 
     | 
| 
       14 
     | 
    
         
            -
                  self.slug_scope 
     | 
| 
      
 12 
     | 
    
         
            +
                def slugged_with(slug_attribute, opts = {})
         
     | 
| 
      
 13 
     | 
    
         
            +
                  self.slug_attribute   = slug_attribute
         
     | 
| 
      
 14 
     | 
    
         
            +
                  self.slug_scope       = opts.delete(:scope)
         
     | 
| 
       15 
15 
     | 
    
         
             
                  self.slug_incremental = opts.delete(:incremental)
         
     | 
| 
       16 
     | 
    
         
            -
                  self.slug_updatable 
     | 
| 
      
 16 
     | 
    
         
            +
                  self.slug_updatable   = opts.delete(:updatable)
         
     | 
| 
       17 
17 
     | 
    
         
             
                  validates_uniqueness_of :slug, scope: slug_scope
         
     | 
| 
       18 
18 
     | 
    
         
             
                end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
         @@ -29,6 +29,7 @@ module Slugworth 
     | 
|
| 
       29 
29 
     | 
    
         
             
              def to_param; slug; end
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
31 
     | 
    
         
             
              private
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
       32 
33 
     | 
    
         
             
              def add_slug
         
     | 
| 
       33 
34 
     | 
    
         
             
                self.slug = processed_slug if generate_slug?
         
     | 
| 
       34 
35 
     | 
    
         
             
              end
         
     | 
| 
         @@ -37,12 +38,16 @@ module Slugworth 
     | 
|
| 
       37 
38 
     | 
    
         
             
                !slug.present? || slug_updatable && changes[slug_attribute].present?
         
     | 
| 
       38 
39 
     | 
    
         
             
              end
         
     | 
| 
       39 
40 
     | 
    
         | 
| 
      
 41 
     | 
    
         
            +
              def slug_attribute_value
         
     | 
| 
      
 42 
     | 
    
         
            +
                public_send(slug_attribute)
         
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
       40 
45 
     | 
    
         
             
              def processed_slug
         
     | 
| 
       41 
     | 
    
         
            -
                slug_incremental ? 
     | 
| 
      
 46 
     | 
    
         
            +
                slug_incremental ? process_incremental_slug : parameterized_slug
         
     | 
| 
       42 
47 
     | 
    
         
             
              end
         
     | 
| 
       43 
48 
     | 
    
         | 
| 
       44 
49 
     | 
    
         
             
              def parameterized_slug
         
     | 
| 
       45 
     | 
    
         
            -
                 
     | 
| 
      
 50 
     | 
    
         
            +
                slug_attribute_value.parameterize
         
     | 
| 
       46 
51 
     | 
    
         
             
              end
         
     | 
| 
       47 
52 
     | 
    
         | 
| 
       48 
53 
     | 
    
         
             
              def process_incremental_slug
         
     | 
    
        data/lib/slugworth/version.rb
    CHANGED
    
    
| 
         @@ -1,11 +1,17 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            shared_examples_for :has_slug_functionality do
         
     | 
| 
       2 
2 
     | 
    
         
             
              describe "#slug" do
         
     | 
| 
       3 
3 
     | 
    
         
             
                context "when no slug is set" do
         
     | 
| 
       4 
     | 
    
         
            -
                  specify 'slug is generated' do
         
     | 
| 
      
 4 
     | 
    
         
            +
                  specify 'slug is generated with slug attribute' do
         
     | 
| 
       5 
5 
     | 
    
         
             
                    obj = described_class.new(described_class.slug_attribute => 'Generated slug')
         
     | 
| 
       6 
6 
     | 
    
         
             
                    obj.valid?
         
     | 
| 
       7 
7 
     | 
    
         
             
                    expect(obj.slug).to eq('generated-slug')
         
     | 
| 
       8 
8 
     | 
    
         
             
                  end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  specify 'slug is not generated with no slug attribute' do
         
     | 
| 
      
 11 
     | 
    
         
            +
                    obj = described_class.new
         
     | 
| 
      
 12 
     | 
    
         
            +
                    obj.valid?
         
     | 
| 
      
 13 
     | 
    
         
            +
                    expect(obj.slug).to be_nil
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
       9 
15 
     | 
    
         
             
                end
         
     | 
| 
       10 
16 
     | 
    
         | 
| 
       11 
17 
     | 
    
         
             
                context "when the slug is set" do
         
     | 
    
        data/slugworth.gemspec
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # coding: utf-8
         
     | 
| 
       2 
     | 
    
         
            -
            lib = File.expand_path( 
     | 
| 
      
 2 
     | 
    
         
            +
            lib = File.expand_path("../lib", __FILE__)
         
     | 
| 
       3 
3 
     | 
    
         
             
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         
     | 
| 
       4 
     | 
    
         
            -
            require  
     | 
| 
      
 4 
     | 
    
         
            +
            require "slugworth/version"
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Gem::Specification.new do |spec|
         
     | 
| 
       7 
7 
     | 
    
         
             
              spec.name          = "slugworth"
         
     | 
| 
         @@ -17,13 +17,13 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       17 
17 
     | 
    
         
             
              spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
         
     | 
| 
       18 
18 
     | 
    
         
             
              spec.require_paths = ["lib"]
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
              spec.required_ruby_version =  
     | 
| 
      
 20 
     | 
    
         
            +
              spec.required_ruby_version = ">= 1.9.2"
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
       22 
22 
     | 
    
         
             
              spec.add_development_dependency "bundler", "~> 1.3"
         
     | 
| 
       23 
23 
     | 
    
         
             
              spec.add_development_dependency "rake"
         
     | 
| 
       24 
     | 
    
         
            -
              spec.add_development_dependency "rspec", "~>  
     | 
| 
       25 
     | 
    
         
            -
              spec.add_development_dependency  
     | 
| 
      
 24 
     | 
    
         
            +
              spec.add_development_dependency "rspec", "~> 3.3"
         
     | 
| 
      
 25 
     | 
    
         
            +
              spec.add_development_dependency "activerecord", "~> 4.0.0"
         
     | 
| 
       26 
26 
     | 
    
         
             
              spec.add_development_dependency "pry"
         
     | 
| 
       27 
     | 
    
         
            -
              spec.add_development_dependency "database_cleaner",  
     | 
| 
      
 27 
     | 
    
         
            +
              spec.add_development_dependency "database_cleaner", "~> 1.0.1"
         
     | 
| 
       28 
28 
     | 
    
         
             
              spec.add_development_dependency "sqlite3"
         
     | 
| 
       29 
29 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: slugworth
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1.2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.2.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Matt Polito
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2015- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2015-12-09 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
         @@ -44,14 +44,14 @@ dependencies: 
     | 
|
| 
       44 
44 
     | 
    
         
             
                requirements:
         
     | 
| 
       45 
45 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       46 
46 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       47 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 47 
     | 
    
         
            +
                    version: '3.3'
         
     | 
| 
       48 
48 
     | 
    
         
             
              type: :development
         
     | 
| 
       49 
49 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       50 
50 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       51 
51 
     | 
    
         
             
                requirements:
         
     | 
| 
       52 
52 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       53 
53 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       54 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 54 
     | 
    
         
            +
                    version: '3.3'
         
     | 
| 
       55 
55 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       56 
56 
     | 
    
         
             
              name: activerecord
         
     | 
| 
       57 
57 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -147,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       147 
147 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       148 
148 
     | 
    
         
             
            requirements: []
         
     | 
| 
       149 
149 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       150 
     | 
    
         
            -
            rubygems_version: 2.4. 
     | 
| 
      
 150 
     | 
    
         
            +
            rubygems_version: 2.4.6
         
     | 
| 
       151 
151 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       152 
152 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       153 
153 
     | 
    
         
             
            summary: Easy slug functionality
         
     |