rails_slugs 1.0.10 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +7 -0
  2. metadata +18 -133
  3. data/MIT-LICENSE +0 -20
  4. data/README.rdoc +0 -38
  5. data/Rakefile +0 -38
  6. data/lib/rails_slugs.rb +0 -7
  7. data/lib/rails_slugs/active_record/base.rb +0 -156
  8. data/lib/rails_slugs/active_record/relation.rb +0 -17
  9. data/lib/rails_slugs/railtie.rb +0 -10
  10. data/lib/rails_slugs/version.rb +0 -5
  11. data/test/dummy/README.rdoc +0 -261
  12. data/test/dummy/Rakefile +0 -7
  13. data/test/dummy/app/assets/javascripts/application.js +0 -15
  14. data/test/dummy/app/assets/stylesheets/application.css +0 -13
  15. data/test/dummy/app/controllers/application_controller.rb +0 -3
  16. data/test/dummy/app/helpers/application_helper.rb +0 -2
  17. data/test/dummy/app/models/simple.rb +0 -7
  18. data/test/dummy/app/models/translatable.rb +0 -8
  19. data/test/dummy/app/models/translatable_translation.rb +0 -13
  20. data/test/dummy/app/models/without.rb +0 -5
  21. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  22. data/test/dummy/config.ru +0 -4
  23. data/test/dummy/config/application.rb +0 -59
  24. data/test/dummy/config/boot.rb +0 -10
  25. data/test/dummy/config/database.yml +0 -25
  26. data/test/dummy/config/environment.rb +0 -5
  27. data/test/dummy/config/environments/development.rb +0 -37
  28. data/test/dummy/config/environments/production.rb +0 -67
  29. data/test/dummy/config/environments/test.rb +0 -37
  30. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  31. data/test/dummy/config/initializers/inflections.rb +0 -15
  32. data/test/dummy/config/initializers/mime_types.rb +0 -5
  33. data/test/dummy/config/initializers/secret_token.rb +0 -7
  34. data/test/dummy/config/initializers/session_store.rb +0 -8
  35. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  36. data/test/dummy/config/locales/en.yml +0 -5
  37. data/test/dummy/config/routes.rb +0 -58
  38. data/test/dummy/db/development.sqlite3 +0 -0
  39. data/test/dummy/db/migrate/20120923194640_create_translatables.rb +0 -9
  40. data/test/dummy/db/migrate/20120923195534_create_translatables_i18n.rb +0 -13
  41. data/test/dummy/db/migrate/20120924010158_create_simples.rb +0 -11
  42. data/test/dummy/db/migrate/20130128234241_create_withouts.rb +0 -9
  43. data/test/dummy/db/schema.rb +0 -38
  44. data/test/dummy/db/test.sqlite3 +0 -0
  45. data/test/dummy/log/development.log +0 -776
  46. data/test/dummy/log/test.log +0 -11455
  47. data/test/dummy/public/404.html +0 -26
  48. data/test/dummy/public/422.html +0 -26
  49. data/test/dummy/public/500.html +0 -25
  50. data/test/dummy/public/favicon.ico +0 -0
  51. data/test/dummy/script/rails +0 -6
  52. data/test/rails_slugs_test.rb +0 -9
  53. data/test/records_test.rb +0 -82
  54. data/test/test_helper.rb +0 -21
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f847421d929cd21042320896e2de96ff65b9c2d4
4
+ data.tar.gz: 691fb3fcb4f734b5768b49a2afe00b4fb64b5d85
5
+ SHA512:
6
+ metadata.gz: 3475ab92c2f10034be853bdbb5f205518fbc01b45012d6d26772a3a6ed29295a96777f0f430a08993a2f33a8de5b419df063daf3fd23c63efb8ba7a9848ab311
7
+ data.tar.gz: e3c09bb2a6bd17306620707b046782c24405aea6f4e6c4eb9944c067267a354a38cc3ca12552169e620fc065025640731342bb8ac2bc1b4fd46e3f55f9900313
metadata CHANGED
@@ -1,173 +1,58 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_slugs
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.10
5
- prerelease:
4
+ version: 1.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Mattways
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-06-27 00:00:00.000000000 Z
11
+ date: 2013-08-19 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: rails
14
+ name: slugs
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: 3.2.8
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- version: 3.2.8
30
- - !ruby/object:Gem::Dependency
31
- name: sqlite3
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
17
+ - - '>='
36
18
  - !ruby/object:Gem::Version
37
19
  version: '0'
38
- type: :development
20
+ type: :runtime
39
21
  prerelease: false
40
22
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
23
  requirements:
43
- - - ! '>='
24
+ - - '>='
44
25
  - !ruby/object:Gem::Version
45
26
  version: '0'
46
- description: Inspired in friendly_id but more minimalistic.
27
+ description: This gem has been renamed to just "slugs".
47
28
  email:
48
29
  - contact@mattways.com
49
30
  executables: []
50
31
  extensions: []
51
32
  extra_rdoc_files: []
52
- files:
53
- - lib/rails_slugs/active_record/base.rb
54
- - lib/rails_slugs/active_record/relation.rb
55
- - lib/rails_slugs/railtie.rb
56
- - lib/rails_slugs/version.rb
57
- - lib/rails_slugs.rb
58
- - MIT-LICENSE
59
- - Rakefile
60
- - README.rdoc
61
- - test/dummy/app/assets/javascripts/application.js
62
- - test/dummy/app/assets/stylesheets/application.css
63
- - test/dummy/app/controllers/application_controller.rb
64
- - test/dummy/app/helpers/application_helper.rb
65
- - test/dummy/app/models/simple.rb
66
- - test/dummy/app/models/translatable.rb
67
- - test/dummy/app/models/translatable_translation.rb
68
- - test/dummy/app/models/without.rb
69
- - test/dummy/app/views/layouts/application.html.erb
70
- - test/dummy/config/application.rb
71
- - test/dummy/config/boot.rb
72
- - test/dummy/config/database.yml
73
- - test/dummy/config/environment.rb
74
- - test/dummy/config/environments/development.rb
75
- - test/dummy/config/environments/production.rb
76
- - test/dummy/config/environments/test.rb
77
- - test/dummy/config/initializers/backtrace_silencers.rb
78
- - test/dummy/config/initializers/inflections.rb
79
- - test/dummy/config/initializers/mime_types.rb
80
- - test/dummy/config/initializers/secret_token.rb
81
- - test/dummy/config/initializers/session_store.rb
82
- - test/dummy/config/initializers/wrap_parameters.rb
83
- - test/dummy/config/locales/en.yml
84
- - test/dummy/config/routes.rb
85
- - test/dummy/config.ru
86
- - test/dummy/db/development.sqlite3
87
- - test/dummy/db/migrate/20120923194640_create_translatables.rb
88
- - test/dummy/db/migrate/20120923195534_create_translatables_i18n.rb
89
- - test/dummy/db/migrate/20120924010158_create_simples.rb
90
- - test/dummy/db/migrate/20130128234241_create_withouts.rb
91
- - test/dummy/db/schema.rb
92
- - test/dummy/db/test.sqlite3
93
- - test/dummy/log/development.log
94
- - test/dummy/log/test.log
95
- - test/dummy/public/404.html
96
- - test/dummy/public/422.html
97
- - test/dummy/public/500.html
98
- - test/dummy/public/favicon.ico
99
- - test/dummy/Rakefile
100
- - test/dummy/README.rdoc
101
- - test/dummy/script/rails
102
- - test/rails_slugs_test.rb
103
- - test/records_test.rb
104
- - test/test_helper.rb
105
- homepage: https://github.com/mattways/rails_slugs
106
- licenses: []
33
+ files: []
34
+ homepage: https://github.com/mattways/slugs
35
+ licenses:
36
+ - MIT
37
+ metadata: {}
107
38
  post_install_message:
108
39
  rdoc_options: []
109
40
  require_paths:
110
41
  - lib
111
42
  required_ruby_version: !ruby/object:Gem::Requirement
112
- none: false
113
43
  requirements:
114
- - - ! '>='
44
+ - - '>='
115
45
  - !ruby/object:Gem::Version
116
46
  version: '0'
117
47
  required_rubygems_version: !ruby/object:Gem::Requirement
118
- none: false
119
48
  requirements:
120
- - - ! '>='
49
+ - - '>='
121
50
  - !ruby/object:Gem::Version
122
51
  version: '0'
123
52
  requirements: []
124
53
  rubyforge_project:
125
- rubygems_version: 1.8.23
54
+ rubygems_version: 2.0.3
126
55
  signing_key:
127
- specification_version: 3
128
- summary: Toolkit for Rails slugs.
129
- test_files:
130
- - test/dummy/app/assets/javascripts/application.js
131
- - test/dummy/app/assets/stylesheets/application.css
132
- - test/dummy/app/controllers/application_controller.rb
133
- - test/dummy/app/helpers/application_helper.rb
134
- - test/dummy/app/models/simple.rb
135
- - test/dummy/app/models/translatable.rb
136
- - test/dummy/app/models/translatable_translation.rb
137
- - test/dummy/app/models/without.rb
138
- - test/dummy/app/views/layouts/application.html.erb
139
- - test/dummy/config/application.rb
140
- - test/dummy/config/boot.rb
141
- - test/dummy/config/database.yml
142
- - test/dummy/config/environment.rb
143
- - test/dummy/config/environments/development.rb
144
- - test/dummy/config/environments/production.rb
145
- - test/dummy/config/environments/test.rb
146
- - test/dummy/config/initializers/backtrace_silencers.rb
147
- - test/dummy/config/initializers/inflections.rb
148
- - test/dummy/config/initializers/mime_types.rb
149
- - test/dummy/config/initializers/secret_token.rb
150
- - test/dummy/config/initializers/session_store.rb
151
- - test/dummy/config/initializers/wrap_parameters.rb
152
- - test/dummy/config/locales/en.yml
153
- - test/dummy/config/routes.rb
154
- - test/dummy/config.ru
155
- - test/dummy/db/development.sqlite3
156
- - test/dummy/db/migrate/20120923194640_create_translatables.rb
157
- - test/dummy/db/migrate/20120923195534_create_translatables_i18n.rb
158
- - test/dummy/db/migrate/20120924010158_create_simples.rb
159
- - test/dummy/db/migrate/20130128234241_create_withouts.rb
160
- - test/dummy/db/schema.rb
161
- - test/dummy/db/test.sqlite3
162
- - test/dummy/log/development.log
163
- - test/dummy/log/test.log
164
- - test/dummy/public/404.html
165
- - test/dummy/public/422.html
166
- - test/dummy/public/500.html
167
- - test/dummy/public/favicon.ico
168
- - test/dummy/Rakefile
169
- - test/dummy/README.rdoc
170
- - test/dummy/script/rails
171
- - test/rails_slugs_test.rb
172
- - test/records_test.rb
173
- - test/test_helper.rb
56
+ specification_version: 4
57
+ summary: Renamed to just "slugs"
58
+ test_files: []
data/MIT-LICENSE DELETED
@@ -1,20 +0,0 @@
1
- Copyright 2012 Mattways
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc DELETED
@@ -1,38 +0,0 @@
1
- === NOTE: From version 1.0.5 and above a index it appended if a new slug it's equal to a old one
2
-
3
- ---
4
-
5
- {<img src="https://codeclimate.com/github/mattways/rails_slugs.png" />}[https://codeclimate.com/github/mattways/rails_slugs] {<img src="https://secure.travis-ci.org/mattways/rails_slugs.png?branch=master" alt="Build Status" />}[https://travis-ci.org/mattways/rails_slugs] {<img src="https://gemnasium.com/mattways/rails_slugs.png" alt="Dependency Status" />}[https://gemnasium.com/mattways/rails_slugs]
6
-
7
- = Rails Slugs
8
-
9
- Inspired in friendly_id but more minimalistic.
10
-
11
- = Install
12
-
13
- Put this line in your Gemfile:
14
- gem 'rails_slugs'
15
-
16
- Then bundle:
17
- $ bundle
18
-
19
- = Usage
20
-
21
- Add the column in your migration:
22
- t.string :slug
23
-
24
- (If you are using rails-i18n-record you need to place the column in the translation table, this has been done this way because it's easier to maintain and your queries will be faster avoiding extra joins)
25
-
26
- Update your db:
27
- rake db:migrate
28
-
29
- Call the slug method in your model:
30
-
31
- If you want to use the value of one field:
32
- slug :prop
33
-
34
- To concatenate the value of multiple fields:
35
- slug :prop1, :prop2, :prop3
36
-
37
- Or if you need a very custom slug:
38
- slug proc { |record| "#{record.prop}-custom" }
data/Rakefile DELETED
@@ -1,38 +0,0 @@
1
- #!/usr/bin/env rake
2
- begin
3
- require 'bundler/setup'
4
- rescue LoadError
5
- puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
- end
7
- begin
8
- require 'rdoc/task'
9
- rescue LoadError
10
- require 'rdoc/rdoc'
11
- require 'rake/rdoctask'
12
- RDoc::Task = Rake::RDocTask
13
- end
14
-
15
- RDoc::Task.new(:rdoc) do |rdoc|
16
- rdoc.rdoc_dir = 'rdoc'
17
- rdoc.title = 'RailsSlugs'
18
- rdoc.options << '--line-numbers'
19
- rdoc.rdoc_files.include('README.rdoc')
20
- rdoc.rdoc_files.include('lib/**/*.rb')
21
- end
22
-
23
-
24
-
25
-
26
- Bundler::GemHelper.install_tasks
27
-
28
- require 'rake/testtask'
29
-
30
- Rake::TestTask.new(:test) do |t|
31
- t.libs << 'lib'
32
- t.libs << 'test'
33
- t.pattern = 'test/**/*_test.rb'
34
- t.verbose = false
35
- end
36
-
37
-
38
- task :default => :test
data/lib/rails_slugs.rb DELETED
@@ -1,7 +0,0 @@
1
- require 'rails_slugs/active_record/base'
2
- require 'rails_slugs/active_record/relation'
3
- require 'rails_slugs/railtie'
4
- require 'rails_slugs/version'
5
-
6
- module RailsSlugs
7
- end
@@ -1,156 +0,0 @@
1
- module RailsSlugs
2
- module ActiveRecord
3
- module Base
4
-
5
- def self.included(base)
6
- base.extend ClassMethods
7
- end
8
-
9
- def to_param
10
- self.class.sluggable? ? (slug_changed? ? slug_was : slug) : super
11
- end
12
-
13
- protected
14
-
15
- def assign_slug
16
- if slug.nil? or not slug_changed?
17
- options = self.class.slug
18
- case options
19
- when Symbol
20
- value = send(options)
21
- when Array
22
- value = options.each.map{|p|send(p)}.join(' ')
23
- when Proc
24
- value = options.call(self)
25
- end
26
- if value.present?
27
- value = value.parameterize
28
- previous_value = previous_slug?(value)
29
- if previous_value != false
30
- if previous_value.present?
31
- index = Regexp.new(value + '-(\d+)$').match(previous_value)
32
- if index.present?
33
- value << "-#{index[1].to_i + 1}"
34
- else
35
- value << '-1'
36
- end
37
- end
38
- self.slug = value
39
- end
40
- end
41
- end
42
- end
43
-
44
- module ClassMethods
45
-
46
- def inherited(subclass)
47
- subclass.instance_variable_set(:@slug, @slug)
48
- super
49
- end
50
-
51
- def sluggable?
52
- @slug.present?
53
- end
54
-
55
- def slug(*args)
56
- if args.any?
57
- unless sluggable?
58
- if respond_to? :translatable? and translatable?
59
- include RailsSlugs::ActiveRecord::Base::Translatable
60
- attr_translatable :slug
61
- before_validation :generate_slugs
62
- else
63
- include RailsSlugs::ActiveRecord::Base::NonTranslatable
64
- before_validation :generate_slug
65
- end
66
- @slug = args.size == 1 ? args[0] : args
67
- end
68
- end
69
- @slug
70
- end
71
-
72
- end
73
- module NonTranslatable
74
-
75
- def self.included(base)
76
- base.extend ClassMethods
77
- end
78
-
79
- protected
80
-
81
- def previous_slug?(slug)
82
- r = self.class.where(
83
- "(slug = '#{slug}' OR slug LIKE '#{slug}-_')"
84
- ).order(
85
- 'slug DESC'
86
- ).first
87
- r.respond_to?(:slug) ? (r == self ? false : r.slug) : nil
88
- end
89
-
90
- def generate_slug
91
- assign_slug
92
- end
93
-
94
- module ClassMethods
95
-
96
- def exists_by_slug(id)
97
- exists? :slug => id
98
- end
99
-
100
- end
101
- end
102
- module Translatable
103
-
104
- def self.included(base)
105
- base.extend ClassMethods
106
- end
107
-
108
- protected
109
-
110
- def change_locale(locale)
111
- I18n.locale = locale
112
- with_locale locale
113
- end
114
-
115
- def previous_slug?(slug)
116
- t = self.class.reflect_on_association(:translations)
117
- r = self.class.joins(
118
- "INNER JOIN #{t.table_name} t ON t.#{t.foreign_key} = #{self.class.table_name}.#{t.active_record_primary_key}"
119
- ).where(
120
- "(t.slug = '#{slug}' OR t.slug LIKE '#{slug}-_') AND t.locale = '#{I18n.locale.to_s}'"
121
- ).order(
122
- 't.slug DESC'
123
- ).first
124
- r.respond_to?(:slug) ? (r == self ? false : r.slug) : nil
125
- end
126
-
127
- def generate_slugs
128
- locale = current_locale
129
- I18n.available_locales.each do |locale|
130
- change_locale locale
131
- assign_slug
132
- end
133
- change_locale locale
134
- end
135
-
136
- module ClassMethods
137
-
138
- def find_by_slug(id)
139
- t = reflect_on_association(:translations)
140
- joins(
141
- "INNER JOIN #{t.table_name} t ON t.#{t.foreign_key} = #{table_name}.#{t.active_record_primary_key}"
142
- ).where(
143
- "t.slug = '#{id}' AND t.locale = '#{I18n.locale.to_s}'"
144
- ).readonly(false).first
145
- end
146
-
147
- def exists_by_slug(id)
148
- t = reflect_on_association(:translations)
149
- joins(:translations).exists?(t.table_name.to_sym => {:slug => id, :locale => I18n.locale})
150
- end
151
-
152
- end
153
- end
154
- end
155
- end
156
- end