fume 0.8.1a → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +3 -1
- data/VERSION +1 -1
- data/fume.gemspec +3 -17
- data/lib/fume.rb +4 -10
- data/lib/fume/app_setting_loader.rb +2 -3
- data/lib/fume/rails_ext.rb +29 -33
- data/lib/fume/railtie.rb +7 -7
- data/lib/fume/render_cache.rb +56 -44
- data/lib/fume/simple_nav.rb +4 -2
- metadata +40 -25
- data/lib/fume/authlogic.rb +0 -34
- data/lib/fume/cancan.rb +0 -43
- data/rails_generators/fume/fume_generator.rb +0 -55
- data/rails_generators/fume/rspec/rspec_gen.rb +0 -8
- data/rails_generators/fume/rspec/templates/spec/support/erb_macros.rb +0 -18
- data/rails_generators/fume/rspec/templates/spec/support/fume_controller_macros.rb +0 -118
- data/spec/fume/cancan_spec.rb +0 -13
data/CHANGELOG.md
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.9.0
|
data/fume.gemspec
CHANGED
@@ -18,23 +18,9 @@ Gem::Specification.new do |s|
|
|
18
18
|
|
19
19
|
|
20
20
|
# rails
|
21
|
-
s.
|
22
|
-
s.
|
23
|
-
|
24
|
-
# require library
|
25
|
-
s.add_runtime_dependency "hashie", ">= 1.2.0"
|
26
|
-
|
27
|
-
# library
|
28
|
-
# s.add_runtime_dependency "timeliness", "~> 0.3.4"
|
29
|
-
# s.add_runtime_dependency "addressable", "~> 2.2.6"
|
30
|
-
|
31
|
-
# rails plugin
|
32
|
-
# s.add_runtime_dependency "authlogic", "~> 3.0.3"
|
33
|
-
# s.add_runtime_dependency "formtastic", "~> 1.2.4"
|
34
|
-
# s.add_runtime_dependency "cancan", "~> 1.6.5"
|
35
|
-
# s.add_runtime_dependency "symbolize", "~> 3.2.0"
|
36
|
-
# s.add_runtime_dependency "meta_search", "~> 1.0.6"
|
37
|
-
# s.add_runtime_dependency "kaminari", "~> 0.12.4"
|
21
|
+
s.add_dependency "rails", "~> 3.2.7"
|
22
|
+
s.add_dependency "rails-i18n", "~> 0.6.5"
|
23
|
+
s.add_dependency "hashie", ">= 1.2.0"
|
38
24
|
|
39
25
|
# development
|
40
26
|
s.add_development_dependency "version"
|
data/lib/fume.rb
CHANGED
@@ -1,24 +1,18 @@
|
|
1
1
|
require "active_support"
|
2
|
-
require File.expand_path("../fume/railtie", __FILE__)
|
3
|
-
|
4
|
-
# 3rd gems
|
5
2
|
require "rails-i18n"
|
6
3
|
|
7
|
-
|
8
4
|
module Fume
|
9
|
-
|
5
|
+
VERSION = File.read(File.expand_path("../../VERSION", __FILE__)).chomp
|
10
6
|
|
11
|
-
|
7
|
+
extend ActiveSupport::Autoload
|
12
8
|
autoload :RailsExt
|
13
|
-
autoload :Cancan
|
14
9
|
autoload :SimpleNav
|
15
10
|
autoload :AppSettingLoader
|
16
11
|
autoload :RenderCache
|
17
12
|
|
18
|
-
VERSION = File.read(File.expand_path("../../VERSION", __FILE__)).chomp
|
19
|
-
|
20
13
|
def self.load_tasks
|
21
14
|
Dir[File.expand_path("../tasks/*.rake", __FILE__)].each { |ext| load ext }
|
22
15
|
end
|
23
|
-
|
24
16
|
end
|
17
|
+
|
18
|
+
require File.expand_path("../fume/railtie", __FILE__)
|
data/lib/fume/rails_ext.rb
CHANGED
@@ -1,22 +1,19 @@
|
|
1
1
|
module Fume
|
2
2
|
module RailsExt
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
|
4
|
+
def self.init!
|
5
|
+
if defined? ::ActionController::Base
|
6
|
+
::ActionController::Base.send :include, ControllerExtensions
|
6
7
|
end
|
7
8
|
|
8
|
-
if defined? ::
|
9
|
-
::
|
9
|
+
if defined? ::ActionView::Base
|
10
|
+
::ActionView::Base.send :include, HelperExtensions
|
10
11
|
end
|
11
12
|
end
|
12
13
|
|
13
|
-
module
|
14
|
-
|
15
|
-
|
16
|
-
module ClassMethods
|
17
|
-
def last_updated_at
|
18
|
-
self.reorder("").select("MAX(#{self.table_name}.updated_at) AS updated_at").first.try(:updated_at)
|
19
|
-
end
|
14
|
+
module HelperExtensions
|
15
|
+
def ok_url_tag
|
16
|
+
hidden_field_tag "ok_url", params[:ok_url] if !params[:ok_url].blank?
|
20
17
|
end
|
21
18
|
end
|
22
19
|
|
@@ -43,32 +40,31 @@ module Fume
|
|
43
40
|
end
|
44
41
|
end
|
45
42
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
else
|
57
|
-
request.protocol + request.host_with_port + public_path(source)
|
58
|
-
end
|
43
|
+
protected
|
44
|
+
def redirect_to_ok_url_or_default(default)
|
45
|
+
redirect_to params[:ok_url] || default
|
46
|
+
end
|
47
|
+
|
48
|
+
def public_url(source)
|
49
|
+
if source.include?("://")
|
50
|
+
source
|
51
|
+
else
|
52
|
+
"#{request.protocol}#{request.host_with_port}#{public_path(source)}"
|
59
53
|
end
|
54
|
+
end
|
60
55
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
56
|
+
def public_path(source)
|
57
|
+
url = url_for(source)
|
58
|
+
return url if url.include?("://")
|
59
|
+
|
60
|
+
if url.start_with?(request.script_name)
|
61
|
+
url
|
62
|
+
else
|
63
|
+
"#{request.script_name}#{url}"
|
68
64
|
end
|
69
65
|
end
|
66
|
+
|
70
67
|
end
|
71
|
-
|
72
68
|
end
|
73
69
|
end
|
74
70
|
|
data/lib/fume/railtie.rb
CHANGED
@@ -3,13 +3,13 @@ require "rails/railtie"
|
|
3
3
|
module Fume
|
4
4
|
class Railtie < ::Rails::Railtie
|
5
5
|
initializer 'fume.initialize', :after => :after_initialize do |app|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
6
|
+
RailsExt.init!
|
7
|
+
RenderCache.init!
|
8
|
+
SimpleNav.init!
|
9
|
+
end
|
10
|
+
|
11
|
+
initializer "fume.after_initialize", :after => :after_initialize do |app|
|
12
|
+
AppSettingLoader.init!
|
13
13
|
end
|
14
14
|
|
15
15
|
rake_tasks do
|
data/lib/fume/render_cache.rb
CHANGED
@@ -1,69 +1,81 @@
|
|
1
1
|
module Fume
|
2
2
|
module RenderCache
|
3
3
|
|
4
|
-
def self.
|
5
|
-
if defined? ::ActionController
|
6
|
-
ActionController::Base.send :include, ControllerExtensions
|
4
|
+
def self.init!
|
5
|
+
if defined? ::ActionController::Base
|
6
|
+
::ActionController::Base.send :include, ControllerExtensions
|
7
|
+
end
|
8
|
+
|
9
|
+
if defined? ::ActiveRecord::Base
|
10
|
+
::ActiveRecord::Base.send :include, ActiveRecordExtensions
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
module ActiveRecordExtensions
|
15
|
+
extend ::ActiveSupport::Concern
|
16
|
+
|
17
|
+
module ClassMethods
|
18
|
+
def last_updated_at
|
19
|
+
self.reorder("").select("MAX(#{self.table_name}.updated_at) AS updated_at").first.try(:updated_at)
|
20
|
+
end
|
7
21
|
end
|
8
22
|
end
|
9
23
|
|
10
24
|
module ControllerExtensions
|
11
|
-
extend ActiveSupport::Concern
|
25
|
+
extend ::ActiveSupport::Concern
|
12
26
|
|
13
27
|
included do
|
14
28
|
attr_accessor :render_cache_params
|
15
29
|
around_filter RenderCacheFilter.new
|
16
30
|
end
|
17
31
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
cache = Rails.cache
|
24
|
-
|
25
|
-
fragment = cache.read(key)
|
26
|
-
if fragment
|
27
|
-
response.charset = fragment[:charset]
|
28
|
-
response.content_type = fragment[:content_type]
|
29
|
-
self.response_body = fragment[:body].html_safe
|
30
|
-
else
|
31
|
-
yield if block_given?
|
32
|
+
protected
|
33
|
+
def render_cache(key, options = {})
|
34
|
+
if self.class.perform_caching
|
35
|
+
key = build_render_cache_key(key)
|
36
|
+
cache = Rails.cache
|
32
37
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
end
|
38
|
+
fragment = cache.read(key)
|
39
|
+
if fragment
|
40
|
+
response.charset = fragment[:charset]
|
41
|
+
response.content_type = fragment[:content_type]
|
42
|
+
self.response_body = fragment[:body].html_safe
|
39
43
|
else
|
40
44
|
yield if block_given?
|
41
|
-
end
|
42
45
|
|
46
|
+
self.render_cache_params = {
|
47
|
+
:key => key,
|
48
|
+
:options => options,
|
49
|
+
:cache => cache
|
50
|
+
}
|
51
|
+
end
|
52
|
+
else
|
53
|
+
yield if block_given?
|
43
54
|
end
|
44
55
|
|
45
|
-
|
46
|
-
base = "render@#{params[:controller]}/#{params[:action]}.#{params[:format]}"
|
47
|
-
key = self.key_to_string(key)
|
48
|
-
"#{base}##{key}"
|
49
|
-
end
|
56
|
+
end
|
50
57
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
obj.keys.sort.map { |k| "#{k}=#{self.key_to_string(obj[k])}" }.join("&")
|
57
|
-
when Array
|
58
|
-
obj.map { |val| self.key_to_string(val) }.join(",")
|
59
|
-
when Time, Date
|
60
|
-
obj.to_s(:db)
|
61
|
-
else
|
62
|
-
obj.to_s
|
63
|
-
end
|
64
|
-
end
|
58
|
+
def build_render_cache_key(key)
|
59
|
+
base = "render@#{params[:controller]}/#{params[:action]}.#{params[:format]}"
|
60
|
+
key = self.key_to_string(key)
|
61
|
+
"#{base}##{key}"
|
62
|
+
end
|
65
63
|
|
64
|
+
def key_to_string(obj)
|
65
|
+
case obj
|
66
|
+
when nil
|
67
|
+
"nil!"
|
68
|
+
when Hash
|
69
|
+
obj.keys.sort.map { |k| "#{k}=#{self.key_to_string(obj[k])}" }.join("&")
|
70
|
+
when Array
|
71
|
+
obj.map { |val| self.key_to_string(val) }.join(",")
|
72
|
+
when Time, Date
|
73
|
+
obj.to_s(:db)
|
74
|
+
else
|
75
|
+
obj.to_s
|
76
|
+
end
|
66
77
|
end
|
78
|
+
|
67
79
|
end
|
68
80
|
|
69
81
|
class RenderCacheFilter
|
data/lib/fume/simple_nav.rb
CHANGED
@@ -3,8 +3,10 @@ require "hashie"
|
|
3
3
|
module Fume
|
4
4
|
module SimpleNav
|
5
5
|
|
6
|
-
def self.
|
7
|
-
ActionView::Base
|
6
|
+
def self.init!
|
7
|
+
if defined? ::ActionView::Base
|
8
|
+
::ActionView::Base.send :include, HelperExtensions
|
9
|
+
end
|
8
10
|
end
|
9
11
|
|
10
12
|
module HelperExtensions
|
metadata
CHANGED
@@ -1,41 +1,51 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fume
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.9.0
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Sunteya
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-08-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 3.2.
|
21
|
+
version: 3.2.7
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 3.2.7
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: rails-i18n
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ~>
|
31
36
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.
|
37
|
+
version: 0.6.5
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.6.5
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: hashie
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: 1.2.0
|
44
54
|
type: :runtime
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.2.0
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: version
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,7 +69,12 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
description: a simple rails scaffold.
|
59
79
|
email:
|
60
80
|
- Sunteya@gmail.com
|
@@ -71,8 +91,6 @@ files:
|
|
71
91
|
- fume.gemspec
|
72
92
|
- lib/fume.rb
|
73
93
|
- lib/fume/app_setting_loader.rb
|
74
|
-
- lib/fume/authlogic.rb
|
75
|
-
- lib/fume/cancan.rb
|
76
94
|
- lib/fume/rails_ext.rb
|
77
95
|
- lib/fume/railtie.rb
|
78
96
|
- lib/fume/render_cache.rb
|
@@ -85,11 +103,6 @@ files:
|
|
85
103
|
- lib/generators/fume/simple_scaffold/templates/index.html.erb
|
86
104
|
- lib/generators/fume/simple_scaffold/templates/new.html.erb
|
87
105
|
- lib/tasks/cache.rake
|
88
|
-
- rails_generators/fume/fume_generator.rb
|
89
|
-
- rails_generators/fume/rspec/rspec_gen.rb
|
90
|
-
- rails_generators/fume/rspec/templates/spec/support/erb_macros.rb
|
91
|
-
- rails_generators/fume/rspec/templates/spec/support/fume_controller_macros.rb
|
92
|
-
- spec/fume/cancan_spec.rb
|
93
106
|
- spec/spec.opts
|
94
107
|
- spec/spec_helper.rb
|
95
108
|
homepage: http://github.com/sunteya/fume
|
@@ -106,20 +119,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
106
119
|
version: '0'
|
107
120
|
segments:
|
108
121
|
- 0
|
109
|
-
hash:
|
122
|
+
hash: -559507536724635748
|
110
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
124
|
none: false
|
112
125
|
requirements:
|
113
|
-
- - ! '
|
126
|
+
- - ! '>='
|
114
127
|
- !ruby/object:Gem::Version
|
115
|
-
version:
|
128
|
+
version: '0'
|
129
|
+
segments:
|
130
|
+
- 0
|
131
|
+
hash: -559507536724635748
|
116
132
|
requirements: []
|
117
133
|
rubyforge_project:
|
118
|
-
rubygems_version: 1.8.
|
134
|
+
rubygems_version: 1.8.24
|
119
135
|
signing_key:
|
120
136
|
specification_version: 3
|
121
137
|
summary: a simple rails scaffold.
|
122
138
|
test_files:
|
123
|
-
- spec/fume/cancan_spec.rb
|
124
139
|
- spec/spec.opts
|
125
140
|
- spec/spec_helper.rb
|
data/lib/fume/authlogic.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
module Fume
|
2
|
-
module Authlogic
|
3
|
-
def self.try_enable(app)
|
4
|
-
if defined? ::Authlogic
|
5
|
-
ActionController::Base.send :include, ControllerExtensions
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
module ControllerExtensions
|
10
|
-
extend ActiveSupport::Concern
|
11
|
-
|
12
|
-
included do
|
13
|
-
helper_method :current_user_session, :current_user
|
14
|
-
end
|
15
|
-
|
16
|
-
module InstanceMethods
|
17
|
-
|
18
|
-
protected
|
19
|
-
def current_user_session
|
20
|
-
return @current_user_session if defined?(@current_user_session)
|
21
|
-
@current_user_session = UserSession.find
|
22
|
-
end
|
23
|
-
|
24
|
-
def current_user
|
25
|
-
return @current_user if defined?(@current_user)
|
26
|
-
@current_user = current_user_session && current_user_session.user
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
|
data/lib/fume/cancan.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
module Fume
|
2
|
-
module Cancan
|
3
|
-
def self.try_enable(app)
|
4
|
-
if defined? ::CanCan
|
5
|
-
ActionController::Base.send :include, ControllerExtensions
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
module ControllerExtensions
|
10
|
-
extend ActiveSupport::Concern
|
11
|
-
|
12
|
-
module ClassMethods
|
13
|
-
|
14
|
-
def authorize_object(options = {})
|
15
|
-
filter_options = options.slice(:only, :except) if options.is_a?(Hash)
|
16
|
-
before_filter(filter_options || {}) do |controller|
|
17
|
-
controller.send :authorize_object!, options
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
module InstanceMethods
|
24
|
-
|
25
|
-
protected
|
26
|
-
def authorize_object!(options)
|
27
|
-
action = params[:action].to_sym
|
28
|
-
case options
|
29
|
-
when Hash
|
30
|
-
authorize! action, options[:object]
|
31
|
-
else
|
32
|
-
authorize! action, options
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
|
@@ -1,55 +0,0 @@
|
|
1
|
-
class FumeGenerator < Rails::Generator::Base
|
2
|
-
|
3
|
-
attr_accessor :gen
|
4
|
-
delegate :source_path, :destination_path, :manifest, :after_generate, :replay, :to => :gen
|
5
|
-
|
6
|
-
def initialize(runtime_args, runtime_options = {})
|
7
|
-
super
|
8
|
-
|
9
|
-
usage if args.empty?
|
10
|
-
gen_name = args.shift
|
11
|
-
|
12
|
-
gen_path = File.join(spec.path, gen_name)
|
13
|
-
gen_spec = Fume::Gen::Spec.new(gen_name, gen_path, gen_path)
|
14
|
-
|
15
|
-
@gen = gen_spec.klass.new(runtime_args, runtime_options)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
|
-
module Fume
|
21
|
-
module Gen
|
22
|
-
class Base < Rails::Generator::Base
|
23
|
-
def destination_root_pathname
|
24
|
-
Pathname.new(self.destination_root)
|
25
|
-
end
|
26
|
-
|
27
|
-
def source_root_pathname
|
28
|
-
Pathname.new(self.source_root)
|
29
|
-
end
|
30
|
-
|
31
|
-
def cp_files(m, pattern)
|
32
|
-
Pathname.glob(source_root_pathname.join(pattern)) do |source_path|
|
33
|
-
relative_path = source_path.relative_path_from(source_root_pathname)
|
34
|
-
destination_path = destination_root_pathname.join(relative_path)
|
35
|
-
|
36
|
-
if source_path.directory?
|
37
|
-
m.directory relative_path unless destination_path.exist?
|
38
|
-
else
|
39
|
-
m.file relative_path.to_s, relative_path.to_s
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
class Spec < Rails::Generator::Spec
|
46
|
-
def class_file
|
47
|
-
"#{path}/#{name}_gen.rb"
|
48
|
-
end
|
49
|
-
|
50
|
-
def class_name
|
51
|
-
"#{name.camelize}Gen"
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module ErbMacros
|
2
|
-
def self.included(base)
|
3
|
-
base.send :extend, ClassMethods
|
4
|
-
base.send :include, InstanceMethods
|
5
|
-
end
|
6
|
-
|
7
|
-
module ClassMethods
|
8
|
-
end
|
9
|
-
|
10
|
-
module InstanceMethods
|
11
|
-
def render_template(template)
|
12
|
-
erb = ERB.new(template.read)
|
13
|
-
tmp_file = Tempfile.new("erb")
|
14
|
-
File.open(tmp_file.path, "wb") { |f| f.write(erb.result(binding)) }
|
15
|
-
tmp_file
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,118 +0,0 @@
|
|
1
|
-
module FumeControllerMacros
|
2
|
-
def self.included(base)
|
3
|
-
base.send :extend, ClassMethods
|
4
|
-
base.send :include, InstanceMethods
|
5
|
-
end
|
6
|
-
|
7
|
-
module ClassMethods
|
8
|
-
|
9
|
-
class ActionMethod < Struct.new(:method, :action)
|
10
|
-
def to_proc
|
11
|
-
eval <<-EOV
|
12
|
-
Proc.new do |params|
|
13
|
-
#{method} "#{action}", params
|
14
|
-
end
|
15
|
-
EOV
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
%w{ get post put delete }.each do |name|
|
20
|
-
define_method(name) do |*actions|
|
21
|
-
[ actions ].flatten.map do |action|
|
22
|
-
ActionMethod.new(name, action)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
|
28
|
-
%w{ be_success be_redirect be_invalid }.each do |be_method|
|
29
|
-
eval %Q[
|
30
|
-
def it_should_#{be_method}_for(*args, &block)
|
31
|
-
options = args.extract_options!() || {}
|
32
|
-
action_methods = args.flatten
|
33
|
-
action_methods.each do |action_method|
|
34
|
-
it "should #{be_method} for \#{action_method.method} :\#{action_method.action} action \#{options[:message]}" do
|
35
|
-
params = {}
|
36
|
-
if block_given?
|
37
|
-
result = self.instance_exec(&block)
|
38
|
-
params = result if result.is_a? Hash
|
39
|
-
end
|
40
|
-
|
41
|
-
self.instance_exec(params, &action_method)
|
42
|
-
response.should #{be_method}
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
]
|
47
|
-
end
|
48
|
-
|
49
|
-
|
50
|
-
def it_should_be_like_restful_resources(options = {}, &block)
|
51
|
-
actions = [ :index, :new, :create, :show, :edit, :update, :destroy ]
|
52
|
-
actions &= [ options[:only] ].flatten if options[:only]
|
53
|
-
actions -= [ options[:except] ].flatten if options[:except]
|
54
|
-
|
55
|
-
if actions.include?(:index)
|
56
|
-
it_should_be_success_for get(:index) do
|
57
|
-
params = instance_exec(&block)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
if actions.include?(:show)
|
62
|
-
it_should_be_success_for get(:show) do
|
63
|
-
params = instance_exec(&block)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
if actions.include?(:new)
|
68
|
-
it_should_be_success_for get(:new) do
|
69
|
-
params = instance_exec(&block)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
if actions.include?(:create)
|
74
|
-
it_should_be_redirect_for post(:create) do
|
75
|
-
params = instance_exec(&block)
|
76
|
-
params.merge(params.delete(:valid_attributes))
|
77
|
-
end
|
78
|
-
|
79
|
-
it_should_be_invalid_for post(:create) do
|
80
|
-
params = instance_exec(&block)
|
81
|
-
params.merge(params.delete(:invalid_attributes))
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
if actions.include?(:edit)
|
86
|
-
it_should_be_success_for get(:edit) do
|
87
|
-
params = instance_exec(&block)
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
if actions.include?(:update)
|
92
|
-
it_should_be_redirect_for put(:update) do
|
93
|
-
params = instance_exec(&block)
|
94
|
-
params.merge(params.delete(:valid_attributes))
|
95
|
-
end
|
96
|
-
|
97
|
-
it_should_be_invalid_for put(:update) do
|
98
|
-
params = instance_exec(&block)
|
99
|
-
params.merge(params.delete(:invalid_attributes))
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
if actions.include?(:destroy)
|
104
|
-
it_should_be_redirect_for delete(:destroy) do
|
105
|
-
params = instance_exec(&block)
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
end # ClassMethods
|
111
|
-
|
112
|
-
module InstanceMethods
|
113
|
-
def be_invalid(*args)
|
114
|
-
be_success(*args)
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
end
|
data/spec/fume/cancan_spec.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Fume::Cancan do
|
4
|
-
before(:each) do
|
5
|
-
Fume::Cancan.try_enable
|
6
|
-
@controller_class = Class.new(ActionController::Base)
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should add method to action controller base" do
|
10
|
-
@controller_class.methods.should be_include "authorize_namespace"
|
11
|
-
@controller_class.instance_methods.should be_include "authorize_namespace"
|
12
|
-
end
|
13
|
-
end
|