whales_actions 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rspec +2 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +89 -0
- data/Guardfile +11 -0
- data/LICENSE.txt +21 -0
- data/README.md +0 -0
- data/Rakefile +10 -0
- data/lib/views/cats/index.html.erb +3 -0
- data/lib/views/cats/new.html.erb +11 -0
- data/lib/views/my_controller/counting_show.html.erb +1 -0
- data/lib/views/my_controller/flash_show.html.erb +1 -0
- data/lib/views/my_controller/show.html.erb +1 -0
- data/lib/whales_actions/version.rb +3 -0
- data/lib/whales_actions.rb +1 -0
- data/lib/whales_controller/base.rb +81 -0
- data/lib/whales_dispatch/default_actions.rb +59 -0
- data/lib/whales_dispatch/flash.rb +35 -0
- data/lib/whales_dispatch/params.rb +58 -0
- data/lib/whales_dispatch/resource.rb +25 -0
- data/lib/whales_dispatch/route.rb +30 -0
- data/lib/whales_dispatch/router.rb +63 -0
- data/lib/whales_dispatch/session.rb +29 -0
- data/whales_actions.gemspec +25 -0
- metadata +152 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f40a35b239daaf2d634d19edfbff41fee27df177
|
4
|
+
data.tar.gz: 9e35893900877aa08d5b08d12e5aefd7b968b32c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 19e1aecd87c8aa840049b08e241780ef8516e9d4b9a8b4c10d930a8e466cae01cbfc974253d48c9acaf9bcafc39595ea2af9a453c65e3f9e92fc032307464fee
|
7
|
+
data.tar.gz: dfaba83c6676aadb6931e0e09c550e00c5fca33182b9acf91c3f86cc4f0c91cd8c1a18548de42146d8d26cbf90d4b996f2b10b4481cae8bf732bcdba2fb7e4c1
|
data/.rspec
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
whales_actions (0.1.0)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
activesupport (4.2.4)
|
10
|
+
i18n (~> 0.7)
|
11
|
+
json (~> 1.7, >= 1.7.7)
|
12
|
+
minitest (~> 5.1)
|
13
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
14
|
+
tzinfo (~> 1.1)
|
15
|
+
coderay (1.1.0)
|
16
|
+
diff-lcs (1.2.5)
|
17
|
+
ffi (1.9.10)
|
18
|
+
formatador (0.2.5)
|
19
|
+
guard (2.13.0)
|
20
|
+
formatador (>= 0.2.4)
|
21
|
+
listen (>= 2.7, <= 4.0)
|
22
|
+
lumberjack (~> 1.0)
|
23
|
+
nenv (~> 0.1)
|
24
|
+
notiffany (~> 0.0)
|
25
|
+
pry (>= 0.9.12)
|
26
|
+
shellany (~> 0.0)
|
27
|
+
thor (>= 0.18.1)
|
28
|
+
guard-compat (1.2.1)
|
29
|
+
guard-rspec (4.6.4)
|
30
|
+
guard (~> 2.1)
|
31
|
+
guard-compat (~> 1.1)
|
32
|
+
rspec (>= 2.99.0, < 4.0)
|
33
|
+
i18n (0.7.0)
|
34
|
+
json (1.8.3)
|
35
|
+
listen (3.0.5)
|
36
|
+
rb-fsevent (>= 0.9.3)
|
37
|
+
rb-inotify (>= 0.9)
|
38
|
+
lumberjack (1.0.9)
|
39
|
+
method_source (0.8.2)
|
40
|
+
minitest (5.8.3)
|
41
|
+
nenv (0.2.0)
|
42
|
+
notiffany (0.0.8)
|
43
|
+
nenv (~> 0.1)
|
44
|
+
shellany (~> 0.0)
|
45
|
+
pry (0.10.3)
|
46
|
+
coderay (~> 1.1.0)
|
47
|
+
method_source (~> 0.8.1)
|
48
|
+
slop (~> 3.4)
|
49
|
+
rake (10.4.2)
|
50
|
+
rb-fsevent (0.9.6)
|
51
|
+
rb-inotify (0.9.5)
|
52
|
+
ffi (>= 0.5.0)
|
53
|
+
rspec (3.4.0)
|
54
|
+
rspec-core (~> 3.4.0)
|
55
|
+
rspec-expectations (~> 3.4.0)
|
56
|
+
rspec-mocks (~> 3.4.0)
|
57
|
+
rspec-core (3.4.1)
|
58
|
+
rspec-support (~> 3.4.0)
|
59
|
+
rspec-expectations (3.4.0)
|
60
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
61
|
+
rspec-support (~> 3.4.0)
|
62
|
+
rspec-mocks (3.4.0)
|
63
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
64
|
+
rspec-support (~> 3.4.0)
|
65
|
+
rspec-support (3.4.1)
|
66
|
+
shellany (0.0.1)
|
67
|
+
slop (3.6.0)
|
68
|
+
thor (0.19.1)
|
69
|
+
thread_safe (0.3.5)
|
70
|
+
tzinfo (1.2.2)
|
71
|
+
thread_safe (~> 0.1)
|
72
|
+
webrick (1.3.1)
|
73
|
+
|
74
|
+
PLATFORMS
|
75
|
+
ruby
|
76
|
+
|
77
|
+
DEPENDENCIES
|
78
|
+
activesupport
|
79
|
+
bundler (~> 1.10)
|
80
|
+
guard
|
81
|
+
guard-rspec
|
82
|
+
pry
|
83
|
+
rake (~> 10.0)
|
84
|
+
rspec
|
85
|
+
webrick
|
86
|
+
whales_actions!
|
87
|
+
|
88
|
+
BUNDLED WITH
|
89
|
+
1.10.6
|
data/Guardfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2015 William Horton
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
File without changes
|
data/Rakefile
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "rspec/core/rake_task"
|
3
|
+
|
4
|
+
# Default directory to look in is `/specs`
|
5
|
+
# Run with `rake spec`
|
6
|
+
RSpec::Core::RakeTask.new(:spec) do |task|
|
7
|
+
task.rspec_opts = ['--color', '--format', 'nested']
|
8
|
+
end
|
9
|
+
|
10
|
+
task :default => :spec
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= session["count"] %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= flash[:errors] %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= (1..10).to_a.join(", ") %>
|
@@ -0,0 +1 @@
|
|
1
|
+
require_relative "./whales_controller/base.rb"
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'active_support/inflector'
|
2
|
+
require 'active_support'
|
3
|
+
require 'active_support/core_ext'
|
4
|
+
require 'erb'
|
5
|
+
require_relative '../whales_dispatch/flash'
|
6
|
+
require_relative '../whales_dispatch/params'
|
7
|
+
require_relative '../whales_dispatch/route'
|
8
|
+
require_relative '../whales_dispatch/router'
|
9
|
+
require_relative '../whales_dispatch/session'
|
10
|
+
|
11
|
+
module WhalesController
|
12
|
+
class Base
|
13
|
+
attr_reader :params
|
14
|
+
attr_accessor :res, :req
|
15
|
+
|
16
|
+
def initialize(request, response, route_params = {})
|
17
|
+
@req = request
|
18
|
+
@res = response
|
19
|
+
@params = WhalesDispatch::Params.new(req, route_params)
|
20
|
+
|
21
|
+
unless req.request_method == "GET"
|
22
|
+
verify_authenticity_token
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def already_built_response?
|
27
|
+
@already_built_response
|
28
|
+
end
|
29
|
+
|
30
|
+
def flash
|
31
|
+
@flash ||= WhalesDispatch::Flash.new(req)
|
32
|
+
end
|
33
|
+
|
34
|
+
def form_authenticity_token
|
35
|
+
session["authenticity_token"] = SecureRandom.urlsafe_base64
|
36
|
+
end
|
37
|
+
|
38
|
+
def invoke_action(action_name)
|
39
|
+
send(action_name)
|
40
|
+
render(name) unless already_built_response?
|
41
|
+
end
|
42
|
+
|
43
|
+
def render_content(content, content_type)
|
44
|
+
raise if already_built_response?
|
45
|
+
self.res.content_type = content_type
|
46
|
+
self.res.body = content
|
47
|
+
@already_built_response = true
|
48
|
+
session.store_session(res)
|
49
|
+
flash.store_flash(res)
|
50
|
+
end
|
51
|
+
|
52
|
+
def redirect_to(url)
|
53
|
+
raise if already_built_response?
|
54
|
+
self.res["Location"] = url
|
55
|
+
self.res.status = 302
|
56
|
+
@already_built_response = true
|
57
|
+
session.store_session(res)
|
58
|
+
flash.store_flash(res)
|
59
|
+
end
|
60
|
+
|
61
|
+
def render(template_name, file_location = nil)
|
62
|
+
file_location ||= __FILE__
|
63
|
+
path = File.expand_path("../../views/#{self.class.to_s[0..-11].underscore}/#{template_name}.html.erb", file_location)
|
64
|
+
template = ERB.new(File.read(path))
|
65
|
+
render_content(template.result(binding), "text/html")
|
66
|
+
end
|
67
|
+
|
68
|
+
def session
|
69
|
+
@session ||= WhalesDispatch::Session.new(req)
|
70
|
+
end
|
71
|
+
|
72
|
+
private
|
73
|
+
|
74
|
+
def verify_authenticity_token
|
75
|
+
unless params[:authenticity_token] == session["authenticity_token"]
|
76
|
+
raise "Missing authenticity token"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
class DefaultActions
|
2
|
+
attr_reader :actions
|
3
|
+
def initialize(resource)
|
4
|
+
@resource = resource.to_s
|
5
|
+
@resource_id = @resource.singularize + "_id"
|
6
|
+
@actions = all
|
7
|
+
end
|
8
|
+
|
9
|
+
def parse_action_restrictions(restrictions_hash)
|
10
|
+
raise(ArgumentError) if restrictions_hash.size > 1
|
11
|
+
send(:only, restrictions_hash[:only]) if restrictions_hash[:only]
|
12
|
+
send(:except, restrictions_hash[:except]) if restrictions_hash[:except]
|
13
|
+
end
|
14
|
+
|
15
|
+
def index
|
16
|
+
{ index: { suffix: "$", method: :get } }
|
17
|
+
end
|
18
|
+
|
19
|
+
def show
|
20
|
+
{ show: { suffix: "/(?<#{@resource_id}>\\d+)$", method: :post } }
|
21
|
+
end
|
22
|
+
|
23
|
+
def new
|
24
|
+
{ new: { suffix: "/new$", method: :get } }
|
25
|
+
end
|
26
|
+
|
27
|
+
def create
|
28
|
+
{ create: { suffix: "$", method: :post } }
|
29
|
+
end
|
30
|
+
|
31
|
+
def edit
|
32
|
+
{ edit: { suffix: "/(?<#{@resource_id}>\\d+)/edit$", method: :get } }
|
33
|
+
end
|
34
|
+
|
35
|
+
def update
|
36
|
+
{ update: { suffix: "/(?<#{@resource_id}>\\d+)$", method: :put } }
|
37
|
+
end
|
38
|
+
|
39
|
+
def destroy
|
40
|
+
{ destroy: { suffix: "/(?<#{@resource_id}>\\d+)$", method: :delete } }
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def all
|
46
|
+
DefaultActions.instance_methods(false).drop(2).reduce({}) do |accum, method|
|
47
|
+
accum.merge(send(method))
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def only(action_names)
|
52
|
+
@actions.keep_if { |key, _| action_names.include?(key) }
|
53
|
+
end
|
54
|
+
|
55
|
+
def except(action_names)
|
56
|
+
@actions.keep_if { |key, _| !action_names.include?(key) }
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'webrick'
|
3
|
+
|
4
|
+
module WhalesDispatch
|
5
|
+
class Flash
|
6
|
+
|
7
|
+
def initialize(request)
|
8
|
+
request.cookies.each do |cookie|
|
9
|
+
@value_for_now = JSON.parse(cookie.value) if cookie.name == '_rails_lite_flash'
|
10
|
+
end
|
11
|
+
@value_for_now ||= {}
|
12
|
+
@value_for_next = {}
|
13
|
+
end
|
14
|
+
|
15
|
+
def now
|
16
|
+
@value_for_now
|
17
|
+
end
|
18
|
+
|
19
|
+
def [](key)
|
20
|
+
combined = @value_for_next.merge(@value_for_now)
|
21
|
+
combined[key.to_s] || combined[key.to_sym]
|
22
|
+
end
|
23
|
+
|
24
|
+
def []=(key, value)
|
25
|
+
@value_for_next[key] = value
|
26
|
+
end
|
27
|
+
|
28
|
+
def store_flash(response)
|
29
|
+
cookie = WEBrick::Cookie.new('_rails_lite_flash', @value_for_next.to_json)
|
30
|
+
cookie.path = '/'
|
31
|
+
response.cookies << cookie
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'uri'
|
2
|
+
|
3
|
+
module WhalesDispatch
|
4
|
+
class Params
|
5
|
+
|
6
|
+
def initialize(req, route_params = {})
|
7
|
+
parsed_query_string = parse_www_encoded_form(req.query_string)
|
8
|
+
parsed_req_body = parse_www_encoded_form(req.body)
|
9
|
+
@params = parsed_query_string.merge(parsed_req_body).merge(route_params)
|
10
|
+
end
|
11
|
+
|
12
|
+
def [](key)
|
13
|
+
@params[key.to_s] || @params[key.to_sym]
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_s
|
17
|
+
@params.to_s
|
18
|
+
end
|
19
|
+
|
20
|
+
def require(key)
|
21
|
+
@params = self[key]
|
22
|
+
self
|
23
|
+
end
|
24
|
+
|
25
|
+
def permit(*attrs)
|
26
|
+
@params.select do |k, _|
|
27
|
+
attrs.include?(k.to_s) || attrs.include?(k.to_sym)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class AttributeNotFoundError < ArgumentError; end;
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def parse_www_encoded_form(www_encoded_form)
|
36
|
+
www_encoded_form ||= ""
|
37
|
+
params = {}
|
38
|
+
URI.decode_www_form(www_encoded_form).each do |nested_key, val|
|
39
|
+
keys = parse_key(nested_key)
|
40
|
+
prev_context = params
|
41
|
+
keys.each do |key|
|
42
|
+
if key == keys.last
|
43
|
+
prev_context[key] = val
|
44
|
+
else
|
45
|
+
prev_context[key] ||= {}
|
46
|
+
prev_context = prev_context[key]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
params
|
52
|
+
end
|
53
|
+
|
54
|
+
def parse_key(key)
|
55
|
+
key.split(/\]\[|\[|\]/)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class Resource
|
2
|
+
attr_reader :pattern
|
3
|
+
|
4
|
+
def initialize(noun, suffix, parent)
|
5
|
+
@noun = noun.to_s
|
6
|
+
@pattern = build_route_pattern(suffix, parent)
|
7
|
+
end
|
8
|
+
|
9
|
+
def build_route_pattern(suffix, parent)
|
10
|
+
base = build_base(parent)
|
11
|
+
Regexp.new(base + @noun + suffix)
|
12
|
+
end
|
13
|
+
|
14
|
+
def build_base(parent)
|
15
|
+
if parent.empty?
|
16
|
+
"^/"
|
17
|
+
else
|
18
|
+
"^/#{parent}/(?<#{parent.singularize}_id>\\d+)/"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def classify
|
23
|
+
klass = Object.const_get(@noun.capitalize + "Controller")
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require_relative './params.rb'
|
2
|
+
|
3
|
+
module WhalesDispatch
|
4
|
+
class Route
|
5
|
+
attr_reader :pattern, :http_method, :controller_class, :action_name
|
6
|
+
|
7
|
+
def initialize(pattern, http_method, controller_class, action_name)
|
8
|
+
@pattern, @http_method = pattern, http_method
|
9
|
+
@controller_class, @action_name = controller_class, action_name
|
10
|
+
end
|
11
|
+
|
12
|
+
def matches?(req)
|
13
|
+
params = Params.new(req)
|
14
|
+
if req.request_method == "POST" && params["_method"]
|
15
|
+
method = params["_method"]
|
16
|
+
else
|
17
|
+
method = req.request_method
|
18
|
+
end
|
19
|
+
|
20
|
+
pattern =~ req.path && http_method == method.downcase.to_sym
|
21
|
+
end
|
22
|
+
|
23
|
+
def run(req, res)
|
24
|
+
matches = pattern.match(req.path)
|
25
|
+
route_params = Hash[matches.names.zip(matches.captures.map(&:to_i))]
|
26
|
+
controller = controller_class.new(req, res, route_params)
|
27
|
+
controller.invoke_action(action_name)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module WhalesDispatch
|
2
|
+
class Router
|
3
|
+
|
4
|
+
attr_reader :routes
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@routes = []
|
8
|
+
@last_parent_route = ""
|
9
|
+
end
|
10
|
+
|
11
|
+
def add_route(pattern, method, controller_class, action_name)
|
12
|
+
@routes << Route.new(pattern, method, controller_class, action_name)
|
13
|
+
end
|
14
|
+
|
15
|
+
def draw(&proc)
|
16
|
+
instance_eval(&proc)
|
17
|
+
end
|
18
|
+
|
19
|
+
def resources(controller_noun, scope, **action_restrictions)
|
20
|
+
@last_parent_route = "" if scope == :parent
|
21
|
+
controller_actions = DefaultActions.new(controller_noun)
|
22
|
+
controller_actions.parse_action_restrictions(action_restrictions)
|
23
|
+
build_resources(controller_noun, controller_actions)
|
24
|
+
|
25
|
+
if block_given?
|
26
|
+
@last_parent_route = controller_noun.to_s
|
27
|
+
yield
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def build_resources(controller_noun, controller_actions)
|
32
|
+
controller_actions.actions.each do |action_name, action_hash|
|
33
|
+
|
34
|
+
resource = Resource.new(
|
35
|
+
controller_noun, action_hash[:suffix], @last_parent_route
|
36
|
+
)
|
37
|
+
|
38
|
+
send action_hash[:method], resource.pattern, resource.classify, action_name
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
[:get, :post, :put, :delete].each do |http_method|
|
43
|
+
define_method(http_method) do |pattern, controller_class, action_name|
|
44
|
+
add_route(pattern, http_method, controller_class, action_name)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def match(req)
|
49
|
+
routes.select { |route| route.matches?(req) }.first
|
50
|
+
end
|
51
|
+
|
52
|
+
def run(req, res)
|
53
|
+
route = match(req)
|
54
|
+
if route
|
55
|
+
route.run(req, res)
|
56
|
+
else
|
57
|
+
res.status = 404
|
58
|
+
res.body = "Could not find matching route."
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'webrick'
|
3
|
+
|
4
|
+
module WhalesDispatch
|
5
|
+
class Session
|
6
|
+
|
7
|
+
def initialize(request)
|
8
|
+
request.cookies.each do |cookie|
|
9
|
+
@value = JSON.parse(cookie.value) if cookie.name == '_rails_lite_app'
|
10
|
+
end
|
11
|
+
@value ||= {}
|
12
|
+
end
|
13
|
+
|
14
|
+
def [](key)
|
15
|
+
@value[key.to_s] || @value[key.to_sym]
|
16
|
+
end
|
17
|
+
|
18
|
+
def []=(key, value)
|
19
|
+
@value[key.to_s] = value
|
20
|
+
end
|
21
|
+
|
22
|
+
def store_session(response)
|
23
|
+
cookie = WEBrick::Cookie.new('_rails_lite_app', @value.to_json)
|
24
|
+
cookie.path = '/'
|
25
|
+
response.cookies << cookie
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'whales_actions/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "whales_actions"
|
8
|
+
spec.version = WhalesActions::VERSION
|
9
|
+
spec.authors = ["William Horton"]
|
10
|
+
spec.email = ["wdt.horton@gmail.com"]
|
11
|
+
spec.summary = %q{The VC in the Whales MVC framework}
|
12
|
+
spec.homepage = "https://github.com/wdhorton/whales/tree/master/whales_actions"
|
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.10"
|
19
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
20
|
+
|
21
|
+
spec.add_development_dependency "rspec"
|
22
|
+
spec.add_development_dependency "guard"
|
23
|
+
spec.add_development_dependency "guard-rspec"
|
24
|
+
spec.add_development_dependency "pry"
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,152 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: whales_actions
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- William Horton
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-12-09 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.10'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.10'
|
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: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: guard
|
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: guard-rspec
|
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: pry
|
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
|
+
description:
|
98
|
+
email:
|
99
|
+
- wdt.horton@gmail.com
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- ".rspec"
|
105
|
+
- Gemfile
|
106
|
+
- Gemfile.lock
|
107
|
+
- Guardfile
|
108
|
+
- LICENSE.txt
|
109
|
+
- README.md
|
110
|
+
- Rakefile
|
111
|
+
- lib/views/cats/index.html.erb
|
112
|
+
- lib/views/cats/new.html.erb
|
113
|
+
- lib/views/my_controller/counting_show.html.erb
|
114
|
+
- lib/views/my_controller/flash_show.html.erb
|
115
|
+
- lib/views/my_controller/show.html.erb
|
116
|
+
- lib/whales_actions.rb
|
117
|
+
- lib/whales_actions/version.rb
|
118
|
+
- lib/whales_controller/base.rb
|
119
|
+
- lib/whales_dispatch/default_actions.rb
|
120
|
+
- lib/whales_dispatch/flash.rb
|
121
|
+
- lib/whales_dispatch/params.rb
|
122
|
+
- lib/whales_dispatch/resource.rb
|
123
|
+
- lib/whales_dispatch/route.rb
|
124
|
+
- lib/whales_dispatch/router.rb
|
125
|
+
- lib/whales_dispatch/session.rb
|
126
|
+
- whales_actions.gemspec
|
127
|
+
homepage: https://github.com/wdhorton/whales/tree/master/whales_actions
|
128
|
+
licenses:
|
129
|
+
- MIT
|
130
|
+
metadata: {}
|
131
|
+
post_install_message:
|
132
|
+
rdoc_options: []
|
133
|
+
require_paths:
|
134
|
+
- lib
|
135
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0'
|
145
|
+
requirements: []
|
146
|
+
rubyforge_project:
|
147
|
+
rubygems_version: 2.5.0
|
148
|
+
signing_key:
|
149
|
+
specification_version: 4
|
150
|
+
summary: The VC in the Whales MVC framework
|
151
|
+
test_files: []
|
152
|
+
has_rdoc:
|