metabolical 0.0.4 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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