just_state_machine 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b23d8dd4eb56dd0a802be1918affefcff75fe565
4
- data.tar.gz: cb6974426a7e9eb2ea71f9f2c27d67c8409d956e
3
+ metadata.gz: bea90384d740dd075bfb0b5d400e41084f597f53
4
+ data.tar.gz: b52626d217f4edb98347a69347557e500726f448
5
5
  SHA512:
6
- metadata.gz: f9d72196d142f810af4e75ed3d43b968fc15b8f58f472b6634480de092e45cb07b5833e5743803b560d11e4849537bf315dfd08788ffa735492d082d14575d90
7
- data.tar.gz: 122b975bcb53527e924e2fcf94682b92847b7b6248b1d7b667186d0905e6dd78a8bbefcc9885c69fd935c3719313cdc5f0302df61fc02f0619554312163f959d
6
+ metadata.gz: d19600b177bffcd272896b885d3bf698200a8578dd888219974f589107ace8ef2b9a204f9644bde4aab9472f88ddbc8b0827acc220973a1e31c4bcd58b633fd6
7
+ data.tar.gz: 45c3bc2b561c31fe66dce779a088e73f977e3dba6dc586e70d6d95e58febb4bc0a68e3fd885d4ee21c62c128537c26145998ddadbcc5deb898fb83eed6ba9ee3
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ *.log
data/.travis.yml CHANGED
@@ -1,4 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.1.5
3
+ - 2.2.2
4
4
  before_install: gem install bundler -v 1.10.6
5
+ services:
6
+ - mongodb
data/Gemfile CHANGED
@@ -2,3 +2,6 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in jsm.gemspec
4
4
  gemspec
5
+ gem "mongoid"
6
+ gem "sqlite3"
7
+ gem "pry"
data/README.md CHANGED
@@ -346,12 +346,7 @@ class User < ActiveRecord::Base
346
346
  include Jsm::Client::ActiveRecord
347
347
  jsm_use UserStateMachine # your state machine class here
348
348
 
349
- attr_accessor :title # same with attribute_name in UserStateMachine
350
- attr_accessor :level
351
- def initialize
352
- @title = :beginner
353
- @level = 1
354
- end
349
+ # attributes -> title, level
355
350
  #your code here
356
351
  end
357
352
  ```
@@ -360,7 +355,20 @@ end
360
355
 
361
356
  ## Mongoid Integration
362
357
 
363
- Mongoid use ActiveModel for validation etc. so you can use JSM integration with ActiveModel part
358
+ Mongoid is same with active record. you just need to change the client from `Jsm::Client::ActiveRecord` to `Jsm::Client::Mongoid`
359
+ example:
360
+ ```ruby
361
+ class UserMongoid
362
+ include Mongoid::Document
363
+ include Jsm::Client
364
+ include Jsm::Client::Mongoid
365
+ jsm_use UserStateMachine # your state machine class here
366
+
367
+ field :title, type: String # same with attribute_name in UserStateMachine
368
+ field :level, type: String
369
+ #your code here
370
+ end
371
+ ```
364
372
 
365
373
  ## StateMachine Visualization
366
374
  When you want to visualize the state machine that has been defined. You can use the `Jsm::Drawer:Graphviz`. Basically it will generate an url for images of states diagram with theirs events. Basically the image is generated by `google chart`. They provide a really good API to generate state diagram.
data/jsm.gemspec CHANGED
@@ -23,9 +23,5 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "bundler", "~> 1.10"
24
24
  spec.add_development_dependency "rake", "~> 10.0"
25
25
  spec.add_development_dependency "rspec"
26
- spec.add_development_dependency "pry"
27
- spec.add_development_dependency "pry-doc"
28
- spec.add_development_dependency "looksee"
29
26
  spec.add_development_dependency "activerecord", ">= 4.0"
30
- spec.add_development_dependency "sqlite3"
31
27
  end
@@ -0,0 +1,13 @@
1
+ module Jsm::Client::Mongoid
2
+ def self.included(base)
3
+ base.extend ClassMethods
4
+ # Basically ActiveModel and ActiveRecord almost have the same behavior for its instance
5
+ base.send(:include, Jsm::Client::ActiveModel::InstanceMethods)
6
+ end
7
+
8
+ module ClassMethods
9
+ def jsm_event_executor
10
+ Jsm::EventExecutor::Mongoid
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,8 @@
1
+ class Jsm::EventExecutor::Mongoid < Jsm::EventExecutor::ActiveModel
2
+ def execute_action(event, obj)
3
+ return false unless can_be_executed?(event, obj)
4
+ # do transaction to prevent shit happen
5
+ event.execute(obj)
6
+ obj.save
7
+ end
8
+ end
data/lib/jsm/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Jsm
2
- VERSION = "0.4.2"
2
+ VERSION = "0.5.0"
3
3
  end
data/lib/jsm.rb CHANGED
@@ -7,6 +7,7 @@ module Jsm
7
7
  require "jsm/event_executor/base"
8
8
  require "jsm/event_executor/active_model"
9
9
  require "jsm/event_executor/active_record"
10
+ require "jsm/event_executor/mongoid"
10
11
  end
11
12
 
12
13
  require "jsm/callbacks"
@@ -19,6 +20,7 @@ module Jsm
19
20
  require "jsm/client"
20
21
  require "jsm/client/active_model"
21
22
  require "jsm/client/active_record"
23
+ require "jsm/client/mongoid"
22
24
  require "jsm/machines"
23
25
  require "jsm/client_extension"
24
26
  require "jsm/validator"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: just_state_machine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - wendy0402
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-01 00:00:00.000000000 Z
11
+ date: 2017-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,48 +52,6 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: pry
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: pry-doc
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: looksee
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
55
  - !ruby/object:Gem::Dependency
98
56
  name: activerecord
99
57
  requirement: !ruby/object:Gem::Requirement
@@ -108,20 +66,6 @@ dependencies:
108
66
  - - ">="
109
67
  - !ruby/object:Gem::Version
110
68
  version: '4.0'
111
- - !ruby/object:Gem::Dependency
112
- name: sqlite3
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
69
  description: Just StateMachine
126
70
  email:
127
71
  - wendykurniawan92@gmail.com
@@ -151,6 +95,7 @@ files:
151
95
  - lib/jsm/client.rb
152
96
  - lib/jsm/client/active_model.rb
153
97
  - lib/jsm/client/active_record.rb
98
+ - lib/jsm/client/mongoid.rb
154
99
  - lib/jsm/client_extension.rb
155
100
  - lib/jsm/drawer/digraph.rb
156
101
  - lib/jsm/drawer/graphviz.rb
@@ -159,6 +104,7 @@ files:
159
104
  - lib/jsm/event_executor/active_model.rb
160
105
  - lib/jsm/event_executor/active_record.rb
161
106
  - lib/jsm/event_executor/base.rb
107
+ - lib/jsm/event_executor/mongoid.rb
162
108
  - lib/jsm/exceptions.rb
163
109
  - lib/jsm/machines.rb
164
110
  - lib/jsm/states.rb
@@ -186,10 +132,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
132
  version: '0'
187
133
  requirements: []
188
134
  rubyforge_project:
189
- rubygems_version: 2.4.8
135
+ rubygems_version: 2.6.8
190
136
  signing_key:
191
137
  specification_version: 4
192
138
  summary: Just State Machine, State Machine That support custom validations, it also
193
139
  known with Jsm
194
140
  test_files: []
195
- has_rdoc: