fume 0.8.1a → 0.9.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.
- 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
|