activeuuid 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -2,3 +2,4 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ *.log
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --colour
2
+ --format documentation
3
+ --backtrace
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use 1.9.3@activeuuid --create
data/README.mkd CHANGED
@@ -12,7 +12,7 @@ Add `binary(16)` UUIDs to ActiveRecord.
12
12
  class CreateEmails < ActiveRecord::Migration
13
13
  def self.up
14
14
  create_table :emails, :id => false do |t|
15
- t.uuid :id, :unique => true
15
+ t.uuid :id, :primary_key => true
16
16
  t.uuid :sender_id # belongs_to :sender
17
17
 
18
18
  t.string :subject
@@ -114,6 +114,24 @@ Add this to your `Gemfile`
114
114
 
115
115
  Or get the code here: https://github.com/jashmenn/activeuuid
116
116
 
117
+ ## Notes
118
+
119
+ ### Fixtures
120
+
121
+ You can use `activeuuid` in fixtures by using the `!!binary` directive in YAML.
122
+ The trick is to base64 encode the raw bytes of the hexdigest.
123
+
124
+ ```yaml
125
+ devin_ifttt_new_tweet:
126
+ id: !!binary "<%= Base64.encode64(UUIDTools::UUID.parse_hexdigest('2D79B402CBA811E1AA7C14DAE903E06A').raw) %>"
127
+ data:
128
+ user_id: 1
129
+ source_id: 1
130
+ recipe_id: 1
131
+ created_at: Mon, 09 Jul 2012 14:06:21 -0700
132
+ body: Nice blog entry!
133
+ ```
134
+
117
135
  ## References
118
136
  * [1] http://bret.appspot.com/entry/how-friendfeed-uses-mysql
119
137
  * [2] http://kekoav.com/blog/36-computers/58-uuids-as-primary-keys-in-mysql.html
@@ -126,8 +144,6 @@ Or get the code here: https://github.com/jashmenn/activeuuid
126
144
  Rails ~> 3.1.0 - It uses the custom column serialization Aaron
127
145
  Patterson introduced in Rails 3.1.
128
146
 
129
- I'm using JRuby 1.9 (1.6.3) but this should work under MRI (YMMV).
130
-
131
147
  ## Author
132
148
 
133
149
  Nate Murray <nate@xcombinator.com>
data/Rakefile CHANGED
@@ -1 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ require 'rspec/core'
4
+ require 'rspec/core/rake_task'
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
data/activeuuid.gemspec CHANGED
@@ -16,6 +16,16 @@ Gem::Specification.new do |s|
16
16
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
17
  s.require_paths = ["lib"]
18
18
 
19
- # s.add_development_dependency "rspec"
19
+ s.add_development_dependency "rake"
20
+ s.add_development_dependency "rspec"
21
+ s.add_development_dependency "activesupport"
22
+ s.add_development_dependency "database_cleaner"
23
+ s.add_development_dependency "forgery"
24
+ s.add_development_dependency "fabrication"
25
+ s.add_development_dependency "sqlite3"
26
+ s.add_development_dependency "pg"
27
+ s.add_development_dependency "mysql2"
28
+
20
29
  s.add_runtime_dependency "uuidtools"
30
+ s.add_runtime_dependency "activerecord"
21
31
  end
data/lib/activeuuid.rb CHANGED
@@ -1,6 +1,9 @@
1
1
  require "activeuuid/version"
2
+ require 'activeuuid/patches'
3
+ require 'activeuuid/uuid'
4
+ require 'activeuuid/railtie' if defined?(Rails::Railtie)
2
5
 
3
6
  module ActiveUUID
4
- require 'activeuuid/railtie' if defined?(Rails::Railtie)
5
- require 'activeuuid/uuid'
6
7
  end
8
+
9
+ ActiveUUID::Patches.apply!
@@ -0,0 +1,60 @@
1
+ module ActiveUUID
2
+ module Patches
3
+ module Migrations
4
+ def uuid(*args)
5
+ options = args.extract_options!
6
+ column_names = args
7
+ column_names.each do |name|
8
+ type = @base.adapter_name.downcase == 'postgresql' ? 'uuid' : 'binary(16)'
9
+ column(name, "#{type}#{' PRIMARY KEY' if options.delete(:primary_key)}", options)
10
+ end
11
+ end
12
+ end
13
+
14
+ module Quoting
15
+ extend ActiveSupport::Concern
16
+
17
+ included do
18
+ def quote_with_visiting(value, column = nil)
19
+ value = ActiveUUID::UUIDSerializer.new.load(value) if column && column.sql_type == 'binary(16)'
20
+ quote_without_visiting(value, column)
21
+ end
22
+
23
+ def type_cast_with_visiting(value, column = nil)
24
+ value = ActiveUUID::UUIDSerializer.new.load(value) if column && column.sql_type == 'binary(16)'
25
+ type_cast_without_visiting(value, column)
26
+ end
27
+
28
+ alias_method_chain :quote, :visiting
29
+ alias_method_chain :type_cast, :visiting
30
+ end
31
+ end
32
+
33
+ module PostgreSQLQuoting
34
+ extend ActiveSupport::Concern
35
+
36
+ included do
37
+ def quote_with_visiting(value, column = nil)
38
+ value = ActiveUUID::UUIDSerializer.new.load(value).to_s if column && column.sql_type == 'uuid'
39
+ quote_without_visiting(value, column)
40
+ end
41
+
42
+ def type_cast_with_visiting(value, column = nil)
43
+ value = ActiveUUID::UUIDSerializer.new.load(value).to_s if column && column.sql_type == 'uuid'
44
+ type_cast_without_visiting(value, column)
45
+ end
46
+
47
+ alias_method_chain :quote, :visiting
48
+ alias_method_chain :type_cast, :visiting
49
+ end
50
+ end
51
+
52
+ def self.apply!
53
+ ActiveRecord::ConnectionAdapters::Table.send :include, Migrations if defined? ActiveRecord::ConnectionAdapters::Table
54
+ ActiveRecord::ConnectionAdapters::TableDefinition.send :include, Migrations if defined? ActiveRecord::ConnectionAdapters::TableDefinition
55
+ ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter.send :include, Quoting if defined? ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
56
+ ActiveRecord::ConnectionAdapters::SQLite3Adapter.send :include, Quoting if defined? ActiveRecord::ConnectionAdapters::SQLite3Adapter
57
+ ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.send :include, PostgreSQLQuoting if defined? ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
58
+ end
59
+ end
60
+ end
@@ -4,17 +4,9 @@ require 'rails'
4
4
  module ActiveUUID
5
5
  class Railtie < Rails::Railtie
6
6
  railtie_name :activeuuid
7
- initializer "activeuuid.configure_rails_initialization" do
8
- module ActiveRecord::ConnectionAdapters
9
- class Table
10
- def uuid (*args)
11
- options = args.extract_options!
12
- column_names = args
13
- column_names.each { |name| column(name, 'binary(16)', options) }
14
- end
15
- end
16
- end
17
7
 
8
+ config.to_prepare do
9
+ ActiveUUID::Patches.apply!
18
10
  end
19
11
  end
20
12
  end
@@ -1,6 +1,10 @@
1
+ require 'uuidtools'
2
+
1
3
  module UUIDTools
2
4
  class UUID
3
5
  # monkey-patch Friendly::UUID to serialize UUIDs to MySQL
6
+ alias_method :id, :raw
7
+
4
8
  def quoted_id
5
9
  s = raw.unpack("H*")[0]
6
10
  "x'#{s}'"
@@ -23,6 +27,7 @@ module Arel
23
27
  o.quoted_id
24
28
  end
25
29
  end
30
+
26
31
  class MySQL < Arel::Visitors::ToSql
27
32
  def visit_UUIDTools_UUID(o)
28
33
  o.quoted_id
@@ -34,6 +39,12 @@ module Arel
34
39
  o.quoted_id
35
40
  end
36
41
  end
42
+
43
+ class PostgreSQL < Arel::Visitors::ToSql
44
+ def visit_UUIDTools_UUID(o)
45
+ "'#{o.to_s}'"
46
+ end
47
+ end
37
48
  end
38
49
  end
39
50
 
@@ -41,13 +52,37 @@ module ActiveUUID
41
52
  class UUIDSerializer
42
53
  def load(binary)
43
54
  case binary
44
- when UUIDTools::UUID then binary
45
- when nil then nil
46
- else UUIDTools::UUID.parse_raw(binary)
55
+ when UUIDTools::UUID
56
+ binary
57
+ when String
58
+ parse_string(binary)
59
+ else
60
+ nil
47
61
  end
48
62
  end
63
+
49
64
  def dump(uuid)
50
- uuid ? uuid.raw : nil
65
+ case uuid
66
+ when UUIDTools::UUID
67
+ uuid.raw
68
+ when String
69
+ parse_string(uuid).try(:raw)
70
+ else
71
+ nil
72
+ end
73
+ end
74
+
75
+ private
76
+
77
+ def parse_string str
78
+ return nil if str.blank?
79
+ if str.length == 36
80
+ UUIDTools::UUID.parse str
81
+ elsif str.length == 32
82
+ UUIDTools::UUID.parse_hexdigest str
83
+ else
84
+ UUIDTools::UUID.parse_raw str
85
+ end
51
86
  end
52
87
  end
53
88
 
@@ -55,28 +90,9 @@ module ActiveUUID
55
90
  extend ActiveSupport::Concern
56
91
 
57
92
  included do
58
- before_create :generate_uuid_if_needed
59
-
60
- set_primary_key "id"
61
- serialize :id, ActiveUUID::UUIDSerializer.new
62
-
63
- def generate_uuid_if_needed
64
- generate_uuid unless self.id
65
- end
66
-
67
- def to_param
68
- id.to_param
69
- end
70
-
71
- def generate_uuid
72
- if nka = self.class.natural_key_attributes
73
- # TODO if all the attributes return nil you might want to warn about this
74
- chained = nka.collect{|a| self.send(a).to_s}.join("-")
75
- self.id = UUIDTools::UUID.sha1_create(UUIDTools::UUID_OID_NAMESPACE, chained)
76
- else
77
- self.id = UUIDTools::UUID.timestamp_create
78
- end
79
- end
93
+ class_attribute :uuid_attributes, :instance_writer => true
94
+ uuids :id
95
+ before_create :generate_uuids_if_needed
80
96
  end
81
97
 
82
98
  module ClassMethods
@@ -88,20 +104,47 @@ module ActiveUUID
88
104
  @_activeuuid_natural_key_attributes = attributes
89
105
  end
90
106
 
107
+ def uuid_generator(generator_name=nil)
108
+ @_activeuuid_kind = generator_name if generator_name
109
+ @_activeuuid_kind || :random
110
+ end
111
+
91
112
  def uuids(*attributes)
92
- attributes.each do |attribute|
93
- serialize attribute.intern, ActiveUUID::UUIDSerializer.new
113
+ self.uuid_attributes = attributes.collect(&:intern).each do |attribute|
114
+ serialize attribute, ActiveUUID::UUIDSerializer.new
115
+ # serializing attributes on the fly
116
+ define_method "#{attribute}=" do |value|
117
+ write_attribute attribute, serialized_attributes[attribute.to_s].load(value)
118
+ end
119
+ end
94
120
  #class_eval <<-eos
95
121
  # # def #{@association_name}
96
122
  # # @_#{@association_name} ||= self.class.associations[:#{@association_name}].new_proxy(self)
97
123
  # # end
98
124
  #eos
99
- end
100
125
  end
101
126
  end
102
127
 
103
- module InstanceMethods
128
+ def create_uuid
129
+ if nka = self.class.natural_key_attributes
130
+ # TODO if all the attributes return nil you might want to warn about this
131
+ chained = nka.collect{|a| self.send(a).to_s}.join("-")
132
+ UUIDTools::UUID.sha1_create(UUIDTools::UUID_OID_NAMESPACE, chained)
133
+ else
134
+ case self.class.uuid_generator
135
+ when :random
136
+ UUIDTools::UUID.random_create
137
+ when :time
138
+ UUIDTools::UUID.timestamp_create
139
+ end
140
+ end
104
141
  end
105
-
142
+
143
+ def generate_uuids_if_needed
144
+ (uuid_attributes & [self.class.primary_key.intern]).each do |attr|
145
+ self.send("#{attr}=", create_uuid) unless self.send(attr)
146
+ end
147
+ end
148
+
106
149
  end
107
150
  end
@@ -1,3 +1,3 @@
1
1
  module Activeuuid
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -0,0 +1,4 @@
1
+ Fabricator(:article) do
2
+ title { Forgery::LoremIpsum.word }
3
+ body { Forgery::LoremIpsum.sentence }
4
+ end
@@ -0,0 +1,4 @@
1
+ Fabricator(:uuid_article) do
2
+ title { Forgery::LoremIpsum.word }
3
+ body { Forgery::LoremIpsum.sentence }
4
+ end
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+
3
+ describe Article do
4
+ let!(:article) { Fabricate :article }
5
+ let(:id) { article.id }
6
+ let(:model) { Article }
7
+
8
+ context 'existance' do
9
+ specify { article.id.should be_a Integer }
10
+ it "should create record" do
11
+ model.all.should == [article]
12
+ model.first.should == article
13
+ end
14
+ end
15
+
16
+ context '.find' do
17
+ specify { model.find(id).should == article }
18
+ end
19
+
20
+ context '.where' do
21
+ specify { model.where(:id => id).first.should == article }
22
+ end
23
+
24
+ context '.destroy' do
25
+ specify { article.delete.should be_true }
26
+ specify { article.destroy.should be_true }
27
+ end
28
+ end
29
+
30
+ describe UuidArticle do
31
+ let!(:article) { Fabricate :uuid_article }
32
+ let(:id) { article.id }
33
+ let(:model) { UuidArticle }
34
+
35
+ specify { model.primary_key.should == 'id' }
36
+
37
+ context 'existance' do
38
+ specify { article.id.should be_a UUIDTools::UUID }
39
+ it "should create record" do
40
+ model.all.should == [article]
41
+ model.first.should == article
42
+ end
43
+ end
44
+
45
+ context '.find' do
46
+ specify { model.find(article).should == article }
47
+ specify { model.find(id).should == article }
48
+ specify { model.find(id.to_s).should == article }
49
+ specify { model.find(id.raw).should == article }
50
+ end
51
+
52
+ context '.where' do
53
+ specify { model.where(:id => article).first.should == article }
54
+ specify { model.where(:id => id).first.should == article }
55
+ specify { model.where(:id => id.to_s).first.should == article }
56
+ specify { model.where(:id => id.raw).first.should == article }
57
+ end
58
+
59
+ context '.destroy' do
60
+ specify { article.delete.should be_true }
61
+ specify { article.destroy.should be_true }
62
+ end
63
+ end
@@ -0,0 +1,76 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveUUID::UUIDSerializer do
4
+
5
+ before do
6
+ @input = "2d79b402-cba8-11e1-aa7c-14dae903e06a"
7
+ @hex = "2D79B402CBA811E1AA7C14DAE903E06A"
8
+ @uuid = UUIDTools::UUID.parse @input
9
+ @raw = @uuid.raw
10
+ @serializer = ActiveUUID::UUIDSerializer.new
11
+ end
12
+
13
+ describe '#load' do
14
+ it 'returns a UUID type verbatim' do
15
+ @serializer.load(@uuid).should eql(@uuid)
16
+ end
17
+
18
+ describe 'loads a given uuid' do
19
+ it 'handles uuid string' do
20
+ @serializer.load(@input).should eql(@uuid)
21
+ end
22
+
23
+ it 'handles uuid hexdigest string' do
24
+ @serializer.load(@hex).should eql(@uuid)
25
+ end
26
+
27
+ it 'handles raw uuid data' do
28
+ @serializer.load(@raw).should eql(@uuid)
29
+ end
30
+ end
31
+
32
+ it 'returns nil for nil' do
33
+ @serializer.load(nil).should be_nil
34
+ end
35
+
36
+ it 'returns nil for ""' do
37
+ @serializer.load('').should be_nil
38
+ end
39
+
40
+ it 'returns nil for other types' do
41
+ @serializer.load(5).should be_nil
42
+ end
43
+ end
44
+
45
+ describe '#dump' do
46
+ it 'returns the raw value of a passed uuid' do
47
+ @serializer.dump(@uuid).should eql(@raw)
48
+ end
49
+
50
+ describe 'loads a given uuid' do
51
+ it 'handles uuid string' do
52
+ @serializer.dump(@input).should eql(@raw)
53
+ end
54
+
55
+ it 'handles uuid hexdigest string' do
56
+ @serializer.dump(@hex).should eql(@raw)
57
+ end
58
+
59
+ it 'handles raw uuid data' do
60
+ @serializer.dump(@raw).should eql(@raw)
61
+ end
62
+ end
63
+
64
+ it 'returns nil for nil' do
65
+ @serializer.dump(nil).should be_nil
66
+ end
67
+
68
+ it 'returns nil for ""' do
69
+ @serializer.dump('').should be_nil
70
+ end
71
+
72
+ it 'returns nil for other types' do
73
+ @serializer.dump(5).should be_nil
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe UUIDTools::UUID do
4
+
5
+ before do
6
+ input = "e4618518-cb9f-11e1-aa7c-14dae903e06a"
7
+ @sql_out = "x'e4618518cb9f11e1aa7c14dae903e06a'"
8
+ @param_out = "E4618518CB9F11E1AA7C14DAE903E06A"
9
+
10
+ @uuid = UUIDTools::UUID.parse input
11
+ end
12
+
13
+ it 'adds methods to the UUID class' do
14
+ [:quoted_id, :as_json, :to_param].each do |meth|
15
+ @uuid.should respond_to(meth)
16
+ end
17
+ end
18
+
19
+ describe '#quoted_id' do
20
+ it 'returns the SQL binary representation for the uuid' do
21
+ @uuid.quoted_id.should eql(@sql_out)
22
+ end
23
+ end
24
+
25
+ describe '#as_json' do
26
+ it 'returns the uppercase hexdigest' do
27
+ @uuid.as_json.should eql(@param_out)
28
+ end
29
+ end
30
+
31
+ describe '#to_param' do
32
+ it 'also returns the uppercase hexdigest' do
33
+ @uuid.to_param.should eql(@param_out)
34
+ end
35
+ end
36
+
37
+ end
@@ -0,0 +1,41 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ Bundler.require :development
5
+
6
+ require 'active_record'
7
+ require 'active_support/all'
8
+
9
+ ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log")
10
+ ActiveRecord::Base.configurations = YAML::load(File.read(File.dirname(__FILE__) + "/support/database.yml"))
11
+ ActiveRecord::Base.establish_connection(ENV["DB"] || "sqlite3")
12
+
13
+ require 'activeuuid'
14
+
15
+ ActiveRecord::Migrator.migrate(File.dirname(__FILE__) + "/support/migrate")
16
+
17
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
18
+ Dir["#{File.dirname(__FILE__)}/fabricators/**/*.rb"].each { |f| require f }
19
+
20
+ RSpec.configure do |config|
21
+ # Remove this line if you don't want RSpec's should and should_not
22
+ # methods or matchers
23
+ require 'rspec/expectations'
24
+ config.include RSpec::Matchers
25
+
26
+ # == Mock Framework
27
+ config.mock_with :rspec
28
+
29
+ config.before(:suite) do
30
+ DatabaseCleaner.clean_with(:truncation)
31
+ DatabaseCleaner.strategy = :transaction
32
+ end
33
+
34
+ config.before(:each) do
35
+ DatabaseCleaner.start
36
+ end
37
+
38
+ config.after(:each) do
39
+ DatabaseCleaner.clean
40
+ end
41
+ end
@@ -0,0 +1,15 @@
1
+ sqlite3:
2
+ adapter: sqlite3
3
+ database: ":memory:"
4
+ postgresql:
5
+ adapter: postgresql
6
+ username: postgres
7
+ password:
8
+ database: activeuuid_test
9
+ min_messages: ERROR
10
+ mysql:
11
+ adapter: mysql2
12
+ host: localhost
13
+ username: root
14
+ password:
15
+ database: activeuuid_test
@@ -0,0 +1,10 @@
1
+ class CreateArticles < ActiveRecord::Migration
2
+ def change
3
+ create_table :articles do |t|
4
+ t.string :title
5
+ t.text :body
6
+
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ class CreateUuidArticles < ActiveRecord::Migration
2
+ def change
3
+ create_table :uuid_articles, :id => false do |t|
4
+ t.uuid :id, :primary_key => true
5
+ t.string :title
6
+ t.text :body
7
+
8
+ t.timestamps
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ class Article < ActiveRecord::Base
2
+
3
+ end
@@ -0,0 +1,4 @@
1
+ class UuidArticle < ActiveRecord::Base
2
+ include ActiveUUID::UUID
3
+
4
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeuuid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,155 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-22 00:00:00.000000000 Z
12
+ date: 2012-10-05 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: activesupport
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: database_cleaner
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: forgery
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: fabrication
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: sqlite3
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: pg
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: mysql2
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
14
158
  - !ruby/object:Gem::Dependency
15
159
  name: uuidtools
16
- requirement: &70339296286420 !ruby/object:Gem::Requirement
160
+ requirement: !ruby/object:Gem::Requirement
17
161
  none: false
18
162
  requirements:
19
163
  - - ! '>='
@@ -21,7 +165,28 @@ dependencies:
21
165
  version: '0'
22
166
  type: :runtime
23
167
  prerelease: false
24
- version_requirements: *70339296286420
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: activerecord
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :runtime
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
25
190
  description: Add binary (not string) UUIDs to ActiveRecord in MySQL
26
191
  email:
27
192
  - nate@natemurray.com
@@ -30,14 +195,28 @@ extensions: []
30
195
  extra_rdoc_files: []
31
196
  files:
32
197
  - .gitignore
198
+ - .rspec
199
+ - .rvmrc
33
200
  - Gemfile
34
201
  - README.mkd
35
202
  - Rakefile
36
203
  - activeuuid.gemspec
37
204
  - lib/activeuuid.rb
205
+ - lib/activeuuid/patches.rb
38
206
  - lib/activeuuid/railtie.rb
39
207
  - lib/activeuuid/uuid.rb
40
208
  - lib/activeuuid/version.rb
209
+ - spec/fabricators/article_fabricator.rb
210
+ - spec/fabricators/uuid_article_fabricator.rb
211
+ - spec/lib/activerecord_spec.rb
212
+ - spec/lib/serializer_spec.rb
213
+ - spec/lib/uuid_mokeypatch_spec.rb
214
+ - spec/spec_helper.rb
215
+ - spec/support/database.yml
216
+ - spec/support/migrate/20111117081813_create_articles.rb
217
+ - spec/support/migrate/20120817081813_create_uuid_articles.rb
218
+ - spec/support/models/article.rb
219
+ - spec/support/models/uuid_article.rb
41
220
  homepage: http://www.eigenjoy.com
42
221
  licenses: []
43
222
  post_install_message:
@@ -50,17 +229,33 @@ required_ruby_version: !ruby/object:Gem::Requirement
50
229
  - - ! '>='
51
230
  - !ruby/object:Gem::Version
52
231
  version: '0'
232
+ segments:
233
+ - 0
234
+ hash: -2357852166137688430
53
235
  required_rubygems_version: !ruby/object:Gem::Requirement
54
236
  none: false
55
237
  requirements:
56
238
  - - ! '>='
57
239
  - !ruby/object:Gem::Version
58
240
  version: '0'
241
+ segments:
242
+ - 0
243
+ hash: -2357852166137688430
59
244
  requirements: []
60
245
  rubyforge_project:
61
- rubygems_version: 1.8.17
246
+ rubygems_version: 1.8.24
62
247
  signing_key:
63
248
  specification_version: 3
64
249
  summary: Add binary UUIDs to ActiveRecord in MySQL
65
- test_files: []
66
- has_rdoc:
250
+ test_files:
251
+ - spec/fabricators/article_fabricator.rb
252
+ - spec/fabricators/uuid_article_fabricator.rb
253
+ - spec/lib/activerecord_spec.rb
254
+ - spec/lib/serializer_spec.rb
255
+ - spec/lib/uuid_mokeypatch_spec.rb
256
+ - spec/spec_helper.rb
257
+ - spec/support/database.yml
258
+ - spec/support/migrate/20111117081813_create_articles.rb
259
+ - spec/support/migrate/20120817081813_create_uuid_articles.rb
260
+ - spec/support/models/article.rb
261
+ - spec/support/models/uuid_article.rb