infopark_rails_connector_meta 1.6.3 → 1.7.0

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.
@@ -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