governor 0.2.3 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/VERSION +1 -1
- data/app/controllers/governor/articles_controller.rb +17 -37
- data/app/views/governor/articles/_form.html.erb +1 -1
- data/app/views/governor/articles/_form.html.haml +26 -0
- data/governor.gemspec +6 -2
- data/lib/governor/plugin.rb +6 -1
- data/lib/governor/rails/routes.rb +1 -1
- data/spec/action_dispatch/routing/mapper_spec.rb +1 -1
- data/spec/controllers/governor/articles_controller_spec.rb +32 -1
- data/spec/rails_app/Gemfile.lock +1 -1
- data/spec/rails_app/app/views/governor/articles/index.xml.builder +5 -0
- data/spec/rails_app/config/initializers/governor_testing.rb +4 -0
- data/spec/rails_app/spec/factories.rb +1 -0
- metadata +8 -4
data/Gemfile.lock
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
@@ -7,38 +7,34 @@ class Governor::ArticlesController < ApplicationController
|
|
7
7
|
|
8
8
|
helper Governor::Controllers::Helpers
|
9
9
|
|
10
|
+
respond_to :html
|
11
|
+
Governor::PluginManager.plugins.each do |plugin|
|
12
|
+
plugin.mimes.each{|mimes| respond_to *mimes.dup }
|
13
|
+
end
|
14
|
+
|
10
15
|
# GET /articles
|
11
16
|
# GET /articles.xml
|
12
17
|
def index
|
13
18
|
set_resources model_class.paginate :page => params[:page], :order => 'created_at DESC'
|
14
|
-
|
15
|
-
format.html # index.html.erb
|
16
|
-
format.xml { render :xml => resources }
|
17
|
-
end
|
19
|
+
respond_with resources
|
18
20
|
end
|
19
21
|
|
20
22
|
# GET /articles/1
|
21
23
|
# GET /articles/1.xml
|
22
24
|
def show
|
23
|
-
|
24
|
-
format.html # show.html.erb
|
25
|
-
format.xml { render :xml => resource }
|
26
|
-
end
|
25
|
+
respond_with resource
|
27
26
|
end
|
28
27
|
|
29
28
|
# GET /articles/new
|
30
29
|
# GET /articles/new.xml
|
31
30
|
def new
|
32
31
|
set_resource model_class.new
|
33
|
-
|
34
|
-
respond_to do |format|
|
35
|
-
format.html # new.html.erb
|
36
|
-
format.xml { render :xml => resource }
|
37
|
-
end
|
32
|
+
respond_with resource
|
38
33
|
end
|
39
34
|
|
40
35
|
# GET /articles/1/edit
|
41
36
|
def edit
|
37
|
+
respond_with resource
|
42
38
|
end
|
43
39
|
|
44
40
|
# POST /articles
|
@@ -46,43 +42,27 @@ class Governor::ArticlesController < ApplicationController
|
|
46
42
|
def create
|
47
43
|
set_resource model_class.new(params[mapping.singular])
|
48
44
|
resource.author = the_governor
|
49
|
-
|
50
|
-
|
51
|
-
if resource.save
|
52
|
-
flash[:notice] = "#{mapping.humanize} was successfully created."
|
53
|
-
format.html { redirect_to(resource) }
|
54
|
-
format.xml { render :xml => resource, :status => :created, :location => resource }
|
55
|
-
else
|
56
|
-
format.html { render :action => 'new' }
|
57
|
-
format.xml { render :xml => resource.errors, :status => :unprocessable_entity }
|
58
|
-
end
|
45
|
+
if resource.save
|
46
|
+
flash[:notice] = "#{mapping.humanize} was successfully created."
|
59
47
|
end
|
48
|
+
respond_with resource
|
60
49
|
end
|
61
50
|
|
62
51
|
# PUT /articles/1
|
63
52
|
# PUT /articles/1.xml
|
64
53
|
def update
|
65
|
-
|
66
|
-
|
67
|
-
flash[:notice] = "#{mapping.humanize} was successfully updated."
|
68
|
-
format.html { redirect_to(resource) }
|
69
|
-
format.xml { head :ok }
|
70
|
-
else
|
71
|
-
format.html { render :action => 'edit' }
|
72
|
-
format.xml { render :xml => resource.errors, :status => :unprocessable_entity }
|
73
|
-
end
|
54
|
+
if resource.update_attributes(params[mapping.singular])
|
55
|
+
flash[:notice] = "#{mapping.humanize} was successfully updated."
|
74
56
|
end
|
57
|
+
respond_with resource
|
75
58
|
end
|
76
59
|
|
77
60
|
# DELETE /articles/1
|
78
61
|
# DELETE /articles/1.xml
|
79
62
|
def destroy
|
80
63
|
resource.destroy
|
81
|
-
|
82
|
-
|
83
|
-
format.html { redirect_to(polymorphic_path(mapping.plural)) }
|
84
|
-
format.xml { head :ok }
|
85
|
-
end
|
64
|
+
flash[:notice] = "#{mapping.humanize} was successfully updated."
|
65
|
+
respond_with resource
|
86
66
|
end
|
87
67
|
|
88
68
|
def find_by_date
|
@@ -0,0 +1,26 @@
|
|
1
|
+
= error_messages_for resource_sym
|
2
|
+
|
3
|
+
= form_for resource do |f|
|
4
|
+
%p
|
5
|
+
%b= f.label :title
|
6
|
+
%br
|
7
|
+
= f.text_field :title
|
8
|
+
|
9
|
+
%p
|
10
|
+
%b= f.label :description
|
11
|
+
%br
|
12
|
+
= f.text_field :description
|
13
|
+
|
14
|
+
%p#article_text
|
15
|
+
%b= f.label :post
|
16
|
+
%br
|
17
|
+
~ f.text_area :post
|
18
|
+
|
19
|
+
%p
|
20
|
+
%b= f.label :format
|
21
|
+
= f.select :format, Governor::Formatters.available_formatters.keys
|
22
|
+
|
23
|
+
= render_plugin_partial('bottom_of_form', :locals => {:f => f})
|
24
|
+
|
25
|
+
%p
|
26
|
+
= f.submit "#{controller.action_name.titleize} Article"
|
data/governor.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{governor}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Liam Morley"]
|
12
|
-
s.date = %q{2011-04-
|
12
|
+
s.date = %q{2011-04-16}
|
13
13
|
s.description = %q{Because Blogojevich would be too tough to remember. It's a pluggable blogging system for Rails 3.}
|
14
14
|
s.email = %q{liam@carpeliam.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
|
|
29
29
|
"app/helpers/governor_helper.rb",
|
30
30
|
"app/views/governor/articles/_article.html.erb",
|
31
31
|
"app/views/governor/articles/_form.html.erb",
|
32
|
+
"app/views/governor/articles/_form.html.haml",
|
32
33
|
"app/views/governor/articles/edit.html.erb",
|
33
34
|
"app/views/governor/articles/index.html.erb",
|
34
35
|
"app/views/governor/articles/new.html.erb",
|
@@ -71,6 +72,7 @@ Gem::Specification.new do |s|
|
|
71
72
|
"spec/rails_app/app/helpers/home_helper.rb",
|
72
73
|
"spec/rails_app/app/models/article.rb",
|
73
74
|
"spec/rails_app/app/models/user.rb",
|
75
|
+
"spec/rails_app/app/views/governor/articles/index.xml.builder",
|
74
76
|
"spec/rails_app/app/views/home/index.html.erb",
|
75
77
|
"spec/rails_app/app/views/layouts/application.html.erb",
|
76
78
|
"spec/rails_app/config.ru",
|
@@ -84,6 +86,7 @@ Gem::Specification.new do |s|
|
|
84
86
|
"spec/rails_app/config/initializers/backtrace_silencers.rb",
|
85
87
|
"spec/rails_app/config/initializers/devise.rb",
|
86
88
|
"spec/rails_app/config/initializers/governor.rb",
|
89
|
+
"spec/rails_app/config/initializers/governor_testing.rb",
|
87
90
|
"spec/rails_app/config/initializers/inflections.rb",
|
88
91
|
"spec/rails_app/config/initializers/mime_types.rb",
|
89
92
|
"spec/rails_app/config/initializers/secret_token.rb",
|
@@ -141,6 +144,7 @@ Gem::Specification.new do |s|
|
|
141
144
|
"spec/rails_app/config/initializers/backtrace_silencers.rb",
|
142
145
|
"spec/rails_app/config/initializers/devise.rb",
|
143
146
|
"spec/rails_app/config/initializers/governor.rb",
|
147
|
+
"spec/rails_app/config/initializers/governor_testing.rb",
|
144
148
|
"spec/rails_app/config/initializers/inflections.rb",
|
145
149
|
"spec/rails_app/config/initializers/mime_types.rb",
|
146
150
|
"spec/rails_app/config/initializers/secret_token.rb",
|
data/lib/governor/plugin.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
module Governor
|
2
2
|
class Plugin
|
3
|
-
attr_reader :name, :migrations, :routes, :resources, :helpers
|
3
|
+
attr_reader :name, :migrations, :routes, :resources, :helpers, :mimes
|
4
4
|
def initialize(name)
|
5
5
|
@name = name
|
6
6
|
@migrations = []
|
7
7
|
@helpers = []
|
8
8
|
@resources = {}
|
9
9
|
@partials = {}
|
10
|
+
@mimes = []
|
10
11
|
end
|
11
12
|
|
12
13
|
def add_migration(path)
|
@@ -86,5 +87,9 @@ module Governor
|
|
86
87
|
def register_model_callback(&block)
|
87
88
|
@model_callback = block
|
88
89
|
end
|
90
|
+
|
91
|
+
def responds_to(*mimes)
|
92
|
+
@mimes << mimes
|
93
|
+
end
|
89
94
|
end
|
90
95
|
end
|
@@ -20,7 +20,7 @@ module ActionDispatch #:nodoc:
|
|
20
20
|
mapping = Governor.map(resource, options)
|
21
21
|
resources mapping.resource, :controller => mapping.controller, :governor_mapping => resource do
|
22
22
|
Governor::PluginManager.plugins.map{|p| p.routes }.each do |routes|
|
23
|
-
instance_eval(&routes)
|
23
|
+
instance_eval(&routes) if routes.present?
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
@@ -4,6 +4,37 @@ module Governor
|
|
4
4
|
describe ArticlesController do
|
5
5
|
include Devise::TestHelpers
|
6
6
|
|
7
|
+
context "which has a plugin with a registered mime response" do
|
8
|
+
# not sure how to add something before the controller is loaded, so I
|
9
|
+
# added an initializer which adds a plugin that registers a type. See
|
10
|
+
# 'governor_testing' in the rails_app/config/initializers directory:
|
11
|
+
#
|
12
|
+
# plugin = Governor::Plugin.new('xml support')
|
13
|
+
# plugin.responds_to :xml, :only => [:index]
|
14
|
+
# Governor::PluginManager.register plugin
|
15
|
+
#
|
16
|
+
render_views
|
17
|
+
it "responds to standard html" do
|
18
|
+
get :index, :governor_mapping => :articles
|
19
|
+
assigns[:articles].should == [@article]
|
20
|
+
response.status.should == 200 # :success
|
21
|
+
end
|
22
|
+
it "doesn't respond to JSON" do
|
23
|
+
get :index, :governor_mapping => :articles, :format => :json
|
24
|
+
response.status.should == 406 # :not_acceptable
|
25
|
+
end
|
26
|
+
it "responds to index.xml because the plugin added it" do
|
27
|
+
get :index, :governor_mapping => :articles, :format => :xml
|
28
|
+
assigns[:articles].should == [@article]
|
29
|
+
response.status.should == 200 # :success
|
30
|
+
response.body.should =~ /It worked/
|
31
|
+
end
|
32
|
+
it "doesn't respond to show.xml" do
|
33
|
+
get :show, :governor_mapping => :articles, :id => @article.id, :format => :xml
|
34
|
+
response.status.should == 406 # :not_acceptable
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
7
38
|
before(:each) do
|
8
39
|
@user = Factory(:user)
|
9
40
|
@article = Factory(:article, :author => @user)
|
@@ -73,7 +104,7 @@ module Governor
|
|
73
104
|
context "when signed in" do
|
74
105
|
before(:each) { sign_in @user }
|
75
106
|
it "creates a new article and redirects to its page" do
|
76
|
-
post :create, :governor_mapping => :articles
|
107
|
+
post :create, :governor_mapping => :articles, :article => {:title => 'Want a job?', :post => 'I accept checks'}
|
77
108
|
assigns[:article].should be_a ::Article
|
78
109
|
assigns[:article].should_not be_a_new_record
|
79
110
|
assigns[:article].author.should == @user
|
data/spec/rails_app/Gemfile.lock
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: governor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
- 2
|
9
8
|
- 3
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 0.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Liam Morley
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-04-
|
18
|
+
date: 2011-04-16 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -219,6 +219,7 @@ files:
|
|
219
219
|
- app/helpers/governor_helper.rb
|
220
220
|
- app/views/governor/articles/_article.html.erb
|
221
221
|
- app/views/governor/articles/_form.html.erb
|
222
|
+
- app/views/governor/articles/_form.html.haml
|
222
223
|
- app/views/governor/articles/edit.html.erb
|
223
224
|
- app/views/governor/articles/index.html.erb
|
224
225
|
- app/views/governor/articles/new.html.erb
|
@@ -261,6 +262,7 @@ files:
|
|
261
262
|
- spec/rails_app/app/helpers/home_helper.rb
|
262
263
|
- spec/rails_app/app/models/article.rb
|
263
264
|
- spec/rails_app/app/models/user.rb
|
265
|
+
- spec/rails_app/app/views/governor/articles/index.xml.builder
|
264
266
|
- spec/rails_app/app/views/home/index.html.erb
|
265
267
|
- spec/rails_app/app/views/layouts/application.html.erb
|
266
268
|
- spec/rails_app/config.ru
|
@@ -274,6 +276,7 @@ files:
|
|
274
276
|
- spec/rails_app/config/initializers/backtrace_silencers.rb
|
275
277
|
- spec/rails_app/config/initializers/devise.rb
|
276
278
|
- spec/rails_app/config/initializers/governor.rb
|
279
|
+
- spec/rails_app/config/initializers/governor_testing.rb
|
277
280
|
- spec/rails_app/config/initializers/inflections.rb
|
278
281
|
- spec/rails_app/config/initializers/mime_types.rb
|
279
282
|
- spec/rails_app/config/initializers/secret_token.rb
|
@@ -359,6 +362,7 @@ test_files:
|
|
359
362
|
- spec/rails_app/config/initializers/backtrace_silencers.rb
|
360
363
|
- spec/rails_app/config/initializers/devise.rb
|
361
364
|
- spec/rails_app/config/initializers/governor.rb
|
365
|
+
- spec/rails_app/config/initializers/governor_testing.rb
|
362
366
|
- spec/rails_app/config/initializers/inflections.rb
|
363
367
|
- spec/rails_app/config/initializers/mime_types.rb
|
364
368
|
- spec/rails_app/config/initializers/secret_token.rb
|