metabolical 0.0.4 → 1.1.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,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 2e3e3ea61aa1050f31eb0a4daf6e00d403b10d0d448500fed099f0ac8ac02fb0
4
+ data.tar.gz: 0f2a20a3ff7e23530fbd803dffbaa2f3383d2b19c299b13920a6307038c83d8b
5
+ SHA512:
6
+ metadata.gz: eda7728a0f4dacedac25e3384c70823e4b95ac4a1332c5d090cf2184c64efd5649788ee3111e2650adabe5ea2c2c7e76b33f70efaab60f767175bc91fd6fec54
7
+ data.tar.gz: 4eb85eed61028050cbacf5db16f74d83216b4a8b18721f2823398babc91a9096169d2ad7537e653fc2738bde1535fab5946c768cfec94c14ae8916e06cb846f7
@@ -8,7 +8,12 @@ module Metabolical
8
8
 
9
9
  module ClassMethods
10
10
  def metabolize!
11
- include Metabolical::Scopes
11
+ if self.respond_to?(:named_scope)
12
+ include Metabolical::AR3Scopes
13
+ else
14
+ include Metabolical::AR4Scopes
15
+ end
16
+
12
17
  class_eval do
13
18
  has_many :metas, :as => :metabolized, :class_name => 'Metabolical::MetaDatum' do
14
19
  def [](key)
@@ -1,29 +1,29 @@
1
1
  module Metabolical
2
- module Scopes
2
+ module AR4Scopes
3
3
  def self.included(klass)
4
- method = klass.respond_to?(:named_scope) ? :named_scope : :scope
5
- klass.send method, :with_meta, lambda{|k| {:joins => [:metas], :conditions => {"meta_data.key" => k}}}
6
- klass.send method, :with_metas, :include => [:metas]
7
- klass.send method, :with_meta_data, lambda{|k, v| {:joins => [:metas], :conditions => {"meta_data.key" => k, "meta_data.data" => v.to_yaml}}}
8
- klass.send method, :without_meta, lambda{|k|
9
- {:joins => "left join meta_data md on md.metabolized_id = #{klass.table_name}.#{klass.primary_key} and md.metabolized_type = '#{klass.to_s}' and md.key = '#{k}'", :conditions => "md.metabolized_id is null"}
10
- }
4
+ class_eval do
5
+ klass.send :scope, :with_meta, lambda {|k| joins(:metas).where("meta_data.key" => k) }
6
+ klass.send :scope, :with_metas, lambda { include(:metas) }
7
+ klass.send :scope, :with_meta_data, lambda{|k, v| where({"meta_data.key" => k, "meta_data.data" => v.to_yaml}).joins(:metas) }
8
+ klass.send :scope, :without_meta, lambda{|k|
9
+ joins("left join meta_data md on md.metabolized_id = #{klass.table_name}.#{klass.primary_key} and md.metabolized_type = '#{klass.to_s}' and md.key = '#{k}'").where("md.metabolized_id is null")
10
+ }
11
+ end
11
12
  end
12
-
13
- module AR3Scopes
14
- def self.included(klass)
15
- class_eval do
16
- scope :with_meta, lambda{|k| joins([:meta]).where({"meta_data.key" => k}) }
17
- scope :with_metas, includes(:meta)
18
- scope :with_meta_data, lambda{|k, v| joins(:meta).where("meta_data.key" => k, "meta_data.data" => v.to_yaml)}
19
- # TODO: find a better way to define this
20
- # Arel provides a way to specify left joins by using
21
- # join(left).on(... syntax
22
- scope :without_meta, lambda{|k| {:joins => "left join meta_data md on md.metabolized_id = #{klass.table_name}.#{klass.primary_key} and md.metabolized_type = '#{klass.to_s}' and md.key = '#{k}'", :conditions => "md.metabolized_id is null"}
23
- }
24
- end
13
+ end
14
+
15
+ module AR3Scopes
16
+ def self.included(klass)
17
+ class_eval do
18
+ klass.send :named_scope, :with_meta, lambda{|k| joins([:meta]).where({"meta_data.key" => k}) }
19
+ klass.send :named_scope, :with_metas, includes(:meta)
20
+ klass.send :named_scope, :with_meta_data, lambda{|k, v| joins(:meta).where("meta_data.key" => k, "meta_data.data" => v.to_yaml)}
21
+ # TODO: find a better way to define this
22
+ # Arel provides a way to specify left joins by using
23
+ # join(left).on(... syntax
24
+ klass.send :named_scope, :without_meta, lambda{|k| {:joins => "left join meta_data md on md.metabolized_id = #{klass.table_name}.#{klass.primary_key} and md.metabolized_type = '#{klass.to_s}' and md.key = '#{k}'", :conditions => "md.metabolized_id is null"}
25
+ }
25
26
  end
26
27
  end
27
-
28
28
  end
29
29
  end
@@ -1,3 +1,3 @@
1
1
  module Metabolical
2
- VERSION = "0.0.4"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.version = Metabolical::VERSION
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.authors = ["Diego Scataglini"]
10
- s.email = ["diego@junivi.com"]
10
+ s.email = ["dwebsubmit@gmail.com"]
11
11
  s.homepage = ""
12
12
  s.summary = %q{This is an ActiveRecord Model & mixin to add meta data to any AR object}
13
13
  s.description = %q{This is an ActiveRecord Model & mixin to add meta data to any AR object}
@@ -21,6 +21,6 @@ Gem::Specification.new do |s|
21
21
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
22
22
  s.require_paths = ["lib"]
23
23
 
24
- s.add_dependency('activerecord', '>= 2.1.2')
24
+ s.add_dependency('activerecord', '>= 4.2.0')
25
25
 
26
26
  end
@@ -1,10 +1,9 @@
1
1
  require 'rubygems'
2
2
  require 'sqlite3'
3
3
  require 'active_record'
4
- require 'test/unit'
5
- require 'shoulda'
4
+ require 'minitest/autorun'
6
5
 
7
- TEST_ROOT = File.expand_path(File.dirname(__FILE__))
6
+ TEST_ROOT = File.expand_path(File.dirname(__FILE__) )
8
7
  MODELS_ROOT = TEST_ROOT + "/models"
9
8
  FIXTURES_ROOT = TEST_ROOT + "/fixtures"
10
9
  MIGRATIONS_ROOT = TEST_ROOT + "/migrations"
@@ -1,52 +1,52 @@
1
1
  require 'helper'
2
2
  require 'models/user'
3
3
 
4
- class MetabolicalTest < Test::Unit::TestCase
5
- context "an ActiveRecord Object" do
4
+ describe Metabolical do
5
+ describe "an ActiveRecord Object" do
6
6
 
7
- context "new record" do
8
- setup do
7
+ describe "new record" do
8
+ before do
9
9
  @user = User.new
10
10
  end
11
11
 
12
- teardown do
12
+ after do
13
13
  @user.destroy
14
14
  end
15
15
 
16
- should "be able to assign a single meta before saving and retrieving it after save" do
16
+ it "should be able to assign a single meta before saving and retrieving it after save" do
17
17
  @user.metas['foo'] = 'bar'
18
18
  @user.save
19
19
  assert_equal 'bar', @user.metas['foo'].data
20
20
  end
21
21
 
22
- should "be able to assign a single meta before saving and retrieving it before save" do
22
+ it "should be able to assign a single meta before saving and retrieving it before save" do
23
23
  @user.metas['foo'] = 'bar'
24
24
  assert_equal 'bar', @user.metas['foo'].data
25
25
  end
26
26
  end
27
27
 
28
- context "saved record" do
29
- setup do
28
+ describe "saved record" do
29
+ before do
30
30
  @user = User.new
31
31
  @user.save
32
32
  end
33
33
 
34
- teardown do
34
+ after do
35
35
  @user.destroy
36
36
  end
37
37
 
38
- should "be able to assign a single meta before re saving and retrieving it after save" do
38
+ it "should be able to assign a single meta before re saving and retrieving it after save" do
39
39
  @user.metas['foo'] = 'bar'
40
40
  @user.save
41
41
  assert_equal 'bar', @user.metas['foo'].data
42
42
  end
43
43
 
44
- should "be able to assign a single meta before re saving and retrieving it before save" do
44
+ it "should be able to assign a single meta before re saving and retrieving it before save" do
45
45
  @user.metas['foo'] = 'baz'
46
46
  assert_equal 'baz', @user.metas['foo'].data
47
47
  end
48
48
 
49
- should "be able to retrieve after saving" do
49
+ it "should be able to retrieve after saving" do
50
50
  @user.metas['foo'] = 'faz'
51
51
  @user.save
52
52
  user = User.find @user.id
@@ -55,8 +55,8 @@ class MetabolicalTest < Test::Unit::TestCase
55
55
 
56
56
  end
57
57
 
58
- context "named scopes" do
59
- setup do
58
+ describe "named scopes" do
59
+ before do
60
60
  @foo_user = User.create(:name => 'foo_user', :metas => [Metabolical::MetaDatum.new(:key => "foo", :data => "bar")])
61
61
  @bar_user = User.create(:name => 'bar_user',
62
62
  :metas => [Metabolical::MetaDatum.new(:key => "bar", :data => "baz"),
@@ -64,26 +64,26 @@ class MetabolicalTest < Test::Unit::TestCase
64
64
  @true_user = User.create(:name => 'true_user', :metas => [Metabolical::MetaDatum.new(:key => "bar", :data => true)])
65
65
  end
66
66
 
67
- teardown do
67
+ after do
68
68
  User.delete_all
69
69
  end
70
70
 
71
- should "have with_meta scopes" do
71
+ it "should have with_meta scopes" do
72
72
  assert_equal [@foo_user], User.with_meta("foo")
73
73
  assert_equal [@bar_user, @true_user], User.with_meta("bar")
74
74
  end
75
75
 
76
- should "have with_meta scopes that check for data" do
76
+ it "should have with_meta scopes that check for data" do
77
77
  assert_equal [], User.with_meta_data("foo", "foo")
78
78
  assert_equal [@foo_user], User.with_meta_data("foo", "bar"), "Should have brought back foo user"
79
79
  assert_equal [@true_user], User.with_meta_data("bar", true), "Should have brought back true user"
80
80
  end
81
81
 
82
- should "have with_metas scope that includes all metas" do
82
+ it "should have with_metas scope that includes all metas" do
83
83
  assert User.respond_to?(:with_metas)
84
84
  end
85
85
 
86
- should "bring back objects without a certain meta" do
86
+ it "should bring back objects without a certain meta" do
87
87
  assert_equal [@foo_user], User.without_meta("bar")
88
88
  end
89
89
 
metadata CHANGED
@@ -1,50 +1,38 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: metabolical
3
- version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 4
10
- version: 0.0.4
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Diego Scataglini
14
- autorequire:
8
+ autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2012-05-30 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
11
+ date: 2020-10-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 4.2.0
21
20
  type: :runtime
22
21
  prerelease: false
23
- version_requirements: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
26
24
  - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 15
29
- segments:
30
- - 2
31
- - 1
32
- - 2
33
- version: 2.1.2
34
- requirement: *id001
35
- name: activerecord
25
+ - !ruby/object:Gem::Version
26
+ version: 4.2.0
36
27
  description: This is an ActiveRecord Model & mixin to add meta data to any AR object
37
- email:
38
- - diego@junivi.com
28
+ email:
29
+ - dwebsubmit@gmail.com
39
30
  executables: []
40
-
41
31
  extensions: []
42
-
43
32
  extra_rdoc_files: []
44
-
45
- files:
46
- - .gitignore
47
- - .rvmrc
33
+ files:
34
+ - ".gitignore"
35
+ - ".rvmrc"
48
36
  - Gemfile
49
37
  - README.rdoc
50
38
  - Rakefile
@@ -57,42 +45,29 @@ files:
57
45
  - test/metabolical_test.rb
58
46
  - test/models/user.rb
59
47
  - test/schema/schema.rb
60
- homepage: ""
48
+ homepage: ''
61
49
  licenses: []
62
-
63
- post_install_message:
50
+ metadata: {}
51
+ post_install_message:
64
52
  rdoc_options: []
65
-
66
- require_paths:
53
+ require_paths:
67
54
  - lib
68
- required_ruby_version: !ruby/object:Gem::Requirement
69
- none: false
70
- requirements:
55
+ required_ruby_version: !ruby/object:Gem::Requirement
56
+ requirements:
71
57
  - - ">="
72
- - !ruby/object:Gem::Version
73
- hash: 57
74
- segments:
75
- - 1
76
- - 8
77
- - 7
58
+ - !ruby/object:Gem::Version
78
59
  version: 1.8.7
79
- required_rubygems_version: !ruby/object:Gem::Requirement
80
- none: false
81
- requirements:
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
+ requirements:
82
62
  - - ">="
83
- - !ruby/object:Gem::Version
84
- hash: 3
85
- segments:
86
- - 0
87
- version: "0"
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
88
65
  requirements: []
89
-
90
- rubyforge_project: metabolical
91
- rubygems_version: 1.8.15
92
- signing_key:
93
- specification_version: 3
66
+ rubygems_version: 3.0.8
67
+ signing_key:
68
+ specification_version: 4
94
69
  summary: This is an ActiveRecord Model & mixin to add meta data to any AR object
95
- test_files:
70
+ test_files:
96
71
  - test/helper.rb
97
72
  - test/metabolical_test.rb
98
73
  - test/models/user.rb