in_place_relation 0.1.1 → 0.2.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.
data/README CHANGED
@@ -4,6 +4,7 @@
4
4
  # rel = SomeModel.where( ... )
5
5
  # rel = rel.joins(...).where(...) if x
6
6
  # rel = rel.select(...) unless y
7
+ # rel = rel.some_scope( params )
7
8
  # rel = rel.merge( another_rel )
8
9
  # rel.all
9
10
  #
@@ -11,6 +12,7 @@
11
12
  # rel = SomeModel.where( ... ).in_place
12
13
  # rel.joins(...).where(...) if x
13
14
  # rel.select(...) unless y
15
+ # rel.some_scope( params )
14
16
  # rel.merge( another_rel )
15
17
  # rel.all
16
18
  #
@@ -1,3 +1,3 @@
1
1
  module InPlaceRelation
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -1,6 +1,5 @@
1
1
  require "in_place_relation/version"
2
2
 
3
- #
4
3
  # and get original relation with:
5
4
  # rel.relation # ActiveRecord::Relation
6
5
  module InPlaceRelation
@@ -37,8 +36,22 @@ module InPlaceRelation
37
36
  return "#{self.class}:#{object_id}"
38
37
  end
39
38
 
40
- def method_missing( name, *args, &block )
41
- @relation.send( name, *args, &block )
39
+ def method_missing( meth, *args, &block )
40
+ result = @relation.send( meth, *args, &block )
41
+ # Wrap dynamically into a method if the result is a Relation - this makes
42
+ # it work with scopes
43
+ if result.is_a?( ActiveRecord::Relation )
44
+ singleton_class.class_eval do
45
+ define_method( meth ) do |*args, &block|
46
+ @relation = @relation.send( meth, *args )
47
+ return self
48
+ end
49
+ end
50
+ @relation = result
51
+ return self
52
+ else
53
+ return result
54
+ end
42
55
  end
43
56
 
44
57
  def in_place
metadata CHANGED
@@ -1,61 +1,45 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: in_place_relation
3
- version: !ruby/object:Gem::Version
4
- hash: 25
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Marek Janukowicz/Starware
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-01-03 00:00:00 +01:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-05-10 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: activerecord-nulldb-adapter
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &4451060 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
33
22
  type: :development
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: activerecord
37
23
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *4451060
25
+ - !ruby/object:Gem::Dependency
26
+ name: activerecord
27
+ requirement: &4387000 !ruby/object:Gem::Requirement
39
28
  none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 5
44
- segments:
45
- - 3
46
- version: "3"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '3'
47
33
  type: :runtime
48
- version_requirements: *id002
34
+ prerelease: false
35
+ version_requirements: *4387000
49
36
  description: ActiveRecord::Relation wrapper that can be modified/combined in place
50
- email:
37
+ email:
51
38
  - marek@janukowicz.net
52
39
  executables: []
53
-
54
40
  extensions: []
55
-
56
41
  extra_rdoc_files: []
57
-
58
- files:
42
+ files:
59
43
  - .hgignore
60
44
  - Gemfile
61
45
  - README
@@ -64,39 +48,29 @@ files:
64
48
  - lib/in_place_relation.rb
65
49
  - lib/in_place_relation/version.rb
66
50
  - test/in_place_relation_test.rb
67
- has_rdoc: true
68
- homepage: ""
51
+ homepage: ''
69
52
  licenses: []
70
-
71
53
  post_install_message:
72
54
  rdoc_options: []
73
-
74
- require_paths:
55
+ require_paths:
75
56
  - lib
76
- required_ruby_version: !ruby/object:Gem::Requirement
57
+ required_ruby_version: !ruby/object:Gem::Requirement
77
58
  none: false
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- hash: 3
82
- segments:
83
- - 0
84
- version: "0"
85
- required_rubygems_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
64
  none: false
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- hash: 3
91
- segments:
92
- - 0
93
- version: "0"
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
94
69
  requirements: []
95
-
96
70
  rubyforge_project:
97
- rubygems_version: 1.6.2
71
+ rubygems_version: 1.8.17
98
72
  signing_key:
99
73
  specification_version: 3
100
74
  summary: A relation that can be changed in place
101
- test_files:
75
+ test_files:
102
76
  - test/in_place_relation_test.rb