rails_dm_datastore 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/{lib → generators/dd_model}/USAGE +0 -0
- data/generators/{dm_model/dm_model_generator.rb → dd_model/dd_model_generator.rb} +1 -1
- data/generators/{dm_model → dd_model}/templates/model.rb +0 -0
- data/generators/{dm_model → dd_model}/templates/unit_test.rb +0 -0
- data/lib/rails_dm_datastore.rb +30 -7
- data/rails_dm_datastore.gemspec +10 -12
- data/test/test_weak_reference.rb +83 -0
- metadata +8 -10
- data/lib/generators/data_mapper/USAGE +0 -8
- data/lib/generators/data_mapper/model/model_generator.rb +0 -38
- data/lib/generators/data_mapper/model/templates/model.rb +0 -8
- data/lib/generators/data_mapper/templates/model.rb +0 -8
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.3
|
File without changes
|
File without changes
|
File without changes
|
data/lib/rails_dm_datastore.rb
CHANGED
@@ -4,7 +4,7 @@ require 'dm-ar-finders'
|
|
4
4
|
require 'dm-timestamps'
|
5
5
|
require 'dm-validations'
|
6
6
|
DataMapper.setup(:default, "appengine://auto")
|
7
|
-
|
7
|
+
#DataMapper.setup(:ephemeral, "in_memory::")
|
8
8
|
module DataMapper
|
9
9
|
module Resource
|
10
10
|
# avoid object references in URLs
|
@@ -19,20 +19,43 @@ end
|
|
19
19
|
# DataMapper::Validate
|
20
20
|
class Dictionary; alias count length; end
|
21
21
|
|
22
|
+
|
23
|
+
#Override Extlib::Hook::ClassMethods.inline_call to check in the given weak reference
|
24
|
+
|
25
|
+
module LocalObjectSpace
|
26
|
+
def self.extended(klass)
|
27
|
+
(class << klass; self;end).send :attr_accessor, :hook_scopes
|
28
|
+
|
29
|
+
klass.hook_scopes = []
|
30
|
+
end
|
31
|
+
|
32
|
+
def object_by_id(object_id)
|
33
|
+
self.hook_scopes.each do |object|
|
34
|
+
return object if object.object_id == object_id
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
22
40
|
module Extlib
|
23
41
|
module Hook
|
24
42
|
module ClassMethods
|
43
|
+
|
44
|
+
extend LocalObjectSpace
|
45
|
+
|
46
|
+
#end
|
47
|
+
|
25
48
|
def inline_call(method_info, scope)
|
49
|
+
Extlib::Hook::ClassMethods.hook_scopes << method_info[:from]
|
26
50
|
name = method_info[:name]
|
51
|
+
|
27
52
|
if scope == :instance
|
28
|
-
args = method_defined?(name) &&
|
29
|
-
|
53
|
+
args = method_defined?(name) && instance_method(name).arity != 0 ? '*args' : ''
|
54
|
+
%(#{name}(#{args}) if self.class <= Extlib::Hook::ClassMethods.object_by_id(#{method_info[:from].object_id}))
|
30
55
|
else
|
31
|
-
args = respond_to?(name) &&
|
32
|
-
|
56
|
+
args = respond_to?(name) && method(name).arity != 0 ? '*args' : ''
|
57
|
+
%(#{name}(#{args}) if self <= Extlib::Hook::ClassMethods.object_by_id(#{method_info[:from].object_id}))
|
33
58
|
end
|
34
|
-
# ObjectSpace._id2ref should be replaced with WeakRef
|
35
|
-
%(#{name}(#{args})) # Always call hook... set_timestamps_on_save()
|
36
59
|
end
|
37
60
|
end
|
38
61
|
end
|
data/rails_dm_datastore.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rails_dm_datastore}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["joshsmoore"]
|
12
|
-
s.date = %q{2010-01-
|
12
|
+
s.date = %q{2010-01-25}
|
13
13
|
s.description = %q{Integrate datamapper to Rails for the Google App Engine}
|
14
14
|
s.email = %q{joshsmoore@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -24,18 +24,15 @@ Gem::Specification.new do |s|
|
|
24
24
|
"Rakefile",
|
25
25
|
"VERSION",
|
26
26
|
"dm-rails-gae.gemspec",
|
27
|
-
"generators/
|
28
|
-
"generators/
|
29
|
-
"generators/
|
30
|
-
"
|
31
|
-
"lib/generators/data_mapper/USAGE",
|
32
|
-
"lib/generators/data_mapper/model/model_generator.rb",
|
33
|
-
"lib/generators/data_mapper/model/templates/model.rb",
|
34
|
-
"lib/generators/data_mapper/templates/model.rb",
|
27
|
+
"generators/dd_model/USAGE",
|
28
|
+
"generators/dd_model/dd_model_generator.rb",
|
29
|
+
"generators/dd_model/templates/model.rb",
|
30
|
+
"generators/dd_model/templates/unit_test.rb",
|
35
31
|
"lib/rails_dm_datastore.rb",
|
36
32
|
"rails_dm_datastore.gemspec",
|
37
33
|
"test/helper.rb",
|
38
|
-
"test/test_dm-rails-gae.rb"
|
34
|
+
"test/test_dm-rails-gae.rb",
|
35
|
+
"test/test_weak_reference.rb"
|
39
36
|
]
|
40
37
|
s.homepage = %q{http://github.com/joshsmoore/dm-rails-gae}
|
41
38
|
s.rdoc_options = ["--charset=UTF-8"]
|
@@ -44,7 +41,8 @@ Gem::Specification.new do |s|
|
|
44
41
|
s.summary = %q{Generators for dm on gae}
|
45
42
|
s.test_files = [
|
46
43
|
"test/helper.rb",
|
47
|
-
"test/test_dm-rails-gae.rb"
|
44
|
+
"test/test_dm-rails-gae.rb",
|
45
|
+
"test/test_weak_reference.rb"
|
48
46
|
]
|
49
47
|
|
50
48
|
if s.respond_to? :specification_version then
|
@@ -0,0 +1,83 @@
|
|
1
|
+
module ActionView
|
2
|
+
module Partials
|
3
|
+
def render_partial
|
4
|
+
#so that we do not have to load action view but can still alias this method
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
|
10
|
+
require 'rubygems'
|
11
|
+
require 'lib/rails_dm_datastore'
|
12
|
+
require 'test/unit'
|
13
|
+
|
14
|
+
class TestInlineCall
|
15
|
+
extend Extlib::Hook::ClassMethods
|
16
|
+
end
|
17
|
+
|
18
|
+
class Person
|
19
|
+
include DataMapper::Resource
|
20
|
+
|
21
|
+
property :id, Serial
|
22
|
+
property :name, String
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
class Child < Person
|
27
|
+
|
28
|
+
property :grade, String
|
29
|
+
end
|
30
|
+
|
31
|
+
class TestWeakReference < Test::Unit::TestCase
|
32
|
+
|
33
|
+
def setup
|
34
|
+
Extlib::Hook::ClassMethods.hook_scopes = []
|
35
|
+
end
|
36
|
+
|
37
|
+
def teardown
|
38
|
+
Extlib::Hook::ClassMethods.hook_scopes = []
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_add_object_to_hooks_scope
|
42
|
+
|
43
|
+
scope_objects = [Person, Person.new]
|
44
|
+
scope_objects.each {|object| Extlib::Hook::ClassMethods.hook_scopes << object }
|
45
|
+
|
46
|
+
scope_objects.each {|object| assert Extlib::Hook::ClassMethods.hook_scopes.include? object}
|
47
|
+
assert_equal scope_objects.count, Extlib::Hook::ClassMethods.hook_scopes.count
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_inline_call
|
51
|
+
assert_nothing_raised do
|
52
|
+
eval TestInlineCall.inline_call({:from => Person, :name => 'person_class'},:instance)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_find_object_by_id
|
57
|
+
objects = [Person, Person.new, Child, Child.new]
|
58
|
+
objects.each {|object| Extlib::Hook::ClassMethods.hook_scopes << object }
|
59
|
+
|
60
|
+
assert_equal objects[0], Extlib::Hook::ClassMethods.object_by_id(objects[0].object_id)
|
61
|
+
assert_equal objects[1], Extlib::Hook::ClassMethods.object_by_id(objects[1].object_id)
|
62
|
+
assert_equal objects[3], Extlib::Hook::ClassMethods.object_by_id(objects[3].object_id)
|
63
|
+
assert_equal objects[2], Extlib::Hook::ClassMethods.object_by_id(objects[2].object_id)
|
64
|
+
|
65
|
+
assert_not_equal objects[2], Extlib::Hook::ClassMethods.object_by_id(objects[0].object_id)
|
66
|
+
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_store_a_reference_for_ever_hooks_scope
|
71
|
+
assert_nothing_raised do
|
72
|
+
Extlib::Hook::ClassMethods.hook_scopes
|
73
|
+
end
|
74
|
+
#ExtLib::Hook::ClassMethods.responds_to? :hook_scopes
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
#test "the model should respond with a list of subclasses" do
|
80
|
+
|
81
|
+
#end
|
82
|
+
|
83
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_dm_datastore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- joshsmoore
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-25 00:00:00 +08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -99,18 +99,15 @@ files:
|
|
99
99
|
- Rakefile
|
100
100
|
- VERSION
|
101
101
|
- dm-rails-gae.gemspec
|
102
|
-
- generators/
|
103
|
-
- generators/
|
104
|
-
- generators/
|
105
|
-
-
|
106
|
-
- lib/generators/data_mapper/USAGE
|
107
|
-
- lib/generators/data_mapper/model/model_generator.rb
|
108
|
-
- lib/generators/data_mapper/model/templates/model.rb
|
109
|
-
- lib/generators/data_mapper/templates/model.rb
|
102
|
+
- generators/dd_model/USAGE
|
103
|
+
- generators/dd_model/dd_model_generator.rb
|
104
|
+
- generators/dd_model/templates/model.rb
|
105
|
+
- generators/dd_model/templates/unit_test.rb
|
110
106
|
- lib/rails_dm_datastore.rb
|
111
107
|
- rails_dm_datastore.gemspec
|
112
108
|
- test/helper.rb
|
113
109
|
- test/test_dm-rails-gae.rb
|
110
|
+
- test/test_weak_reference.rb
|
114
111
|
has_rdoc: true
|
115
112
|
homepage: http://github.com/joshsmoore/dm-rails-gae
|
116
113
|
licenses: []
|
@@ -142,3 +139,4 @@ summary: Generators for dm on gae
|
|
142
139
|
test_files:
|
143
140
|
- test/helper.rb
|
144
141
|
- test/test_dm-rails-gae.rb
|
142
|
+
- test/test_weak_reference.rb
|
@@ -1,38 +0,0 @@
|
|
1
|
-
#require 'data_mapper/data_mapper_generator'
|
2
|
-
require 'rails/generators/named_base'
|
3
|
-
|
4
|
-
module DataMapper
|
5
|
-
module Generators
|
6
|
-
class ModelGenerator < Rails::Generators::NamedBase #DataMapperGenerator
|
7
|
-
argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
|
8
|
-
|
9
|
-
check_class_collision
|
10
|
-
|
11
|
-
#class_option :migration, :type => :boolean
|
12
|
-
class_option :timestamps, :type => :boolean
|
13
|
-
#class_option :parent, :type => :string, :desc => "The parent class for the generated model"
|
14
|
-
|
15
|
-
#def create_migration_file
|
16
|
-
# return unless options[:migration] && options[:parent].nil?
|
17
|
-
# migration_template "migration.rb", "db/migrate/create_#{table_name}.rb"
|
18
|
-
#end
|
19
|
-
|
20
|
-
def create_model_file
|
21
|
-
puts "I am creating a datamapper model"
|
22
|
-
template 'model.rb', File.join('app/models', class_path, "#{file_name}.rb")
|
23
|
-
end
|
24
|
-
|
25
|
-
#hook_for :test_framework
|
26
|
-
|
27
|
-
#protected
|
28
|
-
|
29
|
-
#def parent_class_name
|
30
|
-
# options[:parent] || "ActiveRecord::Base"
|
31
|
-
#end
|
32
|
-
def self.source_root
|
33
|
-
puts File.expand_path('../templates', __FILE__)
|
34
|
-
@source_root ||= File.expand_path('../templates', __FILE__)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|