sana-mvcbase 0.0.1
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 +7 -0
- data/.gitignore +10 -0
- data/.rspec +3 -0
- data/.travis.yml +7 -0
- data/Gemfile +4 -0
- data/README.md +113 -0
- data/Rakefile +11 -0
- data/appveyor.yml +20 -0
- data/lib/sana-mvcbase.rb +2 -0
- data/lib/sana_controller.rb +96 -0
- data/lib/sana_router.rb +126 -0
- data/sana-mvcbase.gemspec +26 -0
- metadata +168 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: efe4c405cdfefbb65ab2f1427c8c5a45314c5093
|
4
|
+
data.tar.gz: 1943f8d1f3b6ecc1b6f80432998b16b25f6e24c5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f2fe133feed6724c3da90e40fe95a33f326b87cc8a541e9e1be11d108693e2f47f69c172f6930a0ed7934c9db46e686865a9ce5cdd5576720fe1c9673463db01
|
7
|
+
data.tar.gz: a6411dbaed1a53790453d32e43662148f3dbb20667fad091c7442f4ab5bb04b69493dd85017461416e4f6f91259edb502e6e50df58d161eb61ec629bc4c73024
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,113 @@
|
|
1
|
+
# [Sanae MVC Base](https://github.com/Narazaka/sana-mvcbase)
|
2
|
+
|
3
|
+
[](https://rubygems.org/gems/sana-mvcbase)
|
4
|
+
[](https://rubygems.org/gems/sana-mvcbase)
|
5
|
+
[](https://gemnasium.com/Narazaka/sana-mvcbase)
|
6
|
+
[](http://inch-ci.org/github/Narazaka/sana-mvcbase)
|
7
|
+
[](https://travis-ci.org/Narazaka/sana-mvcbase)
|
8
|
+
[](https://ci.appveyor.com/project/Narazaka/sana-mvcbase)
|
9
|
+
[](https://codecov.io/github/Narazaka/sana-mvcbase?branch=master)
|
10
|
+
[](https://codeclimate.com/github/Narazaka/sana-mvcbase)
|
11
|
+
|
12
|
+
Ukagaka SHIORI subsystem 'Sana' MVC Helper
|
13
|
+
|
14
|
+
## Installation
|
15
|
+
|
16
|
+
Add this line to your application's Gemfile:
|
17
|
+
|
18
|
+
```ruby
|
19
|
+
gem 'sana-mvcbase'
|
20
|
+
```
|
21
|
+
|
22
|
+
And then execute:
|
23
|
+
|
24
|
+
$ bundle
|
25
|
+
|
26
|
+
Or install it yourself as:
|
27
|
+
|
28
|
+
$ gem install sana-mvcbase
|
29
|
+
|
30
|
+
## Usage
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
require 'sana-mvcbase'
|
34
|
+
require 'shiolink'
|
35
|
+
|
36
|
+
# define controllers
|
37
|
+
|
38
|
+
# for load(), unload()
|
39
|
+
class DLController < SanaController
|
40
|
+
def _load(dirpath)
|
41
|
+
MySave.load
|
42
|
+
p dirpath
|
43
|
+
end
|
44
|
+
|
45
|
+
def _unload
|
46
|
+
p :unload
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# view rendering module
|
51
|
+
module MyViewModule
|
52
|
+
def render_response(name)
|
53
|
+
MyView.talk(name || event_id)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# view rendering base controller
|
58
|
+
class MyWithViewController < SanaAnyEventController
|
59
|
+
include MyViewModule
|
60
|
+
end
|
61
|
+
|
62
|
+
# normal talk controller
|
63
|
+
class TalkEventsController < MyWithViewController
|
64
|
+
def OnBoot
|
65
|
+
@foo = MySave.foo_flag
|
66
|
+
@bar = MyModel.bar(params.shell_name)
|
67
|
+
end
|
68
|
+
|
69
|
+
def OnFirstBoot
|
70
|
+
@foo = MySave.foo_flag
|
71
|
+
render :OnBoot
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# resource controller
|
76
|
+
class ResourcesController < SanaController
|
77
|
+
def homeurl
|
78
|
+
"http://www.example.com/foo/"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# register routing
|
83
|
+
|
84
|
+
router = SanaRouter.new(TalkEventsController)
|
85
|
+
router.draw do
|
86
|
+
controller DLController do
|
87
|
+
load
|
88
|
+
unload
|
89
|
+
end
|
90
|
+
|
91
|
+
controller ResourcesController do
|
92
|
+
route :homeurl
|
93
|
+
end
|
94
|
+
|
95
|
+
route :OnBoot, {shell_name: 0, halted: 6, halted_ghost_name: 7}
|
96
|
+
|
97
|
+
# OnFirstBoot is not registered but will called with default controller (= TalkEventsController)
|
98
|
+
end
|
99
|
+
|
100
|
+
# app start
|
101
|
+
|
102
|
+
sana = Sana.new(router.events)
|
103
|
+
shiolink = Shiolink.new(sana.method(:load), sana.method(:unload), sana.method(:request))
|
104
|
+
shiolink.start
|
105
|
+
```
|
106
|
+
|
107
|
+
## API
|
108
|
+
|
109
|
+
[API Document](http://www.rubydoc.info/github/Narazaka/sana-mvcbase)
|
110
|
+
|
111
|
+
## License
|
112
|
+
|
113
|
+
This is released under [MIT License](http://narazaka.net/license/MIT?2016).
|
data/Rakefile
ADDED
data/appveyor.yml
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
version: "{build}"
|
2
|
+
branches:
|
3
|
+
except:
|
4
|
+
- gh-pages
|
5
|
+
install:
|
6
|
+
- set RUBY_HOME=C:\Ruby%ruby_version%
|
7
|
+
- set PATH=%RUBY_HOME%\bin;%PATH%
|
8
|
+
- ruby --version
|
9
|
+
- gem --version
|
10
|
+
- gem install bundler --no-document
|
11
|
+
- bundle --version
|
12
|
+
- bundle install
|
13
|
+
test_script:
|
14
|
+
- bundle exec rake spec
|
15
|
+
build: off
|
16
|
+
deploy: off
|
17
|
+
environment:
|
18
|
+
matrix:
|
19
|
+
- ruby_version: 22
|
20
|
+
- ruby_version: 22-x64
|
data/lib/sana-mvcbase.rb
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
# Sana Controller
|
2
|
+
class SanaController
|
3
|
+
# constructor
|
4
|
+
# @param [SanaRouter::Events] events events
|
5
|
+
# @param [Symbol] event_id event id
|
6
|
+
# @param [OpenStruct] request request
|
7
|
+
# @param [Hash<Symbol, Integer>] mapping request argument mappings
|
8
|
+
def initialize(events, event_id, request, mapping = {})
|
9
|
+
@events = events
|
10
|
+
@event_id = event_id
|
11
|
+
@request = request
|
12
|
+
@mapping = mapping
|
13
|
+
end
|
14
|
+
|
15
|
+
# events
|
16
|
+
# @return [SanaRouter::Events]
|
17
|
+
attr_reader :events
|
18
|
+
# event id
|
19
|
+
# @return [Symbol]
|
20
|
+
attr_reader :event_id
|
21
|
+
# request
|
22
|
+
# @return [OpenStruct]
|
23
|
+
attr_reader :request
|
24
|
+
|
25
|
+
# named access to request headers
|
26
|
+
# @return [SanaController::Params] params
|
27
|
+
def params
|
28
|
+
@params ||= Params.new(request, @mapping)
|
29
|
+
end
|
30
|
+
|
31
|
+
# exec action and get response
|
32
|
+
# @return [String, Openstruct] response
|
33
|
+
def action
|
34
|
+
@return_value = public_send(@event_id)
|
35
|
+
if @response
|
36
|
+
@response
|
37
|
+
else
|
38
|
+
render
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
# render result
|
45
|
+
# @param args various result options
|
46
|
+
# @return [String, Openstruct] response
|
47
|
+
def render(*args)
|
48
|
+
@response = render_response(*args)
|
49
|
+
end
|
50
|
+
|
51
|
+
# make result by given options
|
52
|
+
# @param args various result options
|
53
|
+
# @return [String, Openstruct] response
|
54
|
+
# @note this method should be overridden for convenient view rendering
|
55
|
+
# @example override
|
56
|
+
# class HogeViewController < SanaController
|
57
|
+
# def render_response(value = nil)
|
58
|
+
# # @return_value is event method's return value
|
59
|
+
# eval (value || @return_value)
|
60
|
+
# end
|
61
|
+
# end
|
62
|
+
def render_response(*args)
|
63
|
+
args[0] || @return_value
|
64
|
+
end
|
65
|
+
|
66
|
+
# named access to request headers
|
67
|
+
class Params
|
68
|
+
# constructor
|
69
|
+
# @param [OpenStruct] request request
|
70
|
+
# @param [Hash<Symbol, Integer>] mapping request argument mappings
|
71
|
+
# @example mapping
|
72
|
+
# params = SanaController::Params.new(request, {shell_name: 0, halted: 6, halted_ghost_name: 7}) # mapping for Reference0, 6 and 7
|
73
|
+
def initialize(request, mapping = {})
|
74
|
+
@request = request
|
75
|
+
@mapping = mapping
|
76
|
+
end
|
77
|
+
|
78
|
+
# named access to the header
|
79
|
+
# @example named access
|
80
|
+
# params.shell_name == params.Reference0
|
81
|
+
# @param [Symbol] method param name
|
82
|
+
# @return [String] header value
|
83
|
+
def method_missing(method)
|
84
|
+
@request[method] || @request["Reference#{@mapping[method]}".to_sym]
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
# Sana Controller (any event accepted)
|
90
|
+
class SanaAnyEventController < SanaController
|
91
|
+
# SHIORI request()
|
92
|
+
# @param [Symbol] method method name = event id
|
93
|
+
def method_missing(method)
|
94
|
+
render
|
95
|
+
end
|
96
|
+
end
|
data/lib/sana_router.rb
ADDED
@@ -0,0 +1,126 @@
|
|
1
|
+
require 'sana'
|
2
|
+
# Sana Router
|
3
|
+
class SanaRouter
|
4
|
+
# constructor
|
5
|
+
# @param [SanaController] default_controller default scope controller
|
6
|
+
def initialize(default_controller = nil)
|
7
|
+
@default_controller = default_controller
|
8
|
+
@controller = @default_controller
|
9
|
+
@route = {}
|
10
|
+
@mapping = {}
|
11
|
+
end
|
12
|
+
|
13
|
+
# register event route to controller
|
14
|
+
# @param [Symbol, Array<Symbol>] events event names
|
15
|
+
# @param [Hash<Symbol, Integer>] mapping request argument mappings
|
16
|
+
# @example register to various controllers
|
17
|
+
# router.draw do
|
18
|
+
# # register to specific controller
|
19
|
+
# controller BootController do
|
20
|
+
# route [:OnBoot, :OnFirstBoot]
|
21
|
+
# end
|
22
|
+
# controller CloseController do
|
23
|
+
# route [:OnClose, :OnCloseAll]
|
24
|
+
# end
|
25
|
+
# # register to default controller
|
26
|
+
# route :OnSecondChange
|
27
|
+
# end
|
28
|
+
# @example mapping usage
|
29
|
+
# route :OnBoot, {shell_name: 0, halted: 6, halted_ghost_name: 7} # mapping for Reference0, 6 and 7
|
30
|
+
def route(events, mapping = {})
|
31
|
+
Array(events).each do |method|
|
32
|
+
@route[method.to_sym] = @controller
|
33
|
+
@mapping[method.to_sym] = mapping
|
34
|
+
end
|
35
|
+
return
|
36
|
+
end
|
37
|
+
|
38
|
+
alias_method :r, :route
|
39
|
+
|
40
|
+
# register SHIORI load() route to controller
|
41
|
+
# @example register to specific controller
|
42
|
+
# router.draw do
|
43
|
+
# controller DLController do
|
44
|
+
# load
|
45
|
+
# end
|
46
|
+
# end
|
47
|
+
def load
|
48
|
+
@load_controller = @controller
|
49
|
+
end
|
50
|
+
|
51
|
+
# register SHIORI unload() route to controller
|
52
|
+
# @example register to specific controller
|
53
|
+
# router.draw do
|
54
|
+
# controller DLController do
|
55
|
+
# unload
|
56
|
+
# end
|
57
|
+
# end
|
58
|
+
def unload
|
59
|
+
@unload_controller = @controller
|
60
|
+
end
|
61
|
+
|
62
|
+
# execute register methods in instance context
|
63
|
+
# @yield instance_exec context
|
64
|
+
def draw(&block)
|
65
|
+
instance_exec &block
|
66
|
+
end
|
67
|
+
|
68
|
+
# set controller context
|
69
|
+
# @param [SanaController] controller target controller
|
70
|
+
# @yield controller context block
|
71
|
+
def controller(controller)
|
72
|
+
@controller = controller
|
73
|
+
yield if block_given?
|
74
|
+
@controller = @default_controller
|
75
|
+
end
|
76
|
+
|
77
|
+
# router events
|
78
|
+
# @example with Sana
|
79
|
+
# sana = Sana.new(router.events)
|
80
|
+
# @return [SanaRouter::Events] events
|
81
|
+
def events
|
82
|
+
@events ||= Events.new(@route, @mapping, @load_controller, @unload_controller, @default_controller)
|
83
|
+
end
|
84
|
+
|
85
|
+
# router events
|
86
|
+
class Events
|
87
|
+
# constructor
|
88
|
+
# @param [Hash<Symbol, SanaController>] route route hash
|
89
|
+
# @param [Hash<Symbol, Hash<Symbol, Integer>>] mapping mapping hash
|
90
|
+
# @param [SanaController] load_controller load controller
|
91
|
+
# @param [SanaController] unload_controller unload controller
|
92
|
+
# @param [SanaController] default_controller default controller
|
93
|
+
def initialize(route, mapping, load_controller, unload_controller, default_controller = nil)
|
94
|
+
@route = route
|
95
|
+
@mapping = mapping
|
96
|
+
@load_controller = load_controller
|
97
|
+
@unload_controller = unload_controller
|
98
|
+
@default_controller = default_controller
|
99
|
+
end
|
100
|
+
|
101
|
+
# SHIORI request()
|
102
|
+
# @param [Symbol] method method name = event id
|
103
|
+
# @param [OpenStruct] request request
|
104
|
+
# @return [String, Openstruct] response
|
105
|
+
# @example request()
|
106
|
+
# events.OnBoot(request)
|
107
|
+
def method_missing(method, request)
|
108
|
+
if controller = @route[method] || @default_controller
|
109
|
+
controller.new(self, method, request, @mapping[method]).action
|
110
|
+
else
|
111
|
+
super
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
# SHIORI load()
|
116
|
+
# @param [String] dirpath "ghost/master" path
|
117
|
+
def _load(dirpath)
|
118
|
+
@load_controller.new(self, __method__, nil, nil)._load(dirpath)
|
119
|
+
end
|
120
|
+
|
121
|
+
# SHIORI unload()
|
122
|
+
def _unload
|
123
|
+
@load_controller.new(self, __method__, nil, nil)._unload
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |spec|
|
5
|
+
spec.name = "sana-mvcbase"
|
6
|
+
spec.version = "0.0.1"
|
7
|
+
spec.authors = ["Narazaka"]
|
8
|
+
spec.email = ["info@narazaka.net"]
|
9
|
+
|
10
|
+
spec.summary = %q{Ukagaka SHIORI subsystem 'Sana' MVC Helper}
|
11
|
+
spec.description = %q{Ukagaka SHIORI subsystem 'Sana' MVC Helper}
|
12
|
+
spec.homepage = "https://github.com/Narazaka/sana-mvcbase"
|
13
|
+
spec.license = "MIT"
|
14
|
+
|
15
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
16
|
+
spec.require_paths = ["lib"]
|
17
|
+
|
18
|
+
spec.add_development_dependency "bundler", ">= 1.7.9"
|
19
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
20
|
+
spec.add_development_dependency "rspec", "~> 3.4"
|
21
|
+
spec.add_development_dependency "yard", "~> 0.8.7"
|
22
|
+
spec.add_development_dependency "simplecov", "~> 0.11"
|
23
|
+
spec.add_development_dependency "codecov", "~> 0.1"
|
24
|
+
spec.add_dependency "shioruby", ">= 0.0.3"
|
25
|
+
spec.add_dependency "sana", ">= 0.0.4"
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,168 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sana-mvcbase
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Narazaka
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-02-21 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.7.9
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.7.9
|
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: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.4'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.4'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: yard
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.8.7
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.8.7
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: simplecov
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0.11'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.11'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: codecov
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.1'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0.1'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: shioruby
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.0.3
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.0.3
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: sana
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.0.4
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.0.4
|
125
|
+
description: Ukagaka SHIORI subsystem 'Sana' MVC Helper
|
126
|
+
email:
|
127
|
+
- info@narazaka.net
|
128
|
+
executables: []
|
129
|
+
extensions: []
|
130
|
+
extra_rdoc_files: []
|
131
|
+
files:
|
132
|
+
- ".gitignore"
|
133
|
+
- ".rspec"
|
134
|
+
- ".travis.yml"
|
135
|
+
- Gemfile
|
136
|
+
- README.md
|
137
|
+
- Rakefile
|
138
|
+
- appveyor.yml
|
139
|
+
- lib/sana-mvcbase.rb
|
140
|
+
- lib/sana_controller.rb
|
141
|
+
- lib/sana_router.rb
|
142
|
+
- sana-mvcbase.gemspec
|
143
|
+
homepage: https://github.com/Narazaka/sana-mvcbase
|
144
|
+
licenses:
|
145
|
+
- MIT
|
146
|
+
metadata: {}
|
147
|
+
post_install_message:
|
148
|
+
rdoc_options: []
|
149
|
+
require_paths:
|
150
|
+
- lib
|
151
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
152
|
+
requirements:
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: '0'
|
156
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - ">="
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '0'
|
161
|
+
requirements: []
|
162
|
+
rubyforge_project:
|
163
|
+
rubygems_version: 2.4.5.1
|
164
|
+
signing_key:
|
165
|
+
specification_version: 4
|
166
|
+
summary: Ukagaka SHIORI subsystem 'Sana' MVC Helper
|
167
|
+
test_files: []
|
168
|
+
has_rdoc:
|