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 CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.2.3
File without changes
@@ -2,7 +2,7 @@ require 'rails_generator/generators/components/model/model_generator'
2
2
  require 'active_record'
3
3
  require 'dm-core'
4
4
 
5
- class DmModelGenerator < ModelGenerator
5
+ class DdModelGenerator < ModelGenerator
6
6
 
7
7
  def manifest
8
8
  record do |m|
@@ -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
- instance_method(name).arity != 0 ? '*args' : ''
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
- method(name).arity != 0 ? '*args' : ''
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
@@ -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.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-14}
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/dm_model/dm_model_generator.rb",
28
- "generators/dm_model/templates/model.rb",
29
- "generators/dm_model/templates/unit_test.rb",
30
- "lib/USAGE",
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.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-14 00:00:00 +08:00
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/dm_model/dm_model_generator.rb
103
- - generators/dm_model/templates/model.rb
104
- - generators/dm_model/templates/unit_test.rb
105
- - lib/USAGE
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,8 +0,0 @@
1
- Description:
2
- Explain the generator
3
-
4
- Example:
5
- ./script/generate data_mapper Thing
6
-
7
- This will create:
8
- what/will/it/create
@@ -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
@@ -1,8 +0,0 @@
1
- class <%= class_name %>
2
- include DataMapper::Resource
3
-
4
- property :id, Serial
5
- <% for attribute in attributes -%>
6
- property :<%= attribute.name %>, <%= attribute.type %>
7
- <% end -%>
8
- end
@@ -1,8 +0,0 @@
1
- class <%= class_name %>
2
- include DataMapper::Resource
3
-
4
- property :id, Serial
5
- <% for attribute in attributes -%>
6
- property :<%= attribute.name %>, <%= attribute.type %>
7
- <% end -%>
8
- end