in_place_relation 0.1.1 → 0.2.0

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