mushin 0.0.0.pre94 → 0.1.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.
- checksums.yaml +4 -4
- data/CODE_OF_CONDUCT.md +49 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +28 -0
- data/LICENSE.txt +21 -0
- data/README.md +96 -0
- data/Rakefile +79 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/internals/book.rb +47 -0
- data/lib/internals/ds/ds.rb +31 -0
- data/lib/internals/ds/redis.rb +31 -0
- data/lib/internals/ds/secure_ds.rb +101 -0
- data/lib/internals/engine.rb +44 -0
- data/lib/internals/env.rb +98 -0
- data/lib/internals/wongi.rb +38 -0
- data/lib/mushin.rb +20 -1
- data/mushin.gemspec +40 -0
- metadata +100 -20
- data/bin/mushin +0 -375
- data/lib/mushin/base.rb +0 -107
- data/lib/mushin/middleware/builder.rb +0 -139
- data/lib/mushin/middleware/runner.rb +0 -71
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'wongi-engine'
|
2
|
+
|
3
|
+
include Wongi::Engine
|
4
|
+
|
5
|
+
@ds = Network.new
|
6
|
+
|
7
|
+
person = Hash.new
|
8
|
+
person[:name] = "mohamed"
|
9
|
+
person[:age] = "31"
|
10
|
+
|
11
|
+
|
12
|
+
def all
|
13
|
+
# puts "Enumerate all:"
|
14
|
+
#@ds.each do |wme|
|
15
|
+
# puts wme
|
16
|
+
#end
|
17
|
+
end
|
18
|
+
|
19
|
+
#puts "Mismatching pattern:"
|
20
|
+
#@ds.each :_, "foe", :_ do |wme|
|
21
|
+
# puts wme
|
22
|
+
#ekd
|
23
|
+
|
24
|
+
#{:subject=>{:name=>"mohamed", :age=>"31"}, :predicate=>"friend", :object=>"Bob"}
|
25
|
+
def run subject, predicate, object
|
26
|
+
@ds << WME.new( subject, predicate, object)
|
27
|
+
|
28
|
+
#puts "Enumerate by pattern:"
|
29
|
+
@ds.each do |wme|
|
30
|
+
#ds.each :_, "friend", :_ do |wme|
|
31
|
+
puts wme
|
32
|
+
puts wme.to_h #methods
|
33
|
+
puts "use MushinFrameworkName::MiddlewareName, opts, params #{wme.to_h[:subject]}"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
run person, "mypredicate", Random.new_seed
|
38
|
+
run person, "mypredicate", Random.new_seed
|
data/lib/mushin.rb
CHANGED
@@ -1 +1,20 @@
|
|
1
|
-
|
1
|
+
#require_relative './internals/env'
|
2
|
+
#require_relative './internals/engine'
|
3
|
+
#require_relative './internals/book'
|
4
|
+
|
5
|
+
require 'middleware'
|
6
|
+
require 'logger'
|
7
|
+
$logger = Logger.new(STDOUT)
|
8
|
+
|
9
|
+
|
10
|
+
module Mushin
|
11
|
+
VERSION = "0.1.0"
|
12
|
+
class Stack < Middleware::Builder
|
13
|
+
def initialize &block
|
14
|
+
# let's use `super` to instance_eval inside Middleware::Builder scope
|
15
|
+
super
|
16
|
+
# Run it!
|
17
|
+
call
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/mushin.gemspec
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
p lib
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
|
6
|
+
require_relative "lib/mushin"
|
7
|
+
|
8
|
+
Gem::Specification.new do |spec|
|
9
|
+
spec.name = "mushin"
|
10
|
+
spec.version = Mushin::VERSION
|
11
|
+
spec.authors = ["zotherstupidguy"]
|
12
|
+
spec.email = ["zotherstupidguy@gmail.com"]
|
13
|
+
|
14
|
+
spec.summary = %q{Mushin is a Domain-specific Frameworks Generator.}
|
15
|
+
spec.description = %q{Mushin is a Domain-specific Frameworks Generator}
|
16
|
+
spec.homepage = "http://mushin-rb.github.io/"
|
17
|
+
spec.license = "MIT"
|
18
|
+
|
19
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
20
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
21
|
+
#if spec.respond_to?(:metadata)
|
22
|
+
# spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
|
23
|
+
#else
|
24
|
+
# raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
25
|
+
#end
|
26
|
+
|
27
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
28
|
+
spec.bindir = "exe"
|
29
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
30
|
+
spec.require_paths = ["lib"]
|
31
|
+
|
32
|
+
spec.add_development_dependency "bundler", "~> 1.12"
|
33
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
34
|
+
spec.add_development_dependency "minitest", "~> 5.0"
|
35
|
+
|
36
|
+
spec.add_development_dependency "ibsciss-middleware", "~> 0.3"
|
37
|
+
spec.add_runtime_dependency "ibsciss-middleware", "~> 0.3"
|
38
|
+
|
39
|
+
#TODO http://guides.rubygems.org/security/
|
40
|
+
end
|
metadata
CHANGED
@@ -1,34 +1,114 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mushin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- zotherstupidguy
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
-
|
11
|
+
date: 2016-10-02 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.12'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.12'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '5.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: ibsciss-middleware
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.3'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.3'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: ibsciss-middleware
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.3'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.3'
|
83
|
+
description: Mushin is a Domain-specific Frameworks Generator
|
84
|
+
email:
|
85
|
+
- zotherstupidguy@gmail.com
|
86
|
+
executables: []
|
18
87
|
extensions: []
|
19
88
|
extra_rdoc_files: []
|
20
89
|
files:
|
21
|
-
-
|
90
|
+
- CODE_OF_CONDUCT.md
|
91
|
+
- Gemfile
|
92
|
+
- Gemfile.lock
|
93
|
+
- LICENSE.txt
|
94
|
+
- README.md
|
95
|
+
- Rakefile
|
96
|
+
- bin/console
|
97
|
+
- bin/setup
|
98
|
+
- lib/internals/book.rb
|
99
|
+
- lib/internals/ds/ds.rb
|
100
|
+
- lib/internals/ds/redis.rb
|
101
|
+
- lib/internals/ds/secure_ds.rb
|
102
|
+
- lib/internals/engine.rb
|
103
|
+
- lib/internals/env.rb
|
104
|
+
- lib/internals/wongi.rb
|
22
105
|
- lib/mushin.rb
|
23
|
-
-
|
24
|
-
- lib/mushin/middleware/builder.rb
|
25
|
-
- lib/mushin/middleware/runner.rb
|
106
|
+
- mushin.gemspec
|
26
107
|
homepage: http://mushin-rb.github.io/
|
27
108
|
licenses:
|
28
109
|
- MIT
|
29
110
|
metadata: {}
|
30
|
-
post_install_message:
|
31
|
-
theotherstupidguy :)\n\n"
|
111
|
+
post_install_message:
|
32
112
|
rdoc_options: []
|
33
113
|
require_paths:
|
34
114
|
- lib
|
@@ -39,13 +119,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
39
119
|
version: '0'
|
40
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
41
121
|
requirements:
|
42
|
-
- - "
|
122
|
+
- - ">="
|
43
123
|
- !ruby/object:Gem::Version
|
44
|
-
version:
|
124
|
+
version: '0'
|
45
125
|
requirements: []
|
46
126
|
rubyforge_project:
|
47
|
-
rubygems_version: 2.
|
127
|
+
rubygems_version: 2.6.7
|
48
128
|
signing_key:
|
49
129
|
specification_version: 4
|
50
|
-
summary: a
|
130
|
+
summary: Mushin is a Domain-specific Frameworks Generator.
|
51
131
|
test_files: []
|
data/bin/mushin
DELETED
@@ -1,375 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require 'find'
|
3
|
-
require 'fileutils'
|
4
|
-
require 'optparse'
|
5
|
-
|
6
|
-
subtext = <<HELP
|
7
|
-
_ _
|
8
|
-
_ __ ___ _ _ ___| |__ (_)_ __
|
9
|
-
| '_ ` _ \\| | | / __| '_ \\| | '_ \\
|
10
|
-
| | | | | | |_| \\__ \\ | | | | | | |
|
11
|
-
|_| |_| |_|\\__,_|___/_| |_|_|_| |_|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
Usage: mushin [command] [options]
|
16
|
-
|
17
|
-
Commonly used command are:
|
18
|
-
setup : generats mushin setup.rb i.e. rubygems & github authentications
|
19
|
-
roll : roll your own framework
|
20
|
-
share : share your framework on rubygems.org
|
21
|
-
clean : clean out generated 0.0.0.pre1 gems
|
22
|
-
|
23
|
-
HELP
|
24
|
-
|
25
|
-
global = OptionParser.new do |opts|
|
26
|
-
opts.banner = " 'In the beginner's mind there are many possibilities, in the expert's mind there are few!' "
|
27
|
-
opts.separator ""
|
28
|
-
opts.separator subtext
|
29
|
-
end
|
30
|
-
global.order!
|
31
|
-
command = ARGV.shift
|
32
|
-
|
33
|
-
case command
|
34
|
-
|
35
|
-
when "setup"
|
36
|
-
p "generating mushin's setup.rb "
|
37
|
-
@framework = ARGV[0]
|
38
|
-
df = File.new("setup.rb", "w")
|
39
|
-
df.puts("Mushin[:framework] = '#{@framework.capitalize}'")
|
40
|
-
df.puts("Mushin[:author] = ''")
|
41
|
-
df.puts("Mushin[:email] = ''")
|
42
|
-
df.puts("Mushin[:license] = ''")
|
43
|
-
df.puts("Mushin[:desc] = ''")
|
44
|
-
df.puts("Mushin[:website] = ''")
|
45
|
-
|
46
|
-
df.puts("Mushin[:ds_summary] = ''")
|
47
|
-
df.puts("Mushin[:ds_desc] = ''")
|
48
|
-
|
49
|
-
df.close
|
50
|
-
|
51
|
-
when "roll"
|
52
|
-
module Mushin
|
53
|
-
class << self
|
54
|
-
@@configs = {}
|
55
|
-
def []= key, value
|
56
|
-
@@configs[key.to_sym] = value
|
57
|
-
end
|
58
|
-
|
59
|
-
def [] key
|
60
|
-
@@configs[key.to_sym]
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
require "#{Dir.pwd}/setup"
|
65
|
-
|
66
|
-
@framework = Mushin[:framework]
|
67
|
-
p "Framework: #{@framework}"
|
68
|
-
@author = Mushin[:author]
|
69
|
-
|
70
|
-
# Framework Gem
|
71
|
-
if File.directory?("#{@framework.downcase}")
|
72
|
-
FileUtils.remove_dir (Dir::pwd + "/#{@framework.downcase}")
|
73
|
-
end
|
74
|
-
|
75
|
-
Dir.mkdir(Dir::pwd + "/#{@framework.downcase}")
|
76
|
-
Dir.mkdir(Dir::pwd + "/#{@framework.downcase}/bin")
|
77
|
-
Dir.mkdir(Dir::pwd + "/#{@framework.downcase}/lib")
|
78
|
-
Dir.mkdir(Dir::pwd + "/#{@framework.downcase}/lib/#{@framework.downcase}")
|
79
|
-
Dir.mkdir(Dir::pwd + "/#{@framework.downcase}/spec")
|
80
|
-
|
81
|
-
|
82
|
-
df = File.new("#{@framework.downcase}/bin/#{@framework.downcase}", "w")
|
83
|
-
df.puts <<-eos
|
84
|
-
#!/usr/bin/env ruby
|
85
|
-
|
86
|
-
require 'fileutils'
|
87
|
-
#TODO some input using STDIN.gets.strip to setup the name of the middleware
|
88
|
-
@name = "SomeName".capitalize
|
89
|
-
@middleware = '#{@framework.downcase}-' + @name.downcase
|
90
|
-
|
91
|
-
# Generates a #{@framework.capitalize} Middleware Gem
|
92
|
-
#
|
93
|
-
if File.directory?(@middleware.downcase)
|
94
|
-
FileUtils.remove_dir (Dir::pwd + "/" + @middleware.downcase)
|
95
|
-
end
|
96
|
-
Dir.mkdir(Dir::pwd + "/" + @middleware.downcase)
|
97
|
-
Dir.mkdir(Dir::pwd + "/" + @middleware.downcase + "/lib")
|
98
|
-
Dir.mkdir(Dir::pwd + "/" + @middleware.downcase + "/lib/" + @middleware.downcase)
|
99
|
-
|
100
|
-
df = File.new(@middleware.downcase + "/" + @middleware.downcase + ".gemspec", "w")
|
101
|
-
df.puts <<-gf
|
102
|
-
# coding: utf-8
|
103
|
-
lib = File.expand_path('../lib', __FILE__)
|
104
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
105
|
-
|
106
|
-
Gem::Specification.new do |spec|
|
107
|
-
spec.name = "\#{@middleware}"
|
108
|
-
spec.version = "0.0.0.pre1"
|
109
|
-
spec.authors = ["#{@author}"]
|
110
|
-
spec.email = ["#{@email}"]
|
111
|
-
spec.summary = "#{@ds_summary}"
|
112
|
-
spec.description = "#{@ds_desc}"
|
113
|
-
spec.homepage = "#{@ds_website}"
|
114
|
-
spec.license = "#{@license}"
|
115
|
-
|
116
|
-
spec.files = Dir.glob("{lib}/**/*")
|
117
|
-
spec.require_paths = ["lib"]
|
118
|
-
end
|
119
|
-
gf
|
120
|
-
df.close
|
121
|
-
df = File.new(@middleware.downcase + "/lib/" + @middleware.downcase + ".rb", "w")
|
122
|
-
df.puts("require " + "'" + @middleware + "/base" + "'")
|
123
|
-
df.close
|
124
|
-
|
125
|
-
df = File.new(@middleware.downcase + "/lib/" + @middleware.downcase + "/base.rb", "w")
|
126
|
-
|
127
|
-
df.puts("#{@framework.capitalize}::Env.register do")
|
128
|
-
df.puts(" #TODO add needed code to #{@framework} Env")
|
129
|
-
df.puts("end")
|
130
|
-
|
131
|
-
df.puts("module #{@framework.capitalize}")
|
132
|
-
df.puts(" class \#{@name}")
|
133
|
-
df.puts(" include #{@framework.capitalize}::Middleware ")
|
134
|
-
df.puts(" def initialize(app, opts={},params={})")
|
135
|
-
df.puts(" @app = app")
|
136
|
-
df.puts(" @opts = opts ")
|
137
|
-
df.puts(" @params = params")
|
138
|
-
df.puts(" end")
|
139
|
-
df.puts(" def call(env)")
|
140
|
-
df.puts(" #TODO add code here to be executed before calling the next middleware")
|
141
|
-
df.puts(" @app.call(env) # run the next middleware")
|
142
|
-
df.puts(" #TODO add code here to be executed after calling the next middleware ")
|
143
|
-
df.puts(" end")
|
144
|
-
df.puts(" end")
|
145
|
-
df.puts("end")
|
146
|
-
df.close
|
147
|
-
eos
|
148
|
-
df.close
|
149
|
-
|
150
|
-
df = File.new("#{@framework.downcase}/lib/#{@framework.downcase}.rb", "w")
|
151
|
-
df.puts("require '#{@framework.downcase}/base'")
|
152
|
-
df.close
|
153
|
-
|
154
|
-
df = File.new("#{@framework.downcase}/lib/#{@framework.downcase}/base.rb", "w")
|
155
|
-
df.puts <<-eos
|
156
|
-
module #{@framework.capitalize}
|
157
|
-
module Middleware
|
158
|
-
include Mushin::Domain::Middleware
|
159
|
-
end
|
160
|
-
module DSL
|
161
|
-
include Mushin::DSL
|
162
|
-
def self.find activity_context, activity_statment
|
163
|
-
Mushin::DSL.middlewares = []
|
164
|
-
Mushin::DSL.contexts.each do |current_context|
|
165
|
-
if activity_context == current_context.title
|
166
|
-
current_context.statments.each do |statment|
|
167
|
-
if activity_statment == statment.title
|
168
|
-
statment.activations.each do |middleware|
|
169
|
-
Mushin::DSL.middlewares << middleware
|
170
|
-
end
|
171
|
-
end
|
172
|
-
end
|
173
|
-
end
|
174
|
-
end
|
175
|
-
Mushin::DSL.middlewares
|
176
|
-
end
|
177
|
-
end
|
178
|
-
module Engine
|
179
|
-
extend Mushin::Engine
|
180
|
-
class << self
|
181
|
-
def run domain_context, activity
|
182
|
-
@stack = Mushin::Middleware::Builder.new do
|
183
|
-
(#{@framework.capitalize}::DSL.find domain_context, activity).each do |middleware|
|
184
|
-
p "#{@framework.capitalize} Logging: use " + middleware.name.to_s + " " + middleware.opts.to_s + " " + middleware.params.to_s
|
185
|
-
use middleware.name, middleware.opts, middleware.params
|
186
|
-
end
|
187
|
-
end
|
188
|
-
@setup_middlewares.each do |setup_middleware|
|
189
|
-
@stack.insert_before 0, setup_middleware
|
190
|
-
end
|
191
|
-
@stack.call
|
192
|
-
end
|
193
|
-
end
|
194
|
-
end
|
195
|
-
class Env
|
196
|
-
extend Mushin::Env
|
197
|
-
|
198
|
-
class << self
|
199
|
-
attr_accessor :id
|
200
|
-
|
201
|
-
def get id
|
202
|
-
#{@framework.capitalize}::Persistence::DS.load id.to_s + "#{@framework.downcase}"
|
203
|
-
end
|
204
|
-
|
205
|
-
def set id, &block
|
206
|
-
@id = id.to_s + "#{@framework.downcase}"
|
207
|
-
def on domain_context, &block
|
208
|
-
@domain_context = domain_context
|
209
|
-
@activities = []
|
210
|
-
def activity statment
|
211
|
-
@activities += [statment]
|
212
|
-
end
|
213
|
-
instance_eval(&block)
|
214
|
-
end
|
215
|
-
instance_eval(&block)
|
216
|
-
|
217
|
-
Dir["./#{@framework.downcase}/*"].each {|file| load file }
|
218
|
-
|
219
|
-
#{@framework.capitalize}::Engine.setup [Object.const_get('#{@framework.capitalize}::Persistence::DS')]
|
220
|
-
@activities.each do |activity|
|
221
|
-
#{@framework.capitalize}::Engine.run @domain_context, activity
|
222
|
-
end
|
223
|
-
return #{@framework.capitalize}::Persistence::DS.load @id
|
224
|
-
end
|
225
|
-
end
|
226
|
-
end
|
227
|
-
end
|
228
|
-
eos
|
229
|
-
df.close
|
230
|
-
|
231
|
-
df = File.new("#{@framework.downcase}/#{@framework.downcase}.gemspec", "w")
|
232
|
-
df.puts <<-eos
|
233
|
-
# coding: utf-8
|
234
|
-
lib = File.expand_path('../lib', __FILE__)
|
235
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
236
|
-
|
237
|
-
Gem::Specification.new do |spec|
|
238
|
-
spec.name = "#{@framework.downcase}"
|
239
|
-
spec.version = "0.0.0.pre1"
|
240
|
-
spec.authors = ["#{@author}"]
|
241
|
-
spec.email = ["#{@email}"]
|
242
|
-
spec.summary = "#{@summary}"
|
243
|
-
spec.description = "#{@desc}"
|
244
|
-
spec.homepage = "#{@website}"
|
245
|
-
spec.license = "#{@license}"
|
246
|
-
|
247
|
-
spec.files = Dir.glob("{lib}/**/*")
|
248
|
-
spec.require_paths = ["lib"]
|
249
|
-
end
|
250
|
-
eos
|
251
|
-
df.close
|
252
|
-
|
253
|
-
# Framework Peristance Gem
|
254
|
-
@ds = @framework.downcase + '-redis'
|
255
|
-
if File.directory?("#{@ds.downcase}")
|
256
|
-
FileUtils.remove_dir (Dir::pwd + "/#{@ds.downcase}")
|
257
|
-
end
|
258
|
-
Dir.mkdir(Dir::pwd + "/#{@ds.downcase}")
|
259
|
-
Dir.mkdir(Dir::pwd + "/#{@ds.downcase}/lib")
|
260
|
-
Dir.mkdir(Dir::pwd + "/#{@ds.downcase}/lib/#{@ds.downcase}")
|
261
|
-
Dir.mkdir(Dir::pwd + "/#{@ds.downcase}/spec")
|
262
|
-
|
263
|
-
df = File.new("#{@ds.downcase}/lib/#{@ds.downcase}.rb", "w")
|
264
|
-
df.puts("require '#{@ds}/base'")
|
265
|
-
df.close
|
266
|
-
|
267
|
-
df = File.new("#{@ds.downcase}/lib/#{@ds.downcase}/base.rb", "w")
|
268
|
-
df.puts <<-eos
|
269
|
-
require "redis"
|
270
|
-
|
271
|
-
module #{@framework.capitalize}
|
272
|
-
module Persistence
|
273
|
-
class DS
|
274
|
-
|
275
|
-
#{@framework.capitalize}::Env.register do
|
276
|
-
attr_accessor :id
|
277
|
-
end
|
278
|
-
|
279
|
-
@@redis = Redis.new
|
280
|
-
|
281
|
-
def initialize app
|
282
|
-
@app = app
|
283
|
-
@id = #{@framework.capitalize}::Env.id
|
284
|
-
end
|
285
|
-
|
286
|
-
def call(env)
|
287
|
-
p "#{@framework.capitalize}::Persistence::DS instance id = " + @id.to_s
|
288
|
-
if exists? @id
|
289
|
-
env[:#{@framework.downcase}] = DS.load @id
|
290
|
-
p 'resotred' + env[:#{@framework.downcase}].to_s
|
291
|
-
else
|
292
|
-
p 'new obj from #{@framework.capitalize}::Env class'
|
293
|
-
env[:#{@framework.downcase}] = #{@framework.capitalize}::Env.new
|
294
|
-
env[:#{@framework.downcase}].id = @id
|
295
|
-
p "env[:#{@framework.downcase}].id equals " + env[:#{@framework.downcase}].id.to_s
|
296
|
-
end
|
297
|
-
@app.call(env)
|
298
|
-
DS.store env[:#{@framework.downcase}]
|
299
|
-
p "stored " + env[:#{@framework.downcase}].to_s
|
300
|
-
end
|
301
|
-
|
302
|
-
def DS.store obj
|
303
|
-
begin
|
304
|
-
@#{@framework.downcase}_env = Marshal.dump obj
|
305
|
-
@@redis.set(obj.id, @#{@framework.downcase}_env)
|
306
|
-
ensure
|
307
|
-
p "storing #{@framework} Env " + obj.to_s
|
308
|
-
end
|
309
|
-
end
|
310
|
-
def DS.load id
|
311
|
-
return Marshal.load (@@redis.get(id))
|
312
|
-
end
|
313
|
-
|
314
|
-
def exists? id
|
315
|
-
if (@@redis.get id) && (Marshal.load @@redis.get id)
|
316
|
-
p "#{@framework.capitalize}::Persistence::DS.exists? true"
|
317
|
-
return true
|
318
|
-
else
|
319
|
-
p "#{@framework.capitalize}::Persistence::DS.exists? false"
|
320
|
-
return false
|
321
|
-
end
|
322
|
-
end
|
323
|
-
end
|
324
|
-
end
|
325
|
-
end
|
326
|
-
eos
|
327
|
-
df.close
|
328
|
-
|
329
|
-
df = File.new("#{@ds.downcase}/#{@ds.downcase}.gemspec", "w")
|
330
|
-
df.puts <<-eos
|
331
|
-
# coding: utf-8
|
332
|
-
lib = File.expand_path('../lib', __FILE__)
|
333
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
334
|
-
|
335
|
-
Gem::Specification.new do |spec|
|
336
|
-
spec.name = "#{@ds.downcase}"
|
337
|
-
spec.version = "0.0.0.pre1"
|
338
|
-
spec.authors = ["#{@author}"]
|
339
|
-
spec.email = ["#{@email}"]
|
340
|
-
spec.summary = "#{@ds_summary}"
|
341
|
-
spec.description = "#{@ds_desc}"
|
342
|
-
spec.homepage = "#{@ds_website}"
|
343
|
-
spec.license = "#{@license}"
|
344
|
-
|
345
|
-
spec.files = Dir.glob("{lib}/**/*")
|
346
|
-
spec.require_paths = ["lib"]
|
347
|
-
end
|
348
|
-
eos
|
349
|
-
df.close
|
350
|
-
|
351
|
-
when "share"
|
352
|
-
@gem = ARGV[0]
|
353
|
-
|
354
|
-
Find.find(Dir.pwd) do |path|
|
355
|
-
if (File.extname(path) == ".gemspec") && (File.basename(path).include? @gem.downcase)
|
356
|
-
@path = path
|
357
|
-
`gem build #{@path.downcase}`
|
358
|
-
end
|
359
|
-
if (File.extname(path) == ".gem") && (File.basename(path).include? @gem.downcase)
|
360
|
-
@path = path
|
361
|
-
`gem push #{@path.downcase}`
|
362
|
-
end
|
363
|
-
end
|
364
|
-
when "clean"
|
365
|
-
@gem = ARGV[0]
|
366
|
-
|
367
|
-
Find.find(Dir.pwd) do |path|
|
368
|
-
if (File.extname(path) == ".gem") && (File.basename(path).include? @gem.downcase)
|
369
|
-
@path = path
|
370
|
-
`rm #{@path.downcase}`
|
371
|
-
end
|
372
|
-
end
|
373
|
-
else
|
374
|
-
puts "You just making it up! try mushin --help"
|
375
|
-
end
|