infopark_rails_connector_meta 1.6.3 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,20 @@
1
+ module RailsConnector
2
+ # This trick is a workaround to provide compatiblity with both
3
+ # ObjExtensions-enabled versions (older versions) and ObjExtensions-deprecated
4
+ # versions (newest versions) of RailsConnector
5
+ #
6
+ # It first tries to use user-defined Obj class in the newest RailsConnector,
7
+ # which is also an alias for RailsConnector::Obj in the older RailsConnector.
8
+ # If that fails it falls back to ::RailsConnector::BasicObj (new)
9
+ # or ::RailsConnector::Obj (old).
10
+ # The last case shouldn't really ever happen.
11
+ AbstractObj = begin
12
+ ::Obj
13
+ rescue NameError
14
+ begin
15
+ ::RailsConnector::BasicObj
16
+ rescue NameError
17
+ ::RailsConnector::Obj
18
+ end
19
+ end
20
+ end
File without changes
File without changes
@@ -25,16 +25,16 @@ module RailsConnector
25
25
  @blob_data['titles'] || {}
26
26
  end
27
27
 
28
- # Returns the custom Ruby class or RailsConnector::Obj.
28
+ # Returns the custom Ruby class or RailsConnector::AbstractObj.
29
29
  def ruby_class
30
30
  # this must be the same algorithm that the rest of the RailsConnector uses!
31
- RailsConnector::Obj.compute_type(self.name)
31
+ RailsConnector::AbstractObj.compute_type(self.name)
32
32
  end
33
33
 
34
34
  # Returns true, if a custom Ruby class exists.
35
35
  def has_custom_ruby_class?
36
- self.ruby_class.present? && self.ruby_class != RailsConnector::Obj &&
37
- self.ruby_class.ancestors.include?(RailsConnector::Obj)
36
+ self.ruby_class.present? && self.ruby_class != RailsConnector::AbstractObj &&
37
+ self.ruby_class.ancestors.include?(RailsConnector::AbstractObj)
38
38
  end
39
39
 
40
40
  # Returns the custom attributes in the form of a Hash.
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
 
22
22
  s.add_development_dependency "rspec"
23
23
 
24
- s.add_runtime_dependency "activerecord", '>= 3.0.10', '<= 3.2.12'
25
- s.add_runtime_dependency "activesupport", '>= 3.0.10', '<= 3.2.12'
24
+ s.add_runtime_dependency "activerecord", '>= 3.0.10', '<= 3.3'
25
+ s.add_runtime_dependency "activesupport", '>= 3.0.10', '<= 3.3'
26
26
  s.add_runtime_dependency "infopark_rails_connector"
27
27
  end
data/lib/engine.rb ADDED
@@ -0,0 +1,4 @@
1
+ module RailsConnectorMeta
2
+ class Engine < Rails::Engine
3
+ end
4
+ end
@@ -0,0 +1,2 @@
1
+ require File.expand_path('../engine', __FILE__) if defined?(Rails)
2
+ require File.expand_path('../meta', __FILE__)
data/lib/meta.rb CHANGED
@@ -1,10 +1,144 @@
1
1
  # -*- encoding : utf-8 -*-
2
- require 'meta/eager_loader'
3
- require 'meta/base'
4
- require 'meta/obj_class'
5
- require 'meta/attribute'
6
- require 'meta/object_with_meta_data'
7
- require 'meta/content'
8
- require 'meta/version'
9
- require 'meta/blob_mapping'
10
- require 'meta/channel'
2
+ module RailsConnector
3
+
4
+ module Meta
5
+
6
+ # This method is an equivalent of Rails.logger.silence, which has been deprecated
7
+ def self.hello_im_rails_and_im_retarted_so_please_be_patient(&block)
8
+ begin
9
+ old_logger_level, Rails.logger.level = Rails.logger.level, Logger::ERROR
10
+ yield self
11
+ ensure
12
+ Rails.logger.level = old_logger_level
13
+ end
14
+ end
15
+
16
+ def self.included(base) #:nodoc:
17
+ # Class enhancements
18
+ base.extend(ClassMethods)
19
+ end
20
+
21
+ # The RailsConnector::ObjClass object for this file format.
22
+ # This will always return a proper object, even if no custom
23
+ # Ruby class exists.
24
+ def obj_class_definition
25
+ @obj_class_definition ||= RailsConnector::Meta::EagerLoader.instance.obj_class(self.obj_class)
26
+ end
27
+ alias_method :obj_class_def, :obj_class_definition
28
+
29
+ # Returns true, if there is a custom Ruby class defined for the object
30
+ # or false, if it is represented by RailsConnector::Obj
31
+ def has_custom_ruby_class?
32
+ self.class.is_custom_ruby_class?
33
+ end
34
+
35
+ # Returns the custom attributes in the form of a Hash.
36
+ def custom_attributes
37
+ self.obj_class_definition.custom_attributes
38
+ end
39
+
40
+ # Returns true, if the file format has an attribute of the given name.
41
+ def custom_attribute?(attr)
42
+ self.obj_class_definition.custom_attribute?(attr)
43
+ end
44
+
45
+ # Returns an Array of String of all mandatory attributes, no mather if it's
46
+ # custom or built-in. Built-in attributes are underscored (valid_from,
47
+ # not validFrom).
48
+ # Possible +options+ are:
49
+ # <tt>:only_custom_attributes</tt>:: Return only custom attributes, omit
50
+ # built-in attributes like content_type or valid_from.
51
+ def mandatory_attribute_names(options = {})
52
+ self.obj_class_definition.mandatory_attribute_names(options)
53
+ end
54
+
55
+ # Returns true, if the file format has an mandatory attribute of the given name.
56
+ def mandatory_attribute?(attr)
57
+ self.obj_class_definition.mandatory_attribute?(attr)
58
+ end
59
+
60
+ # Returns the version of this object. This number is increased every time
61
+ # this object is released.
62
+ def version
63
+ load_meta_details
64
+ @object_with_meta_data.version.presence.to_i || 0
65
+ end
66
+
67
+ # Returns the time of the reminder, if it is set.
68
+ def reminder_from
69
+ load_meta_details
70
+ @object_with_meta_data.reminder_from.presence &&
71
+ ::RailsConnector::DateAttribute.parse(@object_with_meta_data.reminder_from)
72
+ end
73
+
74
+ # Returns the reminder comment, if a reminder is set.
75
+ def reminder_comment
76
+ load_meta_details
77
+ @object_with_meta_data.reminder_comment
78
+ end
79
+
80
+ # Return the name of the workflow, that is assigned to this object.
81
+ def workflow_name
82
+ load_meta_details
83
+ @object_with_meta_data.workflow_name
84
+ end
85
+
86
+ # Return the current editor as a String. If there is no edited content,
87
+ # which is always the case in live mode, an empty String is returned.
88
+ # The 'contents' table is queried for this information.
89
+ def editor
90
+ return @editor if @editor
91
+
92
+ load_meta_details
93
+
94
+ content_id = if self.edited?
95
+ @object_with_meta_data.edited_content_id
96
+ else
97
+ @object_with_meta_data.released_cont_id
98
+ end
99
+
100
+ if content_id
101
+ content = RailsConnector::Content.find(content_id)
102
+ @editor = content.editor
103
+ else
104
+ @editor = ''
105
+ end
106
+ end
107
+
108
+ private
109
+
110
+ # Load the objects details from the `objects' tables.
111
+ def load_meta_details #:nodoc:
112
+ return if @object_with_meta_data
113
+
114
+ @object_with_meta_data = RailsConnector::ObjectWithMetaData.find(self.id)
115
+
116
+ # reset depending instance variables
117
+ @editor = nil
118
+ end
119
+
120
+
121
+ # the methods in this module will become class methods
122
+ module ClassMethods
123
+
124
+ # The RailsConnector::ObjClass object for this file format.
125
+ # This will only return a proper object if a custom Ruby class exists
126
+ # and will throw a RuntimeError otherwise.
127
+ def obj_class_definition
128
+ raise "Obtaining the obj_class_definition of an Obj without custom Ruby class " \
129
+ "is logically impossible." unless is_custom_ruby_class?
130
+ # @obj_class_definition ||= RailsConnector::ObjClass.find_by_name(self.name)
131
+ @obj_class_definition ||= RailsConnector::Meta::EagerLoader.instance.obj_class(self.name)
132
+ end
133
+ alias_method :obj_class_def, :obj_class_definition
134
+
135
+ # RailsConnector::AbstractObj returns false, everything else true.
136
+ def is_custom_ruby_class?
137
+ self != RailsConnector::AbstractObj
138
+ end
139
+
140
+ end
141
+
142
+ end
143
+
144
+ end
data/lib/meta/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module RailsConnector
3
3
  module Meta
4
- VERSION = "1.6.3"
4
+ VERSION = "1.7.0"
5
5
  end
6
6
  end
@@ -12,7 +12,7 @@ describe Obj do
12
12
  nil.should be_false # we're off a good start
13
13
 
14
14
  # everything should be false here
15
- obj = RailsConnector::Obj.where(:obj_class => 'ObjClassWithoutRubyClass').first
15
+ obj = RailsConnector::AbstractObj.where(:obj_class => 'ObjClassWithoutRubyClass').first
16
16
  obj.obj_class_def.has_custom_ruby_class?.should be_false
17
17
  obj.has_custom_ruby_class?.should be_false
18
18
  obj.class.is_custom_ruby_class?.should be_false
@@ -25,7 +25,7 @@ describe Obj do
25
25
  end
26
26
 
27
27
  it "should respond to obj_class_def/obj_class_definition correctly" do
28
- obj = RailsConnector::Obj.where(:obj_class => 'ObjClassWithoutRubyClass').first
28
+ obj = RailsConnector::AbstractObj.where(:obj_class => 'ObjClassWithoutRubyClass').first
29
29
  obj.obj_class_def.name.should == 'ObjClassWithoutRubyClass'
30
30
  obj.obj_class_definition.name.should == 'ObjClassWithoutRubyClass'
31
31
 
@@ -47,8 +47,7 @@ describe RailsConnector::ObjClass do
47
47
 
48
48
  it "should serve the proper Ruby class" do
49
49
  obj_class_def = RailsConnector::ObjClass.where(:obj_class_name => 'ObjClassWithoutRubyClass').first
50
- obj_class_def.ruby_class.should == RailsConnector::Obj
51
- obj_class_def.ruby_class.should == ::Obj
50
+ obj_class_def.ruby_class.should == RailsConnector::AbstractObj.obj_class_def.ruby_class.should == ::Obj
52
51
  obj_class_def.has_custom_ruby_class?.should be_false
53
52
 
54
53
  obj2_class_def = RailsConnector::ObjClass.where(:obj_class_name => 'StandardPage').first
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: infopark_rails_connector_meta
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 6
9
- - 3
10
- version: 1.6.3
8
+ - 7
9
+ - 0
10
+ version: 1.7.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tomasz Przedmojski
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2013-02-13 00:00:00 +01:00
18
+ date: 2013-02-21 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -48,12 +48,11 @@ dependencies:
48
48
  version: 3.0.10
49
49
  - - <=
50
50
  - !ruby/object:Gem::Version
51
- hash: 23
51
+ hash: 1
52
52
  segments:
53
53
  - 3
54
- - 2
55
- - 12
56
- version: 3.2.12
54
+ - 3
55
+ version: "3.3"
57
56
  type: :runtime
58
57
  version_requirements: *id002
59
58
  - !ruby/object:Gem::Dependency
@@ -72,12 +71,11 @@ dependencies:
72
71
  version: 3.0.10
73
72
  - - <=
74
73
  - !ruby/object:Gem::Version
75
- hash: 23
74
+ hash: 1
76
75
  segments:
77
76
  - 3
78
- - 2
79
- - 12
80
- version: 3.2.12
77
+ - 3
78
+ version: "3.3"
81
79
  type: :runtime
82
80
  version_requirements: *id003
83
81
  - !ruby/object:Gem::Dependency
@@ -108,16 +106,18 @@ files:
108
106
  - Gemfile
109
107
  - LICENSE
110
108
  - Rakefile
109
+ - app/models/rails_connector/abstract_obj.rb
110
+ - app/models/rails_connector/attribute.rb
111
+ - app/models/rails_connector/blob_mapping.rb
112
+ - app/models/rails_connector/channel.rb
113
+ - app/models/rails_connector/content.rb
114
+ - app/models/rails_connector/meta/eager_loader.rb
115
+ - app/models/rails_connector/obj_class.rb
116
+ - app/models/rails_connector/object_with_meta_data.rb
111
117
  - infopark_rails_connector_meta.gemspec
118
+ - lib/engine.rb
119
+ - lib/infopark_rails_connector_meta.rb
112
120
  - lib/meta.rb
113
- - lib/meta/attribute.rb
114
- - lib/meta/base.rb
115
- - lib/meta/blob_mapping.rb
116
- - lib/meta/channel.rb
117
- - lib/meta/content.rb
118
- - lib/meta/eager_loader.rb
119
- - lib/meta/obj_class.rb
120
- - lib/meta/object_with_meta_data.rb
121
121
  - lib/meta/version.rb
122
122
  - spec/infopark_rails_connector_meta_spec.rb
123
123
  - spec/spec_helper.rb
data/lib/meta/base.rb DELETED
@@ -1,146 +0,0 @@
1
- # -*- encoding : utf-8 -*-
2
- require 'meta/eager_loader'
3
-
4
- module RailsConnector
5
-
6
- module Meta
7
-
8
- # This method is an equivalent of Rails.logger.silence, which has been deprecated
9
- def self.hello_im_rails_and_im_retarted_so_please_be_patient(&block)
10
- begin
11
- old_logger_level, Rails.logger.level = Rails.logger.level, Logger::ERROR
12
- yield self
13
- ensure
14
- Rails.logger.level = old_logger_level
15
- end
16
- end
17
-
18
- def self.included(base) #:nodoc:
19
- # Class enhancements
20
- base.extend(ClassMethods)
21
- end
22
-
23
- # The RailsConnector::ObjClass object for this file format.
24
- # This will always return a proper object, even if no custom
25
- # Ruby class exists.
26
- def obj_class_definition
27
- @obj_class_definition ||= RailsConnector::Meta::EagerLoader.instance.obj_class(self.obj_class)
28
- end
29
- alias_method :obj_class_def, :obj_class_definition
30
-
31
- # Returns true, if there is a custom Ruby class defined for the object
32
- # or false, if it is represented by RailsConnector::Obj
33
- def has_custom_ruby_class?
34
- self.class.is_custom_ruby_class?
35
- end
36
-
37
- # Returns the custom attributes in the form of a Hash.
38
- def custom_attributes
39
- self.obj_class_definition.custom_attributes
40
- end
41
-
42
- # Returns true, if the file format has an attribute of the given name.
43
- def custom_attribute?(attr)
44
- self.obj_class_definition.custom_attribute?(attr)
45
- end
46
-
47
- # Returns an Array of String of all mandatory attributes, no mather if it's
48
- # custom or built-in. Built-in attributes are underscored (valid_from,
49
- # not validFrom).
50
- # Possible +options+ are:
51
- # <tt>:only_custom_attributes</tt>:: Return only custom attributes, omit
52
- # built-in attributes like content_type or valid_from.
53
- def mandatory_attribute_names(options = {})
54
- self.obj_class_definition.mandatory_attribute_names(options)
55
- end
56
-
57
- # Returns true, if the file format has an mandatory attribute of the given name.
58
- def mandatory_attribute?(attr)
59
- self.obj_class_definition.mandatory_attribute?(attr)
60
- end
61
-
62
- # Returns the version of this object. This number is increased every time
63
- # this object is released.
64
- def version
65
- load_meta_details
66
- @object_with_meta_data.version.presence.to_i || 0
67
- end
68
-
69
- # Returns the time of the reminder, if it is set.
70
- def reminder_from
71
- load_meta_details
72
- @object_with_meta_data.reminder_from.presence &&
73
- ::RailsConnector::DateAttribute.parse(@object_with_meta_data.reminder_from)
74
- end
75
-
76
- # Returns the reminder comment, if a reminder is set.
77
- def reminder_comment
78
- load_meta_details
79
- @object_with_meta_data.reminder_comment
80
- end
81
-
82
- # Return the name of the workflow, that is assigned to this object.
83
- def workflow_name
84
- load_meta_details
85
- @object_with_meta_data.workflow_name
86
- end
87
-
88
- # Return the current editor as a String. If there is no edited content,
89
- # which is always the case in live mode, an empty String is returned.
90
- # The 'contents' table is queried for this information.
91
- def editor
92
- return @editor if @editor
93
-
94
- load_meta_details
95
-
96
- content_id = if self.edited?
97
- @object_with_meta_data.edited_content_id
98
- else
99
- @object_with_meta_data.released_cont_id
100
- end
101
-
102
- if content_id
103
- content = RailsConnector::Content.find(content_id)
104
- @editor = content.editor
105
- else
106
- @editor = ''
107
- end
108
- end
109
-
110
- private
111
-
112
- # Load the objects details from the `objects' tables.
113
- def load_meta_details #:nodoc:
114
- return if @object_with_meta_data
115
-
116
- @object_with_meta_data = RailsConnector::ObjectWithMetaData.find(self.id)
117
-
118
- # reset depending instance variables
119
- @editor = nil
120
- end
121
-
122
-
123
- # the methods in this module will become class methods
124
- module ClassMethods
125
-
126
- # The RailsConnector::ObjClass object for this file format.
127
- # This will only return a proper object if a custom Ruby class exists
128
- # and will throw a RuntimeError otherwise.
129
- def obj_class_definition
130
- raise "Obtaining the obj_class_definition of an Obj without custom Ruby class " \
131
- "is logically impossible." unless is_custom_ruby_class?
132
- # @obj_class_definition ||= RailsConnector::ObjClass.find_by_name(self.name)
133
- @obj_class_definition ||= RailsConnector::Meta::EagerLoader.instance.obj_class(self.name)
134
- end
135
- alias_method :obj_class_def, :obj_class_definition
136
-
137
- # RailsConnector::Obj returns false, everything else true.
138
- def is_custom_ruby_class?
139
- self != RailsConnector::Obj
140
- end
141
-
142
- end
143
-
144
- end
145
-
146
- end