dry_crud 0.6.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +41 -36
- data/Rakefile +51 -43
- data/VERSION +1 -1
- data/lib/generators/dry_crud/USAGE +1 -0
- data/lib/generators/dry_crud/dry_crud_generator.rb +20 -0
- data/{rails_generators → lib/generators}/dry_crud/templates/INSTALL +4 -3
- data/{rails_generators → lib/generators}/dry_crud/templates/app/controllers/crud_controller.rb +31 -9
- data/lib/generators/dry_crud/templates/app/controllers/render_inheritable.rb +152 -0
- data/{rails_generators → lib/generators}/dry_crud/templates/app/helpers/crud_helper.rb +4 -4
- data/{rails_generators/dry_crud/templates/lib → lib/generators/dry_crud/templates/app/helpers}/standard_form_builder.rb +0 -0
- data/{rails_generators → lib/generators}/dry_crud/templates/app/helpers/standard_helper.rb +81 -76
- data/{rails_generators/dry_crud/templates/lib → lib/generators/dry_crud/templates/app/helpers}/standard_table_builder.rb +45 -46
- data/{rails_generators → lib/generators}/dry_crud/templates/app/views/crud/_attrs.html.erb +0 -0
- data/lib/generators/dry_crud/templates/app/views/crud/_form.html.erb +1 -0
- data/{rails_generators → lib/generators}/dry_crud/templates/app/views/crud/_list.html.erb +0 -0
- data/{rails_generators → lib/generators}/dry_crud/templates/app/views/crud/edit.html.erb +1 -1
- data/{rails_generators → lib/generators}/dry_crud/templates/app/views/crud/index.html.erb +1 -1
- data/{rails_generators → lib/generators}/dry_crud/templates/app/views/crud/new.html.erb +1 -1
- data/{rails_generators → lib/generators}/dry_crud/templates/app/views/crud/show.html.erb +1 -1
- data/{rails_generators → lib/generators}/dry_crud/templates/app/views/layouts/crud.html.erb +1 -0
- data/lib/generators/dry_crud/templates/app/views/shared/_error_messages.html.erb +10 -0
- data/lib/generators/dry_crud/templates/app/views/shared/_labeled.html.erb +4 -0
- data/{rails_generators → lib/generators}/dry_crud/templates/public/stylesheets/crud.css +5 -5
- data/{rails_generators → lib/generators}/dry_crud/templates/test/crud_test_model.rb +25 -17
- data/{rails_generators → lib/generators}/dry_crud/templates/test/functional/crud_controller_test_helper.rb +36 -32
- data/{rails_generators → lib/generators}/dry_crud/templates/test/functional/crud_test_models_controller_test.rb +17 -4
- data/{rails_generators → lib/generators}/dry_crud/templates/test/unit/crud_helper_test.rb +51 -6
- data/{rails_generators → lib/generators}/dry_crud/templates/test/unit/render_inheritable_test.rb +31 -39
- data/{rails_generators → lib/generators}/dry_crud/templates/test/unit/standard_form_builder_test.rb +0 -0
- data/{rails_generators → lib/generators}/dry_crud/templates/test/unit/standard_helper_test.rb +76 -54
- data/{rails_generators → lib/generators}/dry_crud/templates/test/unit/standard_table_builder_test.rb +42 -40
- data/test/templates/app/views/ajax/ajax.js.rjs +1 -1
- data/test/templates/app/views/ajax/index.html.erb +2 -2
- data/test/templates/app/views/cities/_form.html.erb +1 -1
- data/test/templates/app/views/cities/_list.html.erb +1 -2
- data/test/templates/config/routes.rb +14 -5
- metadata +51 -37
- data/rails_generators/dry_crud/USAGE +0 -1
- data/rails_generators/dry_crud/dry_crud_generator.rb +0 -22
- data/rails_generators/dry_crud/templates/app/views/crud/_form.html.erb +0 -1
- data/rails_generators/dry_crud/templates/app/views/shared/_labeled.html.erb +0 -5
- data/rails_generators/dry_crud/templates/lib/crud_callbacks.rb +0 -55
- data/rails_generators/dry_crud/templates/lib/render_inheritable.rb +0 -118
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry_crud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
|
+
- 1
|
7
8
|
- 0
|
8
|
-
- 6
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 1.0.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Pascal Zumkehr
|
@@ -15,12 +15,26 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-08-31 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
|
-
dependencies:
|
21
|
-
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: rails
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 7
|
30
|
+
segments:
|
31
|
+
- 3
|
32
|
+
- 0
|
33
|
+
version: "3.0"
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
22
36
|
description: |
|
23
|
-
Generates
|
37
|
+
Generates simple and extendable controller, views and helpers that support you to DRY up the CRUD code in your Rails project. Start with these elements and build a clean base to efficiently develop your application upon.
|
24
38
|
|
25
39
|
email: spam@codez.ch
|
26
40
|
executables: []
|
@@ -32,34 +46,34 @@ extra_rdoc_files:
|
|
32
46
|
- README.rdoc
|
33
47
|
- VERSION
|
34
48
|
files:
|
35
|
-
-
|
36
|
-
-
|
37
|
-
-
|
38
|
-
-
|
39
|
-
-
|
40
|
-
-
|
41
|
-
-
|
42
|
-
-
|
43
|
-
-
|
44
|
-
-
|
45
|
-
-
|
46
|
-
-
|
47
|
-
-
|
48
|
-
-
|
49
|
-
-
|
50
|
-
-
|
51
|
-
-
|
52
|
-
-
|
53
|
-
-
|
54
|
-
-
|
55
|
-
-
|
56
|
-
-
|
57
|
-
-
|
58
|
-
-
|
59
|
-
-
|
60
|
-
-
|
61
|
-
-
|
62
|
-
-
|
49
|
+
- lib/generators/dry_crud/dry_crud_generator.rb
|
50
|
+
- lib/generators/dry_crud/templates/app/controllers/crud_controller.rb
|
51
|
+
- lib/generators/dry_crud/templates/app/controllers/render_inheritable.rb
|
52
|
+
- lib/generators/dry_crud/templates/app/helpers/crud_helper.rb
|
53
|
+
- lib/generators/dry_crud/templates/app/helpers/standard_form_builder.rb
|
54
|
+
- lib/generators/dry_crud/templates/app/helpers/standard_helper.rb
|
55
|
+
- lib/generators/dry_crud/templates/app/helpers/standard_table_builder.rb
|
56
|
+
- lib/generators/dry_crud/templates/app/views/crud/_attrs.html.erb
|
57
|
+
- lib/generators/dry_crud/templates/app/views/crud/_form.html.erb
|
58
|
+
- lib/generators/dry_crud/templates/app/views/crud/_list.html.erb
|
59
|
+
- lib/generators/dry_crud/templates/app/views/crud/edit.html.erb
|
60
|
+
- lib/generators/dry_crud/templates/app/views/crud/index.html.erb
|
61
|
+
- lib/generators/dry_crud/templates/app/views/crud/new.html.erb
|
62
|
+
- lib/generators/dry_crud/templates/app/views/crud/show.html.erb
|
63
|
+
- lib/generators/dry_crud/templates/app/views/layouts/crud.html.erb
|
64
|
+
- lib/generators/dry_crud/templates/app/views/shared/_error_messages.html.erb
|
65
|
+
- lib/generators/dry_crud/templates/app/views/shared/_labeled.html.erb
|
66
|
+
- lib/generators/dry_crud/templates/INSTALL
|
67
|
+
- lib/generators/dry_crud/templates/public/stylesheets/crud.css
|
68
|
+
- lib/generators/dry_crud/templates/test/crud_test_model.rb
|
69
|
+
- lib/generators/dry_crud/templates/test/functional/crud_controller_test_helper.rb
|
70
|
+
- lib/generators/dry_crud/templates/test/functional/crud_test_models_controller_test.rb
|
71
|
+
- lib/generators/dry_crud/templates/test/unit/crud_helper_test.rb
|
72
|
+
- lib/generators/dry_crud/templates/test/unit/render_inheritable_test.rb
|
73
|
+
- lib/generators/dry_crud/templates/test/unit/standard_form_builder_test.rb
|
74
|
+
- lib/generators/dry_crud/templates/test/unit/standard_helper_test.rb
|
75
|
+
- lib/generators/dry_crud/templates/test/unit/standard_table_builder_test.rb
|
76
|
+
- lib/generators/dry_crud/USAGE
|
63
77
|
- test/templates/app/controllers/ajax_controller.rb
|
64
78
|
- test/templates/app/controllers/application_controller.rb
|
65
79
|
- test/templates/app/controllers/cities_controller.rb
|
@@ -97,7 +111,7 @@ rdoc_options:
|
|
97
111
|
- --line-numbers
|
98
112
|
- --inline-source
|
99
113
|
require_paths:
|
100
|
-
-
|
114
|
+
- lib
|
101
115
|
required_ruby_version: !ruby/object:Gem::Requirement
|
102
116
|
none: false
|
103
117
|
requirements:
|
@@ -122,6 +136,6 @@ rubyforge_project:
|
|
122
136
|
rubygems_version: 1.3.7
|
123
137
|
signing_key:
|
124
138
|
specification_version: 3
|
125
|
-
summary: Generates DRY
|
139
|
+
summary: Generates DRY and specifically extendable CRUD controller, views and helpers for Rails applications
|
126
140
|
test_files: []
|
127
141
|
|
@@ -1 +0,0 @@
|
|
1
|
-
script/generate dry_crud
|
@@ -1,22 +0,0 @@
|
|
1
|
-
class DryCrudGenerator < Rails::Generator::Base
|
2
|
-
|
3
|
-
def manifest
|
4
|
-
record do |m|
|
5
|
-
# copy everything in template subfolders
|
6
|
-
Dir.chdir(File.join(File.dirname(__FILE__), 'templates')) do
|
7
|
-
Dir.glob("*/**/*").each do |f|
|
8
|
-
if File.directory?(f)
|
9
|
-
m.directory f
|
10
|
-
else
|
11
|
-
m.file f, f
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
#m.template src, dst
|
17
|
-
|
18
|
-
m.readme "INSTALL"
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
<% crud_form %>
|
@@ -1,5 +0,0 @@
|
|
1
|
-
<div class="labeled">
|
2
|
-
<%-# presence is Rails 2.3.8 for label.present? ? label : StandardHelper::EMPTY_STRING -%>
|
3
|
-
<div class="caption"><%= label.presence || StandardHelper::EMPTY_STRING %></div>
|
4
|
-
<div class="value"><%= content.presence || StandardHelper::EMPTY_STRING %></div>
|
5
|
-
</div>
|
@@ -1,55 +0,0 @@
|
|
1
|
-
# Defines before and after callback hooks for render, create, update, save and destroy.
|
2
|
-
# When to execute the callbacks is in the responsibility of the clients of this module.
|
3
|
-
#
|
4
|
-
# The following callbacks may be defined:
|
5
|
-
# * before_create
|
6
|
-
# * after_create
|
7
|
-
# * before_update
|
8
|
-
# * after_update
|
9
|
-
# * before_save
|
10
|
-
# * after_save
|
11
|
-
# * before_destroy
|
12
|
-
# * after_destroy
|
13
|
-
# * before_render_index
|
14
|
-
# * before_render_show
|
15
|
-
# * before_render_new
|
16
|
-
# * before_render_edit
|
17
|
-
#
|
18
|
-
module CrudCallbacks
|
19
|
-
|
20
|
-
def self.included(base)
|
21
|
-
base.send :include, ActiveSupport::Callbacks
|
22
|
-
|
23
|
-
base.define_callbacks :before_create, :after_create,
|
24
|
-
:before_update, :after_update,
|
25
|
-
:before_save, :after_save,
|
26
|
-
:before_destroy, :after_destroy,
|
27
|
-
:before_render_index,
|
28
|
-
:before_render_show,
|
29
|
-
:before_render_new,
|
30
|
-
:before_render_edit
|
31
|
-
end
|
32
|
-
|
33
|
-
protected
|
34
|
-
|
35
|
-
# Helper method the run the given block in between the before and after
|
36
|
-
# callbacks of the given kind.
|
37
|
-
def with_callbacks(kind)
|
38
|
-
return false if callbacks("before_#{kind}".to_sym) == false
|
39
|
-
if result = yield
|
40
|
-
callbacks("after_#{kind}".to_sym)
|
41
|
-
end
|
42
|
-
result
|
43
|
-
end
|
44
|
-
|
45
|
-
def render_callbacks(action)
|
46
|
-
run_callbacks("before_render_#{action}".to_sym) do |result, object|
|
47
|
-
result == false || object.performed?
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def callbacks(kind)
|
52
|
-
run_callbacks(kind) { |result, object| false == result }
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
@@ -1,118 +0,0 @@
|
|
1
|
-
# Allows one to render inheritable views and partials.
|
2
|
-
# If no view file is found for the current controller, the corresponding file
|
3
|
-
# is looked up in its superclass hierarchy. This module must only be
|
4
|
-
# included in the root controller of the desired lookup hierarchy.
|
5
|
-
#
|
6
|
-
# By default, this module only supports direct inheritance over one level. By overriding
|
7
|
-
# the method lookup_path, you may define a custom lookup path. By providing an object
|
8
|
-
# for the 'with' parameter, this path may even be dynamic.
|
9
|
-
module RenderInheritable
|
10
|
-
|
11
|
-
protected
|
12
|
-
|
13
|
-
# Add inheritable_root_path method to includer
|
14
|
-
def self.included(controller_class)
|
15
|
-
controller_class.send(:extend, ClassMethods)
|
16
|
-
|
17
|
-
controller_class.send(:class_variable_set, :@@inheritable_root_controller, controller_class)
|
18
|
-
controller_class.cattr_reader :inheritable_root_controller
|
19
|
-
|
20
|
-
controller_class.helper ViewHelper
|
21
|
-
controller_class.helper_method :inheritable_partial_options
|
22
|
-
end
|
23
|
-
|
24
|
-
# Method from ActionController::Base overriden, so render_inheritable will be
|
25
|
-
# called if the action does not call render explicitly.
|
26
|
-
def default_render
|
27
|
-
render_inheritable :action => action_name
|
28
|
-
end
|
29
|
-
|
30
|
-
# Renders an action or a partial considering the lookup path. Templates
|
31
|
-
# specified in the :action or :partial options are looked up and the most
|
32
|
-
# specific one found will get rendered. The options are directly passed to
|
33
|
-
# the original render method.
|
34
|
-
def render_inheritable(options)
|
35
|
-
if options[:action]
|
36
|
-
inheritable_template_options(options)
|
37
|
-
elsif options[:partial]
|
38
|
-
inheritable_partial_options(options)
|
39
|
-
end
|
40
|
-
render options
|
41
|
-
end
|
42
|
-
|
43
|
-
# Replaces the :template option with the file found in the lookup.
|
44
|
-
def inheritable_template_options(options)
|
45
|
-
file = options.delete(:action)
|
46
|
-
inheritable_file_options(options, :template, file)
|
47
|
-
end
|
48
|
-
|
49
|
-
# Replaces the :partial option with the file found in the lookup.
|
50
|
-
def inheritable_partial_options(options)
|
51
|
-
inheritable_file_options(options, :partial, options[:partial])
|
52
|
-
end
|
53
|
-
|
54
|
-
def inheritable_file_options(options, key, file) #:nodoc:
|
55
|
-
with = options.delete(:with)
|
56
|
-
filename = (key == :partial) ? "_#{file}" : file
|
57
|
-
folder = self.class.find_inheritable_file(filename, default_template_format, with)
|
58
|
-
options[key] = folder.present? ? "#{folder}/#{file}" : file
|
59
|
-
end
|
60
|
-
|
61
|
-
module ClassMethods
|
62
|
-
# Performs a lookup for the given filename and returns the most specific
|
63
|
-
# folder that contains the file.
|
64
|
-
def find_inheritable_file(filename, format = :html, with = nil)
|
65
|
-
inheritable_cache[format.to_sym][filename][with] ||= find_inheritable_artifact(with) do |folder|
|
66
|
-
view_paths.find_template("#{folder}/#{filename}", format).present? rescue false
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
# Performs a lookup for a controller and returns the name of the most specific one found.
|
71
|
-
# This method is primarly usefull when given a 'with' argument, that is used
|
72
|
-
# in a custom lookup_path.
|
73
|
-
def inheritable_controller(with = nil)
|
74
|
-
c = find_inheritable_artifact(with) do |folder|
|
75
|
-
ActionController::Routing.possible_controllers.any? { |c| c == folder }
|
76
|
-
end
|
77
|
-
c || inheritable_root_controller.controller_path
|
78
|
-
end
|
79
|
-
|
80
|
-
# Runs through the lookup path and yields each folder to the passed block.
|
81
|
-
# If the block returns true, this folder is returned and no further lookup
|
82
|
-
# happens. If no folder is found, the nil is returned.
|
83
|
-
def find_inheritable_artifact(with = nil)
|
84
|
-
lookup_path(with).each { |folder| return folder if yield(folder) }
|
85
|
-
nil
|
86
|
-
end
|
87
|
-
|
88
|
-
# An array of controller names / folders, ordered from most specific to most general.
|
89
|
-
# May be dynamic dependening on the passed 'with' argument.
|
90
|
-
# You may override this method in an own controller to customize the lookup path.
|
91
|
-
def lookup_path(with = nil)
|
92
|
-
inheritance_lookup_path
|
93
|
-
end
|
94
|
-
|
95
|
-
# The inheritance path of controllers that is used as default lookup path.
|
96
|
-
def inheritance_lookup_path
|
97
|
-
path = [self]
|
98
|
-
until path.last == inheritable_root_controller
|
99
|
-
path << path.last.superclass
|
100
|
-
end
|
101
|
-
path.collect(&:controller_path)
|
102
|
-
end
|
103
|
-
|
104
|
-
def inheritable_cache #:nodoc:
|
105
|
-
@inheritable_cache ||= Hash.new {|h, k| h[k] = Hash.new {|h, k| h[k] = Hash.new } }
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
module ViewHelper
|
110
|
-
# Because ActionView has a different :render method than ActionController,
|
111
|
-
# this method provides an entry point to use render_inheritable from views.
|
112
|
-
def render_inheritable(options)
|
113
|
-
inheritable_partial_options(options) if options[:partial]
|
114
|
-
render options
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
end
|