transitions 0.1.3 → 0.1.4
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/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# 1.0.4
|
2
|
+
|
3
|
+
(troessner)
|
4
|
+
|
5
|
+
* Raise exception if we try to overwrite existing instance methods when defining state predicate methods
|
6
|
+
* Improve exception message if we try to overwrite existing class methods when ActiveRecord scopes
|
7
|
+
|
1
8
|
# 1.0.3
|
2
9
|
|
3
10
|
(troessner) Make sure `empty?` works on symbols.
|
data/lib/transitions/machine.rb
CHANGED
@@ -99,7 +99,9 @@ module Transitions
|
|
99
99
|
def include_scopes
|
100
100
|
@states.each do |state|
|
101
101
|
state_name = state.name.to_s
|
102
|
-
|
102
|
+
if @klass.respond_to?(state_name)
|
103
|
+
raise InvalidMethodOverride, "Transitions: Can not define scope `#{state_name}` because there is already an equally named method defined - either rename the existing method or the state."
|
104
|
+
end
|
103
105
|
@klass.scope state_name, @klass.where(:state => state_name)
|
104
106
|
end
|
105
107
|
end
|
data/lib/transitions/state.rb
CHANGED
@@ -67,6 +67,9 @@ module Transitions
|
|
67
67
|
private
|
68
68
|
def define_state_query_method(machine)
|
69
69
|
method_name, state_name = "#{@name}?", @name # Instance vars are out of scope when calling define_method below, so we use local variables.
|
70
|
+
if machine.klass.instance_methods.include?(method_name.to_sym)
|
71
|
+
raise InvalidMethodOverride, "Transitions: Can not define method `#{method_name}` because it is already defined - either rename the existing method or the state."
|
72
|
+
end
|
70
73
|
machine.klass.send :define_method, method_name do
|
71
74
|
current_state.to_s == state_name.to_s
|
72
75
|
end
|
data/lib/transitions/version.rb
CHANGED
@@ -61,14 +61,14 @@ class TestScopes < Test::Unit::TestCase
|
|
61
61
|
end
|
62
62
|
|
63
63
|
test 'scope generation raises an exception if we try to overwrite an existing method' do
|
64
|
-
assert_raise(Transitions::InvalidMethodOverride)
|
65
|
-
|
64
|
+
assert_raise(Transitions::InvalidMethodOverride) do
|
65
|
+
Class.new(ActiveRecord::Base) do
|
66
66
|
include ActiveModel::Transitions
|
67
67
|
|
68
68
|
state_machine :auto_scopes => true do
|
69
69
|
state :new
|
70
70
|
end
|
71
71
|
end
|
72
|
-
|
72
|
+
end
|
73
73
|
end
|
74
74
|
end
|
@@ -17,4 +17,16 @@ class TestStatePredicateMethod < Test::Unit::TestCase
|
|
17
17
|
assert_true @bus.respond_to?(:parking?)
|
18
18
|
assert_true @bus.send(:parking?)
|
19
19
|
end
|
20
|
+
|
21
|
+
test 'should raise `InvalidMethodOverride` if we try to overwrite existing methods' do
|
22
|
+
assert_raise(Transitions::InvalidMethodOverride) do
|
23
|
+
Class.new do
|
24
|
+
include Transitions
|
25
|
+
|
26
|
+
state_machine do
|
27
|
+
state :frozen
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
20
32
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: transitions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-11-21 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -179,7 +179,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
179
179
|
version: '0'
|
180
180
|
segments:
|
181
181
|
- 0
|
182
|
-
hash: -
|
182
|
+
hash: -392757581
|
183
183
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
184
184
|
none: false
|
185
185
|
requirements:
|