mongoid-slugify 0.0.1 → 0.0.2

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.
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - rbx-2.0
6
+ - jruby
7
+ - ree
data/Gemfile CHANGED
@@ -3,6 +3,5 @@ source 'http://rubygems.org'
3
3
  # Specify your gem's dependencies in mongoid-slugify.gemspec
4
4
  gemspec
5
5
 
6
- gem 'rspec'
7
- gem 'database_cleaner'
8
- gem 'bson_ext'
6
+ gem 'bson_ext', :platforms => :ruby
7
+ gem 'activesupport', '~> 3.2.0'
data/README.rdoc CHANGED
@@ -1,3 +1,9 @@
1
+ = Mongoid::Slufigy
2
+
3
+ Mongoid::Slufigy is a gem, which helps you with generating slugs for your Mongoid models.
4
+
5
+ {<img src="https://secure.travis-ci.org/fxposter/mongoid-slugify.png" />}[http://travis-ci.org/fxposter/mongoid-slugify]
6
+
1
7
  == Installation
2
8
 
3
9
  Add mongoid-slugify to your Gemfile:
@@ -5,13 +5,43 @@ require 'active_support/concern'
5
5
  module Mongoid
6
6
  module Slugify
7
7
  extend ActiveSupport::Concern
8
-
8
+
9
9
  included do
10
10
  field :slug
11
11
  index :slug, :unique => true
12
12
  before_save :assign_slug
13
13
  end
14
14
 
15
+ def to_param
16
+ slug || super
17
+ end
18
+
19
+ private
20
+ def generate_slug
21
+ raise NotImplementedError
22
+ end
23
+
24
+ def generate_unique_slug
25
+ current_slug = generate_slug
26
+ pattern = /^#{Regexp.escape(current_slug)}(?:-(\d+))?$/
27
+
28
+ appropriate_class = self.class
29
+ while (appropriate_class.superclass.include?(Mongoid::Document))
30
+ appropriate_class = appropriate_class.superclass
31
+ end
32
+
33
+ existing_slugs = appropriate_class.where(:slug => pattern, :_id.ne => _id).only(:slug).map { |record| record.slug }
34
+ if existing_slugs.count > 0
35
+ max_counter = existing_slugs.map { |slug| (pattern.match(slug)[1] || 0).to_i }.max
36
+ current_slug += "-#{max_counter + 1}"
37
+ end
38
+ current_slug
39
+ end
40
+
41
+ def assign_slug
42
+ self.slug = generate_unique_slug
43
+ end
44
+
15
45
  module ClassMethods
16
46
  def find_by_slug(slug)
17
47
  where(:slug => slug).first
@@ -20,7 +50,7 @@ module Mongoid
20
50
  def find_by_slug!(slug)
21
51
  find_by_slug(slug) || raise(Mongoid::Errors::DocumentNotFound.new(self, slug))
22
52
  end
23
-
53
+
24
54
  def find_by_slug_or_id(slug_or_id)
25
55
  find_by_slug(slug_or_id) || where(:id => id).first
26
56
  end
@@ -29,37 +59,5 @@ module Mongoid
29
59
  find_by_slug(slug_or_id) || find(slug_or_id)
30
60
  end
31
61
  end
32
-
33
- module InstanceMethods
34
- def to_param
35
- slug || super
36
- end
37
-
38
- private
39
- def generate_slug
40
- raise NotImplementedError
41
- end
42
-
43
- def generate_unique_slug
44
- current_slug = generate_slug
45
- pattern = /^#{Regexp.escape(current_slug)}(?:-(\d+))?$/
46
-
47
- appropriate_class = self.class
48
- while (appropriate_class.superclass.include?(Mongoid::Document))
49
- appropriate_class = appropriate_class.superclass
50
- end
51
-
52
- existing_slugs = appropriate_class.where(:slug => pattern, :_id.ne => _id).only(:slug).map { |record| record.slug }
53
- if existing_slugs.count > 0
54
- max_counter = existing_slugs.map { |slug| (pattern.match(slug)[1] || 0).to_i }.max
55
- current_slug += "-#{max_counter + 1}"
56
- end
57
- current_slug
58
- end
59
-
60
- def assign_slug
61
- self.slug = generate_unique_slug
62
- end
63
- end
64
62
  end
65
63
  end
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module Slugify
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
@@ -14,7 +14,11 @@ Gem::Specification.new do |gem|
14
14
  gem.name = "mongoid-slugify"
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = Mongoid::Slugify::VERSION
17
-
18
- gem.add_runtime_dependency 'activesupport', '>= 3.0', '< 3.2'
17
+
18
+ gem.add_runtime_dependency 'activesupport', '~> 3.0'
19
19
  gem.add_runtime_dependency 'mongoid', '~> 2.0'
20
+
21
+ gem.add_development_dependency 'rake'
22
+ gem.add_development_dependency 'rspec'
23
+ gem.add_development_dependency 'database_cleaner'
20
24
  end
@@ -21,9 +21,8 @@ class Book
21
21
  include Mongoid::Document
22
22
  include Mongoid::Slugify
23
23
  field :title
24
- embeds_many :subjects
25
24
  references_many :authors
26
-
25
+
27
26
  private
28
27
  def generate_slug
29
28
  title.parameterize
@@ -39,7 +38,7 @@ class Person
39
38
  field :name
40
39
  embeds_many :relationships
41
40
  referenced_in :author, :inverse_of => :characters
42
-
41
+
43
42
  private
44
43
  def generate_slug
45
44
  name.parameterize
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-slugify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,25 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-17 00:00:00.000000000Z
12
+ date: 2012-03-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &70314068885540 !ruby/object:Gem::Requirement
16
+ requirement: &70152738090960 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - ~>
20
20
  - !ruby/object:Gem::Version
21
21
  version: '3.0'
22
- - - <
23
- - !ruby/object:Gem::Version
24
- version: '3.2'
25
22
  type: :runtime
26
23
  prerelease: false
27
- version_requirements: *70314068885540
24
+ version_requirements: *70152738090960
28
25
  - !ruby/object:Gem::Dependency
29
26
  name: mongoid
30
- requirement: &70314068884600 !ruby/object:Gem::Requirement
27
+ requirement: &70152738090440 !ruby/object:Gem::Requirement
31
28
  none: false
32
29
  requirements:
33
30
  - - ~>
@@ -35,7 +32,40 @@ dependencies:
35
32
  version: '2.0'
36
33
  type: :runtime
37
34
  prerelease: false
38
- version_requirements: *70314068884600
35
+ version_requirements: *70152738090440
36
+ - !ruby/object:Gem::Dependency
37
+ name: rake
38
+ requirement: &70152738089980 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70152738089980
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: &70152738089400 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70152738089400
58
+ - !ruby/object:Gem::Dependency
59
+ name: database_cleaner
60
+ requirement: &70152738088960 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70152738088960
39
69
  description: Provides a simple way to add slug generation to a Mongoid model
40
70
  email:
41
71
  - fxposter@gmail.com
@@ -44,6 +74,7 @@ extensions: []
44
74
  extra_rdoc_files: []
45
75
  files:
46
76
  - .gitignore
77
+ - .travis.yml
47
78
  - Gemfile
48
79
  - README.rdoc
49
80
  - Rakefile
@@ -73,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
104
  version: '0'
74
105
  requirements: []
75
106
  rubyforge_project:
76
- rubygems_version: 1.8.10
107
+ rubygems_version: 1.8.16
77
108
  signing_key:
78
109
  specification_version: 3
79
110
  summary: Managing slugs in Mongoid models