friendly_id 2.1.3 → 2.1.4

Sign up to get free protection for your applications and to get access to all the features.
data.tar.gz.sig CHANGED
@@ -1,2 +1 @@
1
- (-^kl}�˕���j�lEG)=���1������E�` (��"w�tE� � 6f�ͱ�AZ�o��D�d?�["�Dz*`�;>G�3��)+L�� 2+c��Dzk���s��b���Mиܑ�R3���<u #��3!���I�TV�z��^�p������Ҩ��� ���3L�D'ޱ�ް��wq}l��:��(zX_(��Ρ
2
- ��=x.��a�]���V�s�}OA��qE���b�E=3y���O�{(B�^iW�m�
1
+ o���Z����u����i(v�U�>��= PA)Fj�1��b?9W^e��B��#+�6�j< g�.�B��.S�*��EiRs����#���"x`�������� ��gV�Lyx�H�w!T������XzA���qЏ��d�<=R�2圲@�<���X#�I��p�!�QĪ�nK������� �>q���Y���#M�����\������5C<E��4�Bpd�!?����g�#/����6s�#$>ן�
data/History.txt CHANGED
@@ -1,3 +1,10 @@
1
+ == 2.1.4 2009-09-01
2
+
3
+ * 1 minor enhancement:
4
+ * Fixed upgrade generator not installing rake tasks (Harry Love)
5
+ * Fixed handling of very large id's (Nathan Phelps)
6
+ * Fixed long index name on migration (Ron Ingram)
7
+
1
8
  == 2.1.3 2009-06-03
2
9
 
3
10
  * 1 minor enhancement:
@@ -12,9 +19,9 @@
12
19
  == 2.1.1 2009-03-25
13
20
 
14
21
  * 2 minor enhancements:
15
- * Fixed bug with find_some; if a record has old slugs, find_some will no longer return
22
+ * Fixed bug with find_some; if a record has old slugs, find_some will no longer return
16
23
  multiple copies of that record when finding by numerical ID. (Steve Luscher)
17
- * Fixed bug with find_some: you can now find_some with an array of numerical IDs without
24
+ * Fixed bug with find_some: you can now find_some with an array of numerical IDs without
18
25
  an error being thrown. (Steve Luscher)
19
26
 
20
27
  == 2.1.0 2009-03-25
data/README.rdoc CHANGED
@@ -270,16 +270,16 @@ an older version of FriendlyId. Here's how to set it up.
270
270
  4) If you are using slugs, you can use a Rake task to generate slugs for your
271
271
  existing records:
272
272
 
273
- friendly_id:make_slugs MODEL=MyModelName
273
+ rake friendly_id:make_slugs MODEL=MyModelName
274
274
 
275
275
  If you eventually want to expire old slugs every so often, or perhaps every
276
276
  day via cron, you can do:
277
277
 
278
- rake:friendly_id:remove_old_slugs
278
+ rake friendly_id:remove_old_slugs
279
279
 
280
280
  The default is to remove dead slugs older than 45 days, but is configurable:
281
281
 
282
- rake:friendly_id:remove_old_slugs MODEL=MyModelName DAYS=60
282
+ rake friendly_id:remove_old_slugs MODEL=MyModelName DAYS=60
283
283
 
284
284
  == Installing an older version
285
285
 
@@ -321,7 +321,7 @@ Add this to the bottom of environment.rb:
321
321
 
322
322
  ==== Generate the upgrade migration and run it
323
323
 
324
- ./script generate friendly_id_20_upgrade
324
+ ./script/generate friendly_id_20_upgrade
325
325
  rake db:migrate
326
326
 
327
327
  == Hacking FriendlyId:
data/Rakefile CHANGED
@@ -31,15 +31,13 @@ def run_coverage(files)
31
31
  return
32
32
  end
33
33
  files = files.join(" ")
34
- if PLATFORM =~ /darwin/
35
- exclude = '--exclude "gems/"'
36
- else
37
- exclude = '--exclude "rubygems"'
38
- end
39
- rcov = "rcov -Ilib:test --sort coverage --text-report #{exclude} --no-validator-links"
40
- cmd = "#{rcov} #{files}"
41
- puts cmd
42
- sh cmd
34
+ # if RUBY_PLATFORM =~ /darwin/
35
+ # exclude = '--exclude "gems/"'
36
+ # else
37
+ # exclude = '--exclude "rubygems"'
38
+ # end
39
+ rcov = ENV["RCOV"] ? ENV["RCOV"] : "rcov"
40
+ sh "#{rcov} -Ilib:test --sort coverage --text-report #{files}"
43
41
  end
44
42
 
45
43
  desc 'Publish RDoc to RubyForge.'
data/friendly_id.gemspec CHANGED
@@ -2,10 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{friendly_id}
5
- s.version = "2.1.3"
5
+ s.version = "2.1.4"
6
+
6
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
7
8
  s.authors = ["Norman Clarke", "Adrian Mugnolo", "Emilio Tagua"]
8
- s.date = %q{2009-06-03}
9
+ s.date = %q{2009-09-01}
9
10
  s.description = %q{A comprehensive slugging and pretty-URL plugin for ActiveRecord.}
10
11
  s.email = ["norman@rubysouth.com", "adrian@rubysouth.com", "miloops@gmail.com"]
11
12
  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.rdoc"]
@@ -14,7 +15,7 @@ Gem::Specification.new do |s|
14
15
  s.rdoc_options = ["--main", "README.rdoc"]
15
16
  s.require_paths = ["lib"]
16
17
  s.rubyforge_project = %q{friendly-id}
17
- s.rubygems_version = %q{1.3.3}
18
+ s.rubygems_version = %q{1.3.4}
18
19
  s.summary = %q{A comprehensive slugging and pretty-URL plugin for ActiveRecord.}
19
20
  s.test_files = ["test/custom_slug_normalizer_test.rb", "test/non_slugged_test.rb", "test/scoped_model_test.rb", "test/slug_test.rb", "test/slugged_model_test.rb", "test/sti_test.rb"]
20
21
 
@@ -8,11 +8,11 @@ class CreateSlugs < ActiveRecord::Migration
8
8
  t.string :scope, :limit => 40
9
9
  t.datetime :created_at
10
10
  end
11
- add_index :slugs, [:name, :sluggable_type, :scope, :sequence], :unique => true
11
+ add_index :slugs, [:name, :sluggable_type, :scope, :sequence], :name => "index_slugs_on_n_s_s_and_s", :unique => true
12
12
  add_index :slugs, :sluggable_id
13
13
  end
14
14
 
15
15
  def self.down
16
16
  drop_table :slugs
17
17
  end
18
- end
18
+ end
@@ -5,6 +5,7 @@ class FriendlyId20UpgradeGenerator < Rails::Generator::Base
5
5
  m.migration_template(
6
6
  'upgrade_friendly_id_to_20.rb', 'db/migrate', :migration_file_name => 'upgrade_friendly_id_to_20'
7
7
  )
8
+ m.file "/../../../lib/tasks/friendly_id.rake", "lib/tasks/friendly_id.rake"
8
9
  end
9
10
  end
10
11
  end
@@ -16,4 +16,4 @@ class UpgradeFriendlyIdTo20 < ActiveRecord::Migration
16
16
  add_index :slugs, [:name, :sluggable_type], :unique => true
17
17
  end
18
18
 
19
- end
19
+ end
data/init.rb CHANGED
@@ -1 +1,3 @@
1
+ # encoding: utf-8
2
+
1
3
  require 'friendly_id'
data/lib/friendly_id.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  require 'friendly_id/helpers'
2
4
  require 'friendly_id/slug'
3
5
 
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  module FriendlyId
2
4
 
3
5
  module Helpers
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  module FriendlyId::NonSluggableClassMethods
2
4
 
3
5
  include FriendlyId::Helpers
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  module FriendlyId::NonSluggableInstanceMethods
2
4
 
3
5
  attr :found_using_friendly_id
@@ -35,9 +35,7 @@ class Slug < ActiveRecord::Base
35
35
  def normalize(slug_text)
36
36
  return "" if slug_text.nil? || slug_text == ""
37
37
  ActiveSupport::Multibyte.proxy_class.new(slug_text.to_s).normalize(:kc).
38
- # For some reason Spanish ¡ and ¿ are not detected as non-word
39
- # characters. Bug in Ruby?
40
- gsub(/[\W|¡|¿]/u, ' ').
38
+ gsub(/[\W]/u, ' ').
41
39
  strip.
42
40
  gsub(/\s+/u, '-').
43
41
  gsub(/-\z/u, '').
@@ -45,10 +43,6 @@ class Slug < ActiveRecord::Base
45
43
  to_s
46
44
  end
47
45
 
48
- def postnormalize(string)
49
- string.gs
50
- end
51
-
52
46
  def parse(friendly_id)
53
47
  name, sequence = friendly_id.split('--')
54
48
  sequence ||= "1"
@@ -77,10 +71,6 @@ class Slug < ActiveRecord::Base
77
71
 
78
72
  private
79
73
 
80
- def chars_func
81
- "".respond_to?(:mb_chars) ? :mb_chars : :chars
82
- end
83
-
84
74
  end
85
75
 
86
76
  # Whether or not this slug is the most recent of its owner's slugs.
@@ -1,7 +1,9 @@
1
+ # encoding: utf-8
2
+
1
3
  module FriendlyId::SluggableClassMethods
2
4
 
3
5
  include FriendlyId::Helpers
4
-
6
+
5
7
  def self.extended(base) #:nodoc:#
6
8
 
7
9
  class << base
@@ -16,7 +18,7 @@ module FriendlyId::SluggableClassMethods
16
18
  def find_one_with_friendly(id_or_name, options) #:nodoc:#
17
19
 
18
20
  scope = options.delete(:scope)
19
- return find_one_without_friendly(id_or_name, options) if id_or_name.is_a?(Fixnum)
21
+ return find_one_without_friendly(id_or_name, options) if id_or_name.is_a?(Integer)
20
22
 
21
23
  find_options = {:select => "#{self.table_name}.*"}
22
24
  find_options[:joins] = :slugs unless options[:include] && [*options[:include]].flatten.include?(:slugs)
@@ -111,4 +113,4 @@ module FriendlyId::SluggableClassMethods
111
113
  return slugs, ids
112
114
  end
113
115
 
114
- end
116
+ end
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  module FriendlyId::SluggableInstanceMethods
2
4
 
3
5
  NUM_CHARS_RESERVED_FOR_FRIENDLY_ID_EXTENSION = 2
@@ -1,8 +1,10 @@
1
+ # encoding: utf-8
2
+
1
3
  module FriendlyId #:nodoc:
2
4
  module Version #:nodoc:
3
5
  MAJOR = 2
4
6
  MINOR = 1
5
- TINY = 3
7
+ TINY = 4
6
8
  STRING = [MAJOR, MINOR, TINY].join('.')
7
9
  end
8
- end
10
+ end
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  namespace :friendly_id do
2
4
  desc "Make slugs for a model."
3
5
  task :make_slugs => :environment do
data/test/models/post.rb CHANGED
@@ -1,3 +1,6 @@
1
1
  class Post < ActiveRecord::Base
2
2
  has_friendly_id :title, :use_slug => true
3
+
4
+ named_scope :published, :conditions => { :published => true }
5
+
3
6
  end
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  require File.dirname(__FILE__) + '/test_helper'
2
4
 
3
5
  class NonSluggedTest < Test::Unit::TestCase
data/test/schema.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  ActiveRecord::Schema.define(:version => 1) do
2
4
 
3
5
  create_table "books", :force => true do |t|
@@ -12,6 +14,7 @@ ActiveRecord::Schema.define(:version => 1) do
12
14
  create_table "posts", :force => true do |t|
13
15
  t.column "title", "string"
14
16
  t.column "content", "text"
17
+ t.column "published", "boolean", :default => false
15
18
  t.column "created_at", "datetime"
16
19
  t.column "updated_at", "datetime"
17
20
  end
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  require File.dirname(__FILE__) + '/test_helper'
2
4
 
3
5
  class ScopedModelTest < Test::Unit::TestCase
@@ -11,7 +11,8 @@ class SluggedModelTest < Test::Unit::TestCase
11
11
  Post.delete_all
12
12
  Person.delete_all
13
13
  Slug.delete_all
14
- @post = Post.new :title => "Test post", :content => "Test content"
14
+ Thing.delete_all
15
+ @post = Post.new :title => "Test post", :content => "Test content", :published => true
15
16
  @post.save!
16
17
  end
17
18
 
@@ -126,6 +127,12 @@ class SluggedModelTest < Test::Unit::TestCase
126
127
  end
127
128
  end
128
129
 
130
+ # This emulates a fairly common issue where id's generated by fixtures are very high.
131
+ should "continue to admit very large ids" do
132
+ Thing.connection.execute("INSERT INTO things (id, name) VALUES (2147483647, 'big')")
133
+ assert Thing.find(2147483647)
134
+ end
135
+
129
136
  context "and configured to strip diacritics" do
130
137
  setup do
131
138
  Post.friendly_id_options = Post.friendly_id_options.merge(:strip_diacritics => true)
@@ -236,7 +243,7 @@ class SluggedModelTest < Test::Unit::TestCase
236
243
  context "when using an array as the find argument" do
237
244
 
238
245
  setup do
239
- @post2 = Post.create!(:title => "another post", :content => "more content")
246
+ @post2 = Post.create!(:title => "another post", :content => "more content", :published => true)
240
247
  end
241
248
 
242
249
  should "return results when passed an array of non-friendly ids" do
@@ -247,6 +254,10 @@ class SluggedModelTest < Test::Unit::TestCase
247
254
  assert_equal 2, Post.find([@post.friendly_id, @post2.friendly_id]).size
248
255
  end
249
256
 
257
+ should "return results when searching using a named scope" do
258
+ assert_equal 2, Post.published.find([@post.id, @post2.id]).size
259
+ end
260
+
250
261
  should "return results when passed a mixed array of friendly and non-friendly ids" do
251
262
  assert_equal 2, Post.find([@post.friendly_id, @post2.id]).size
252
263
  end
@@ -277,4 +288,4 @@ class SluggedModelTest < Test::Unit::TestCase
277
288
 
278
289
  end
279
290
 
280
- end
291
+ end
data/test/test_helper.rb CHANGED
@@ -1,8 +1,9 @@
1
+ # encoding: utf-8
2
+
1
3
  $:.unshift(File.dirname(__FILE__) + '/../lib')
2
4
  $:.unshift(File.dirname(__FILE__))
3
5
  $KCODE = 'UTF8' if RUBY_VERSION < '1.9'
4
6
  $VERBOSE = false
5
- require 'rubygems'
6
7
  require 'test/unit'
7
8
  require 'contest'
8
9
  # You can use "rake test AR_VERSION=2.0.5" to test against 2.0.5, for example.
@@ -13,7 +14,6 @@ if ENV["AR_VERSION"]
13
14
  end
14
15
  require 'active_record'
15
16
  require 'active_support'
16
-
17
17
  require 'friendly_id'
18
18
  require 'models/post'
19
19
  require 'models/person'
@@ -24,16 +24,6 @@ require 'models/novel'
24
24
  require 'models/thing'
25
25
  require 'models/event'
26
26
 
27
- # Borrowed from ActiveSupport
28
- def silence_stream(stream)
29
- old_stream = stream.dup
30
- stream.reopen(RUBY_PLATFORM =~ /mswin/ ? 'NUL:' : '/dev/null')
31
- stream.sync = true
32
- yield
33
- ensure
34
- stream.reopen(old_stream)
35
- end
36
-
37
27
  ActiveRecord::Base.establish_connection :adapter => "sqlite3", :database => ":memory:"
38
28
  silence_stream(STDOUT) do
39
29
  load(File.dirname(__FILE__) + "/schema.rb")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: friendly_id
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.3
4
+ version: 2.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Norman Clarke
@@ -32,7 +32,7 @@ cert_chain:
32
32
  h7fbBRfStxI=
33
33
  -----END CERTIFICATE-----
34
34
 
35
- date: 2009-06-03 00:00:00 -03:00
35
+ date: 2009-09-01 00:00:00 -03:00
36
36
  default_executable:
37
37
  dependencies:
38
38
  - !ruby/object:Gem::Dependency
@@ -163,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
163
  requirements: []
164
164
 
165
165
  rubyforge_project: friendly-id
166
- rubygems_version: 1.3.3
166
+ rubygems_version: 1.3.4
167
167
  signing_key:
168
168
  specification_version: 3
169
169
  summary: A comprehensive slugging and pretty-URL plugin for ActiveRecord.
metadata.gz.sig CHANGED
Binary file