whales_actions 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 +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:
|