dm-types 0.9.7 → 0.9.8
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/History.txt +5 -0
- data/Manifest.txt +2 -0
- data/Rakefile +17 -50
- data/TODO +0 -8
- data/lib/dm-types.rb +18 -20
- data/lib/dm-types/bcrypt_hash.rb +12 -10
- data/lib/dm-types/uri.rb +2 -0
- data/lib/dm-types/uuid.rb +3 -0
- data/lib/dm-types/version.rb +1 -1
- data/spec/integration/bcrypt_hash_spec.rb +13 -4
- data/spec/integration/file_path_spec.rb +1 -1
- data/spec/integration/uri_spec.rb +1 -1
- data/spec/integration/uuid_spec.rb +32 -24
- data/spec/spec.opts +0 -1
- data/spec/spec_helper.rb +5 -3
- data/spec/unit/bcrypt_hash_spec.rb +56 -2
- data/tasks/install.rb +13 -0
- data/tasks/spec.rb +25 -0
- metadata +11 -18
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
data/Rakefile
CHANGED
@@ -1,58 +1,25 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'spec'
|
3
|
-
require 'spec/rake/spectask'
|
4
1
|
require 'pathname'
|
2
|
+
require 'rubygems'
|
3
|
+
|
4
|
+
ROOT = Pathname(__FILE__).dirname.expand_path
|
5
|
+
JRUBY = RUBY_PLATFORM =~ /java/
|
6
|
+
WINDOWS = Gem.win_platform?
|
7
|
+
SUDO = (WINDOWS || JRUBY) ? '' : ('sudo' unless ENV['SUDOLESS'])
|
5
8
|
|
6
|
-
ROOT = Pathname(__FILE__).dirname.expand_path
|
7
9
|
require ROOT + 'lib/dm-types/version'
|
8
10
|
|
9
|
-
AUTHOR =
|
10
|
-
EMAIL =
|
11
|
-
GEM_NAME =
|
11
|
+
AUTHOR = 'Sam Smoot'
|
12
|
+
EMAIL = 'ssmoot [a] gmail [d] com'
|
13
|
+
GEM_NAME = 'dm-types'
|
12
14
|
GEM_VERSION = DataMapper::Types::VERSION
|
13
|
-
GEM_DEPENDENCIES = [[
|
14
|
-
GEM_CLEAN = [
|
15
|
-
GEM_EXTRAS = { :has_rdoc => true, :extra_rdoc_files => %w[ README.txt LICENSE TODO ] }
|
16
|
-
|
17
|
-
PROJECT_NAME = "datamapper"
|
18
|
-
PROJECT_URL = "http://github.com/sam/dm-more/tree/master/dm-types"
|
19
|
-
PROJECT_DESCRIPTION = PROJECT_SUMMARY = "DataMapper plugin providing extra data types"
|
20
|
-
|
21
|
-
require ROOT.parent + 'tasks/hoe'
|
22
|
-
|
23
|
-
task :default => [ :spec ]
|
24
|
-
|
25
|
-
WIN32 = (RUBY_PLATFORM =~ /win32|mingw|cygwin/) rescue nil
|
26
|
-
SUDO = WIN32 ? '' : ('sudo' unless ENV['SUDOLESS'])
|
27
|
-
|
28
|
-
desc "Install #{GEM_NAME} #{GEM_VERSION} (default ruby)"
|
29
|
-
task :install => [ :package ] do
|
30
|
-
sh "#{SUDO} gem install --local pkg/#{GEM_NAME}-#{GEM_VERSION} --no-update-sources", :verbose => false
|
31
|
-
end
|
32
|
-
|
33
|
-
desc "Uninstall #{GEM_NAME} #{GEM_VERSION} (default ruby)"
|
34
|
-
task :uninstall => [ :clobber ] do
|
35
|
-
sh "#{SUDO} gem uninstall #{GEM_NAME} -v#{GEM_VERSION} -I -x", :verbose => false
|
36
|
-
end
|
37
|
-
|
38
|
-
namespace :jruby do
|
39
|
-
desc "Install #{GEM_NAME} #{GEM_VERSION} with JRuby"
|
40
|
-
task :install => [ :package ] do
|
41
|
-
sh %{#{SUDO} jruby -S gem install --local pkg/#{GEM_NAME}-#{GEM_VERSION} --no-update-sources}, :verbose => false
|
42
|
-
end
|
43
|
-
end
|
15
|
+
GEM_DEPENDENCIES = [['dm-core', "~>#{GEM_VERSION}"], ['addressable', '~>2.0.1']]
|
16
|
+
GEM_CLEAN = %w[ log pkg coverage ]
|
17
|
+
GEM_EXTRAS = { :has_rdoc => true, :extra_rdoc_files => %w[ README.txt LICENSE TODO History.txt ] }
|
44
18
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
t.spec_files = Pathname.glob((ROOT + 'spec/**/*_spec.rb').to_s)
|
19
|
+
PROJECT_NAME = 'datamapper'
|
20
|
+
PROJECT_URL = "http://github.com/sam/dm-more/tree/master/#{GEM_NAME}"
|
21
|
+
PROJECT_DESCRIPTION = PROJECT_SUMMARY = 'DataMapper plugin providing extra data types'
|
49
22
|
|
50
|
-
|
51
|
-
|
52
|
-
t.rcov_opts << '--exclude' << 'spec'
|
53
|
-
t.rcov_opts << '--text-summary'
|
54
|
-
t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
|
55
|
-
rescue Exception
|
56
|
-
# rcov not installed
|
57
|
-
end
|
23
|
+
[ ROOT, ROOT.parent ].each do |dir|
|
24
|
+
Pathname.glob(dir.join('tasks/**/*.rb').to_s).each { |f| require f }
|
58
25
|
end
|
data/TODO
CHANGED
data/lib/dm-types.rb
CHANGED
@@ -1,28 +1,26 @@
|
|
1
|
-
require 'rubygems'
|
2
1
|
require 'pathname'
|
2
|
+
require 'rubygems'
|
3
3
|
|
4
|
-
gem 'dm-core', '~>0.9.
|
4
|
+
gem 'dm-core', '~>0.9.8'
|
5
5
|
require 'dm-core'
|
6
6
|
|
7
|
-
dir = Pathname(__FILE__).dirname.expand_path / 'dm-types'
|
8
|
-
|
9
|
-
require dir / 'csv'
|
10
|
-
require dir / 'enum'
|
11
|
-
require dir / 'epoch_time'
|
12
|
-
require dir / 'file_path'
|
13
|
-
require dir / 'flag'
|
14
|
-
require dir / 'ip_address'
|
15
|
-
require dir / "json"""
|
16
|
-
require dir / 'uri'
|
17
|
-
require dir / 'uuid'
|
18
|
-
require dir / 'yaml'
|
19
|
-
require dir / 'serial'
|
20
|
-
require dir / 'regexp'
|
21
|
-
require dir / 'slug'
|
22
|
-
|
23
|
-
# this looks a little ugly, but everyone who uses dm-types shouldn't have to have ruby-bcrypt installed
|
24
7
|
module DataMapper
|
25
8
|
module Types
|
26
|
-
|
9
|
+
dir = (Pathname(__FILE__).dirname.expand_path / 'dm-types').to_s
|
10
|
+
|
11
|
+
autoload :BCryptHash, dir / 'bcrypt_hash'
|
12
|
+
autoload :Csv, dir / 'csv'
|
13
|
+
autoload :Enum, dir / 'enum'
|
14
|
+
autoload :EpochTime, dir / 'epoch_time'
|
15
|
+
autoload :FilePath, dir / 'file_path'
|
16
|
+
autoload :Flag, dir / 'flag'
|
17
|
+
autoload :IPAddress, dir / 'ip_address'
|
18
|
+
autoload :Json, dir / 'json'
|
19
|
+
autoload :Regexp, dir / 'regexp'
|
20
|
+
autoload :Serial, dir / 'serial'
|
21
|
+
autoload :Slug, dir / 'slug'
|
22
|
+
autoload :URI, dir / 'uri'
|
23
|
+
autoload :UUID, dir / 'uuid'
|
24
|
+
autoload :Yaml, dir / 'yaml'
|
27
25
|
end
|
28
26
|
end
|
data/lib/dm-types/bcrypt_hash.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
+
require 'rubygems'
|
1
2
|
|
3
|
+
gem 'bcrypt-ruby', '~>2.0.3'
|
2
4
|
require 'bcrypt'
|
3
5
|
|
4
6
|
module DataMapper
|
@@ -8,22 +10,22 @@ module DataMapper
|
|
8
10
|
size 60
|
9
11
|
|
10
12
|
def self.load(value, property)
|
11
|
-
|
12
|
-
nil
|
13
|
-
elsif value.is_a?(String)
|
14
|
-
BCrypt::Password.new(value)
|
15
|
-
else
|
16
|
-
raise ArgumentError.new("+value+ must be nil or a String")
|
17
|
-
end
|
13
|
+
typecast(value, property)
|
18
14
|
end
|
19
15
|
|
20
16
|
def self.dump(value, property)
|
17
|
+
typecast(value, property)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.typecast(value, property)
|
21
21
|
if value.nil?
|
22
22
|
nil
|
23
|
-
elsif value.is_a?(String)
|
24
|
-
BCrypt::Password.create(value, :cost => BCrypt::Engine::DEFAULT_COST)
|
25
23
|
else
|
26
|
-
|
24
|
+
begin
|
25
|
+
value.is_a?(BCrypt::Password) ? value : BCrypt::Password.new(value)
|
26
|
+
rescue BCrypt::Errors::InvalidHash
|
27
|
+
BCrypt::Password.create(value, :cost => BCrypt::Engine::DEFAULT_COST)
|
28
|
+
end
|
27
29
|
end
|
28
30
|
end
|
29
31
|
end # class BCryptHash
|
data/lib/dm-types/uri.rb
CHANGED
data/lib/dm-types/uuid.rb
CHANGED
data/lib/dm-types/version.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
|
2
1
|
require 'pathname'
|
3
2
|
require Pathname(__FILE__).dirname.parent.expand_path + 'spec_helper'
|
4
3
|
|
5
4
|
begin
|
5
|
+
gem 'bcrypt-ruby', '~>2.0.3'
|
6
6
|
require 'bcrypt'
|
7
7
|
rescue LoadError
|
8
8
|
skip_tests = true
|
9
9
|
end
|
10
10
|
|
11
|
-
describe
|
11
|
+
describe 'DataMapper::Types::BCryptHash' do
|
12
12
|
unless skip_tests
|
13
13
|
describe "with no options" do
|
14
14
|
before(:each) do
|
@@ -19,12 +19,12 @@ describe "DataMapper::Types::BCryptHash" do
|
|
19
19
|
property :password, BCryptHash
|
20
20
|
end
|
21
21
|
User.auto_migrate!
|
22
|
-
User.create
|
22
|
+
User.create(:password => "DataMapper R0cks!")
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should save a password to the DB on creation" do
|
26
26
|
repository(:default) do
|
27
|
-
User.create
|
27
|
+
User.create(:password => "password1")
|
28
28
|
end
|
29
29
|
user = User.all
|
30
30
|
user[0].password.should == "DataMapper R0cks!"
|
@@ -39,6 +39,15 @@ describe "DataMapper::Types::BCryptHash" do
|
|
39
39
|
@user.password.should == "D@t@Mapper R0cks!"
|
40
40
|
end
|
41
41
|
|
42
|
+
it "should not change the password on save and reload" do
|
43
|
+
@user = User.first
|
44
|
+
v1 = @user.password.to_s
|
45
|
+
@user.save
|
46
|
+
@user.reload
|
47
|
+
v2 = @user.password.to_s
|
48
|
+
v1.should == v2
|
49
|
+
end
|
50
|
+
|
42
51
|
it "should have a cost of BCrypt::Engine::DEFAULT_COST" do
|
43
52
|
@user = User.first
|
44
53
|
@user.password.cost.should == BCrypt::Engine::DEFAULT_COST
|
@@ -14,7 +14,7 @@ describe DataMapper::Types::URI do
|
|
14
14
|
|
15
15
|
it "should work" do
|
16
16
|
repository(:default) do
|
17
|
-
URITest.create
|
17
|
+
URITest.create(:uri => 'http://localhost')
|
18
18
|
end
|
19
19
|
|
20
20
|
URITest.first.uri.should == Addressable::URI.parse('http://localhost')
|
@@ -1,38 +1,46 @@
|
|
1
1
|
require 'pathname'
|
2
|
-
require 'uuidtools'
|
3
2
|
require Pathname(__FILE__).dirname.parent.expand_path + 'spec_helper'
|
4
3
|
|
5
|
-
|
4
|
+
begin
|
5
|
+
gem 'uuidtools', '~>1.0.7'
|
6
|
+
require 'uuidtools'
|
7
|
+
rescue LoadError
|
8
|
+
skip_tests = true
|
9
|
+
end
|
6
10
|
|
7
|
-
|
8
|
-
|
9
|
-
|
11
|
+
describe 'DataMapper::Types::UUID' do
|
12
|
+
unless skip_tests
|
13
|
+
before(:all) do
|
14
|
+
class UUIDTest
|
15
|
+
include DataMapper::Resource
|
10
16
|
|
11
|
-
|
12
|
-
|
13
|
-
|
17
|
+
property :id, Serial
|
18
|
+
property :uuid, ::DataMapper::Types::UUID
|
19
|
+
end
|
14
20
|
|
15
|
-
|
16
|
-
|
21
|
+
UUIDTest.auto_migrate!
|
22
|
+
end
|
17
23
|
|
18
|
-
|
19
|
-
|
24
|
+
it "should be settable as a uuid" do
|
25
|
+
u = UUIDTest.create(:uuid => UUID.parse('b0fc632e-d744-4821-afe3-4ea0701859ee'))
|
20
26
|
|
21
|
-
|
22
|
-
|
23
|
-
|
27
|
+
u.uuid.should be_kind_of(UUID)
|
28
|
+
u.uuid.to_s.should == 'b0fc632e-d744-4821-afe3-4ea0701859ee'
|
29
|
+
end
|
24
30
|
|
25
|
-
|
26
|
-
|
31
|
+
it "should be settable as a string" do
|
32
|
+
u = UUIDTest.create(:uuid => 'b0fc632e-d744-4821-afe3-4ea0701859ee')
|
27
33
|
|
28
|
-
|
29
|
-
|
30
|
-
|
34
|
+
u.uuid.should be_kind_of(UUID)
|
35
|
+
u.uuid.to_s.should == 'b0fc632e-d744-4821-afe3-4ea0701859ee'
|
36
|
+
end
|
31
37
|
|
32
|
-
|
33
|
-
|
38
|
+
it "should be allowed to be null" do
|
39
|
+
u = UUIDTest.create()
|
34
40
|
|
35
|
-
|
41
|
+
u.uuid.should be_nil
|
42
|
+
end
|
43
|
+
else
|
44
|
+
it 'requires the uuidtools gem to test'
|
36
45
|
end
|
37
|
-
|
38
46
|
end
|
data/spec/spec.opts
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
+
require 'pathname'
|
1
2
|
require 'rubygems'
|
2
|
-
|
3
|
+
|
4
|
+
gem 'rspec', '~>1.1.11'
|
3
5
|
require 'spec'
|
4
|
-
|
6
|
+
|
5
7
|
require Pathname(__FILE__).dirname.parent.expand_path + 'lib/dm-types'
|
6
8
|
|
7
9
|
ENV["SQLITE3_SPEC_URI"] ||= 'sqlite3::memory:'
|
@@ -18,7 +20,7 @@ def setup_adapter(name, default_uri = nil)
|
|
18
20
|
rescue Exception => e
|
19
21
|
if name.to_s == ENV['ADAPTER']
|
20
22
|
Object.const_set('ADAPTER', nil)
|
21
|
-
warn "Could not load #{name}
|
23
|
+
warn "Could not load do_#{name}: #{e}"
|
22
24
|
end
|
23
25
|
false
|
24
26
|
end
|
@@ -4,6 +4,7 @@ require Pathname(__FILE__).dirname.parent.expand_path + 'spec_helper'
|
|
4
4
|
include DataMapper::Types
|
5
5
|
|
6
6
|
begin
|
7
|
+
gem 'bcrypt-ruby', '~>2.0.3'
|
7
8
|
require 'bcrypt'
|
8
9
|
rescue LoadError
|
9
10
|
skip_tests = true
|
@@ -15,6 +16,13 @@ describe "DataMapper::Types::BCryptHash" do
|
|
15
16
|
before(:each) do
|
16
17
|
@clear_password = "DataMapper R0cks!"
|
17
18
|
@crypted_password = BCrypt::Password.create(@clear_password)
|
19
|
+
@nonstandard_type = 1
|
20
|
+
|
21
|
+
class TestType
|
22
|
+
@a = 1
|
23
|
+
@b = "Hi There"
|
24
|
+
end
|
25
|
+
@nonstandard_type2 = TestType.new
|
18
26
|
end
|
19
27
|
|
20
28
|
describe ".dump" do
|
@@ -23,7 +31,7 @@ describe "DataMapper::Types::BCryptHash" do
|
|
23
31
|
end
|
24
32
|
|
25
33
|
it "should return a string that is 60 characters long" do
|
26
|
-
BCryptHash.dump(@clear_password, :property).should have(60).characters
|
34
|
+
BCryptHash.dump(@clear_password, :property).to_s.should have(60).characters
|
27
35
|
end
|
28
36
|
|
29
37
|
it "should return nil if nil is passed" do
|
@@ -41,7 +49,53 @@ describe "DataMapper::Types::BCryptHash" do
|
|
41
49
|
end
|
42
50
|
|
43
51
|
it "should return nil if given nil" do
|
44
|
-
|
52
|
+
BCryptHash.load(nil, :property).should be_nil
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe ".typecast" do
|
57
|
+
it "should return the crypted_password as a BCrypt::Password" do
|
58
|
+
BCryptHash.typecast(@crypted_password, :property).should be_an_instance_of(BCrypt::Password)
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should match the password as a BCrypt::Password" do
|
62
|
+
BCryptHash.typecast(@crypted_password, :property).should == @clear_password
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should return the string value of crypted_password as a BCrypt::Password" do
|
66
|
+
BCryptHash.typecast(@crypted_password.to_s, :property).should be_an_instance_of(BCrypt::Password)
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should match the password as a string of the crypted_password" do
|
70
|
+
BCryptHash.typecast(@crypted_password.to_s, :property).should == @clear_password
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should return the password as a BCrypt::Password" do
|
74
|
+
BCryptHash.typecast(@clear_password, :property).should be_an_instance_of(BCrypt::Password)
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should match the password as clear_password" do
|
78
|
+
BCryptHash.typecast(@clear_password, :property).should == @clear_password
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should encrypt any type that has to_s" do
|
82
|
+
BCryptHash.typecast(@nonstandard_type, :property).should be_an_instance_of(BCrypt::Password)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should match the non-standard type" do
|
86
|
+
BCryptHash.typecast(@nonstandard_type, :property).should == @nonstandard_type
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should encrypt anything passed to it" do
|
90
|
+
BCryptHash.typecast(@nonstandard_type2, :property).should be_an_instance_of(BCrypt::Password)
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should match user-defined types" do
|
94
|
+
BCryptHash.typecast(@nonstandard_type2, :property).should == @nonstandard_type2
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should return nil if given nil" do
|
98
|
+
BCryptHash.typecast(nil, :property).should be_nil
|
45
99
|
end
|
46
100
|
end
|
47
101
|
else
|
data/tasks/install.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
def sudo_gem(cmd)
|
2
|
+
sh "#{SUDO} #{RUBY} -S gem #{cmd}", :verbose => false
|
3
|
+
end
|
4
|
+
|
5
|
+
desc "Install #{GEM_NAME} #{GEM_VERSION}"
|
6
|
+
task :install => [ :package ] do
|
7
|
+
sudo_gem "install --local pkg/#{GEM_NAME}-#{GEM_VERSION} --no-update-sources"
|
8
|
+
end
|
9
|
+
|
10
|
+
desc "Uninstall #{GEM_NAME} #{GEM_VERSION}"
|
11
|
+
task :uninstall => [ :clobber ] do
|
12
|
+
sudo_gem "uninstall #{GEM_NAME} -v#{GEM_VERSION} -Ix"
|
13
|
+
end
|
data/tasks/spec.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
begin
|
2
|
+
gem 'rspec', '~>1.1.11'
|
3
|
+
require 'spec'
|
4
|
+
require 'spec/rake/spectask'
|
5
|
+
|
6
|
+
task :default => [ :spec ]
|
7
|
+
|
8
|
+
desc 'Run specifications'
|
9
|
+
Spec::Rake::SpecTask.new(:spec) do |t|
|
10
|
+
t.spec_opts << '--options' << 'spec/spec.opts' if File.exists?('spec/spec.opts')
|
11
|
+
t.spec_files = Pathname.glob((ROOT + 'spec/**/*_spec.rb').to_s)
|
12
|
+
|
13
|
+
begin
|
14
|
+
gem 'rcov', '~>0.8'
|
15
|
+
t.rcov = JRUBY ? false : (ENV.has_key?('NO_RCOV') ? ENV['NO_RCOV'] != 'true' : true)
|
16
|
+
t.rcov_opts << '--exclude' << 'spec'
|
17
|
+
t.rcov_opts << '--text-summary'
|
18
|
+
t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
|
19
|
+
rescue LoadError
|
20
|
+
# rcov not installed
|
21
|
+
end
|
22
|
+
end
|
23
|
+
rescue LoadError
|
24
|
+
# rspec not installed
|
25
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dm-types
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Smoot
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-12-07 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -18,33 +18,23 @@ dependencies:
|
|
18
18
|
version_requirement:
|
19
19
|
version_requirements: !ruby/object:Gem::Requirement
|
20
20
|
requirements:
|
21
|
-
- -
|
21
|
+
- - ~>
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 0.9.
|
23
|
+
version: 0.9.8
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
26
|
+
name: addressable
|
27
27
|
type: :runtime
|
28
28
|
version_requirement:
|
29
29
|
version_requirements: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
-
version:
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: hoe
|
37
|
-
type: :development
|
38
|
-
version_requirement:
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
40
|
-
requirements:
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 1.8.2
|
33
|
+
version: 2.0.1
|
44
34
|
version:
|
45
35
|
description: DataMapper plugin providing extra data types
|
46
36
|
email:
|
47
|
-
- ssmoot
|
37
|
+
- ssmoot [a] gmail [d] com
|
48
38
|
executables: []
|
49
39
|
|
50
40
|
extensions: []
|
@@ -53,6 +43,7 @@ extra_rdoc_files:
|
|
53
43
|
- README.txt
|
54
44
|
- LICENSE
|
55
45
|
- TODO
|
46
|
+
- History.txt
|
56
47
|
files:
|
57
48
|
- History.txt
|
58
49
|
- LICENSE
|
@@ -99,6 +90,8 @@ files:
|
|
99
90
|
- spec/unit/regexp_spec.rb
|
100
91
|
- spec/unit/uri_spec.rb
|
101
92
|
- spec/unit/yaml_spec.rb
|
93
|
+
- tasks/install.rb
|
94
|
+
- tasks/spec.rb
|
102
95
|
has_rdoc: true
|
103
96
|
homepage: http://github.com/sam/dm-more/tree/master/dm-types
|
104
97
|
post_install_message:
|