has_phone_numbers 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,10 @@
1
1
  == master
2
2
 
3
+ == 0.2.1 / 2010-03-07
4
+
5
+ * Add a generator for db migration
6
+ * Release gems via rake-gemcutter instead of rubyforge
7
+
3
8
  == 0.2.0 / 2009-04-19
4
9
 
5
10
  * Add the ability to parse raw values [Matt Lightner]
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2006-2009 Aaron Pfeifer
1
+ Copyright (c) 2006-2010 Aaron Pfeifer
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -23,23 +23,46 @@ Source
23
23
  == Description
24
24
 
25
25
  A phone number is a simple model whose data and functionality should be
26
- standardized across multiple applications. Phone numbers are minimialistic in
27
- terms of the type of data required and follows the standard U.S. format.
28
- Support for international formats may be added in the future.
26
+ standardized across multiple applications. Phone numbers are minimalistic in
27
+ terms of the type of data it represents. Both U.S. and international formats
28
+ are supported.
29
29
 
30
30
  == Usage
31
31
 
32
- Note that this is a reference implementation and, most likely, should be
32
+ Note that this is a reference implementation and, most likely, will be
33
33
  modified for your own usage.
34
34
 
35
+ === Installation
36
+
37
+ +has_phone_numbers+ requires an additional database table to work. You can
38
+ generate a migration for this tables like so:
39
+
40
+ script/generate has_phone_numbers
41
+
42
+ Then simply migrate your database:
43
+
44
+ rake db:migrate
45
+
35
46
  === Example
36
47
 
37
- phone_number = Phone_number.new(
38
- :country_code => '1',
39
- :number => '1234567890',
40
- :extension => '123'
41
- )
42
- phone_number.display_value # => 1- 1234567890 ext. 123
48
+ Building with individual segments:
49
+
50
+ PhoneNumber.create(:phoneable => user, :country_code => '1', :number => '1234567890', :extension => '123')
51
+ # #<PhoneNumber id: 1, phoneable_id: 1, phoneable_type: "User", country_code: "1", number: "1234567890", extension: "123", created_at: "2009-01-01 00:00:00", updated_at: "2009-01-01 00:00:00">
52
+
53
+ Parsing raw values:
54
+
55
+ PhoneNumber.create(:phoneable => user, :content => '1 1234567890 ext. 123')
56
+ # #<PhoneNumber id: 1, phoneable_id: 1, phoneable_type: "User", country_code: "1", number: "1234567890", extension: "123", created_at: "2009-01-01 00:00:00", updated_at: "2009-01-01 00:00:00">
57
+
58
+ PhoneNumber.create(:phoneable => user, :content => '231 331 996 x4621')
59
+ # #<PhoneNumber id: 1, phoneable_id: 1, phoneable_type: "User", country_code: "231", number: "331996", extension: "4621", created_at: "2009-01-01 00:00:00", updated_at: "2009-01-01 00:00:00">
60
+
61
+ PhoneNumber.create(:phoneable => user, :content => '+ 386 1 5853 449')
62
+ # #<PhoneNumber id: 1, phoneable_id: 1, phoneable_type: "User", country_code: "386", number: "15853449", extension: nil, created_at: "2009-01-01 00:00:00", updated_at: "2009-01-01 00:00:00">
63
+
64
+ PhoneNumber.create(:phoneable => user, :content => '+39-02-4823001')
65
+ # #<PhoneNumber id: 1, phoneable_id: 1, phoneable_type: "User", country_code: "39", number: "024823001", extension: nil, created_at: "2009-01-01 00:00:00", updated_at: "2009-01-01 00:00:00">
43
66
 
44
67
  == Testing
45
68
 
data/Rakefile CHANGED
@@ -1,15 +1,17 @@
1
+ require 'rubygems'
2
+ require 'rake'
1
3
  require 'rake/testtask'
2
4
  require 'rake/rdoctask'
3
5
  require 'rake/gempackagetask'
4
- require 'rake/contrib/sshpublisher'
5
6
 
6
7
  spec = Gem::Specification.new do |s|
7
8
  s.name = 'has_phone_numbers'
8
- s.version = '0.2.0'
9
+ s.version = '0.2.1'
9
10
  s.platform = Gem::Platform::RUBY
10
- s.summary = 'Demonstrates a reference implementation for handling phone numbers.'
11
+ s.summary = 'Demonstrates a reference implementation for handling phone numbers in ActiveRecord'
12
+ s.description = s.summary
11
13
 
12
- s.files = FileList['{app,db,lib,test}/**/*'] + %w(CHANGELOG.rdoc init.rb LICENSE Rakefile README.rdoc) - FileList['test/app_root/{log,log/*,script,script/*}']
14
+ s.files = FileList['{app,generators,lib,test}/**/*'] + %w(CHANGELOG.rdoc init.rb LICENSE Rakefile README.rdoc) - FileList['test/app_root/{log,log/*,script,script/*}']
13
15
  s.require_path = 'lib'
14
16
  s.has_rdoc = true
15
17
  s.test_files = Dir['test/**/*_test.rb']
@@ -52,20 +54,27 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
52
54
  rdoc.options << '--line-numbers' << '--inline-source'
53
55
  rdoc.rdoc_files.include('README.rdoc', 'CHANGELOG.rdoc', 'LICENSE', 'lib/**/*.rb', 'app/**/*.rb')
54
56
  end
55
-
57
+
58
+ desc 'Generate a gemspec file.'
59
+ task :gemspec do
60
+ File.open("#{spec.name}.gemspec", 'w') do |f|
61
+ f.write spec.to_ruby
62
+ end
63
+ end
64
+
56
65
  Rake::GemPackageTask.new(spec) do |p|
57
66
  p.gem_spec = spec
58
- p.need_tar = true
59
- p.need_zip = true
60
67
  end
61
68
 
62
69
  desc 'Publish the beta gem.'
63
70
  task :pgem => [:package] do
71
+ require 'rake/contrib/sshpublisher'
64
72
  Rake::SshFilePublisher.new('aaron@pluginaweek.org', '/home/aaron/gems.pluginaweek.org/public/gems', 'pkg', "#{spec.name}-#{spec.version}.gem").upload
65
73
  end
66
74
 
67
75
  desc 'Publish the API documentation.'
68
76
  task :pdoc => [:rdoc] do
77
+ require 'rake/contrib/sshpublisher'
69
78
  Rake::SshDirPublisher.new('aaron@pluginaweek.org', "/home/aaron/api.pluginaweek.org/public/#{spec.name}", 'rdoc').upload
70
79
  end
71
80
 
@@ -74,15 +83,8 @@ task :publish => [:pgem, :pdoc, :release]
74
83
 
75
84
  desc 'Publish the release files to RubyForge.'
76
85
  task :release => [:gem, :package] do
77
- require 'rubyforge'
78
-
79
- ruby_forge = RubyForge.new.configure
80
- ruby_forge.login
86
+ require 'rake/gemcutter'
81
87
 
82
- %w(gem tgz zip).each do |ext|
83
- file = "pkg/#{spec.name}-#{spec.version}.#{ext}"
84
- puts "Releasing #{File.basename(file)}..."
85
-
86
- ruby_forge.add_release(spec.rubyforge_project, spec.name, spec.version, file)
87
- end
88
+ Rake::Gemcutter::Tasks.new(spec)
89
+ Rake::Task['gem:push'].invoke
88
90
  end
@@ -81,12 +81,12 @@ class PhoneNumber < ActiveRecord::Base
81
81
 
82
82
  # The raw, unparsed content containing the phone number. This can be parsed
83
83
  # in various formats, such as:
84
- # * 600 600 11 22
84
+ # * 599 600 11 22
85
85
  # * + 386 1 5853 449
86
- # * +48 (22) 64 0001
86
+ # * +48 (22) 641 0001
87
87
  # * 36 1 267-4636
88
- # * +39-02-48230001
89
- # * 202 331 996 x4621
88
+ # * +39-02-4823001
89
+ # * 231 331 996 x4621
90
90
  # * 358 2 141 540 65 ext. 1423
91
91
  attr_accessor :content
92
92
  before_validation_on_create :parse_content, :if => :content
@@ -0,0 +1,5 @@
1
+ Usage:
2
+
3
+ script/generate has_phone_numbers
4
+
5
+ This will create migrations that will add the proper tables to store phone numbers.
@@ -0,0 +1,7 @@
1
+ class HasPhoneNumbersGenerator < Rails::Generator::Base
2
+ def manifest
3
+ record do |m|
4
+ m.migration_template '001_create_phone_numbers.rb', 'db/migrate', :migration_file_name => 'create_phone_numbers'
5
+ end
6
+ end
7
+ end
@@ -1,12 +1,12 @@
1
1
  class MigrateHasPhoneNumbersToVersion1 < ActiveRecord::Migration
2
2
  def self.up
3
- ActiveRecord::Migrator.new(:up, "#{Rails.root}/../../db/migrate", 0).migrations.each do |migration|
3
+ ActiveRecord::Migrator.new(:up, "#{Rails.root}/../../generators/has_phone_numbers/templates", 0).migrations.each do |migration|
4
4
  migration.migrate(:up)
5
5
  end
6
6
  end
7
7
 
8
8
  def self.down
9
- ActiveRecord::Migrator.new(:up, "#{Rails.root}/../../db/migrate", 0).migrations.each do |migration|
9
+ ActiveRecord::Migrator.new(:down, "#{Rails.root}/../../generators/has_phone_numbers/templates", 0).migrations.each do |migration|
10
10
  migration.migrate(:down)
11
11
  end
12
12
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_phone_numbers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Pfeifer
@@ -9,11 +9,11 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-19 00:00:00 -04:00
12
+ date: 2010-03-07 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
16
- description:
16
+ description: Demonstrates a reference implementation for handling phone numbers in ActiveRecord
17
17
  email: aaron@pluginaweek.org
18
18
  executables: []
19
19
 
@@ -22,25 +22,18 @@ extensions: []
22
22
  extra_rdoc_files: []
23
23
 
24
24
  files:
25
- - app/models
26
25
  - app/models/phone_number.rb
27
- - db/migrate
28
- - db/migrate/001_create_phone_numbers.rb
26
+ - generators/has_phone_numbers/USAGE
27
+ - generators/has_phone_numbers/has_phone_numbers_generator.rb
28
+ - generators/has_phone_numbers/templates/001_create_phone_numbers.rb
29
29
  - lib/has_phone_numbers.rb
30
- - test/factory.rb
31
- - test/test_helper.rb
32
- - test/functional
33
- - test/functional/has_phone_numbers_test.rb
34
- - test/unit
35
30
  - test/unit/phone_number_test.rb
36
- - test/app_root
37
- - test/app_root/db
38
- - test/app_root/db/migrate
39
- - test/app_root/db/migrate/002_migrate_has_phone_numbers_to_version_1.rb
40
31
  - test/app_root/db/migrate/001_create_people.rb
41
- - test/app_root/app
42
- - test/app_root/app/models
32
+ - test/app_root/db/migrate/002_migrate_has_phone_numbers_to_version_1.rb
43
33
  - test/app_root/app/models/person.rb
34
+ - test/test_helper.rb
35
+ - test/factory.rb
36
+ - test/functional/has_phone_numbers_test.rb
44
37
  - CHANGELOG.rdoc
45
38
  - init.rb
46
39
  - LICENSE
@@ -48,6 +41,8 @@ files:
48
41
  - README.rdoc
49
42
  has_rdoc: true
50
43
  homepage: http://www.pluginaweek.org
44
+ licenses: []
45
+
51
46
  post_install_message:
52
47
  rdoc_options: []
53
48
 
@@ -68,10 +63,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
63
  requirements: []
69
64
 
70
65
  rubyforge_project: pluginaweek
71
- rubygems_version: 1.3.1
66
+ rubygems_version: 1.3.5
72
67
  signing_key:
73
- specification_version: 2
74
- summary: Demonstrates a reference implementation for handling phone numbers.
68
+ specification_version: 3
69
+ summary: Demonstrates a reference implementation for handling phone numbers in ActiveRecord
75
70
  test_files:
76
- - test/functional/has_phone_numbers_test.rb
77
71
  - test/unit/phone_number_test.rb
72
+ - test/functional/has_phone_numbers_test.rb