controller_scaffolder 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/controller_scaffolder.rb +72 -0
  3. metadata +58 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f9037017674a03acb1737448dc3a3e7face8dc32
4
+ data.tar.gz: 36d42223a310b8b081acacb9d1888041ccf86300
5
+ SHA512:
6
+ metadata.gz: 43cdd75b95ef52823c4acc91c55ade4302eebc1ede12e10cc42d6117efa8a22f20386c3a4ba7c7ab6f17b84ab4536c2e5f2814d3c3e04e0f34e41da4c5365005
7
+ data.tar.gz: 9915e298e0a8011d81a1c029ac0021e97bad78a8e72bcd7e60a92e1483356cecd143df27a1b280bb24af162b510d75924e368743739d79328532afcb7a8285a8
@@ -0,0 +1,72 @@
1
+ module ControllerScaffolder
2
+
3
+ def scaffold! user_options = {}
4
+ resource = user_options[:resource] || self.to_s.underscore.split("/").last.split("_")[0..-2].join("_")
5
+
6
+ options = {
7
+ singular: resource.singularize,
8
+ plural: resource.pluralize,
9
+ instance_member: "@#{resource.singularize}",
10
+ instance_collection: "@#{resource.pluralize}",
11
+ model_name: resource.singularize.camelize
12
+ }
13
+
14
+ options.merge!(user_options)
15
+
16
+ class_eval %{
17
+ before_action :set_#{options[:singular]}, only: [ :show, :edit, :update, :destroy ]
18
+
19
+ def index
20
+ #{options[:instance_collection]} = #{options[:model_name]}.all
21
+ end
22
+
23
+ def show
24
+ end
25
+
26
+ def new
27
+ #{options[:instance_member]} = #{options[:model_name]}.new
28
+ end
29
+
30
+ def edit
31
+ end
32
+
33
+ def create
34
+ #{options[:instance_member]} = #{options[:model_name]}.new(#{options[:singular]}_params)
35
+
36
+ if #{options[:instance_member]}.save
37
+ redirect_to #{options[:instance_member]}, notice: '#{options[:singular].humanize} was successfully created.'
38
+ else
39
+ render action: 'new'
40
+ end
41
+ end
42
+
43
+ def update
44
+ if #{options[:instance_member]}.update(#{options[:singular]}_params)
45
+ redirect_to #{options[:instance_member]}, notice: '#{options[:singular].humanize} was successfully updated.'
46
+ else
47
+ render action: 'edit'
48
+ end
49
+ end
50
+
51
+ def destroy
52
+ #{options[:instance_member]}.destroy
53
+ redirect_to #{options[:plural]}_path, notice: '#{options[:singular].humanize} was successfully destroyed.'
54
+ end
55
+
56
+ private
57
+
58
+ def set_#{options[:singular]}
59
+ #{options[:instance_member]} = #{options[:model_name]}.find(params[:id])
60
+ end
61
+
62
+ def #{options[:singular]}_params
63
+ params.require(:#{options[:singular]}).permit(#{options[:permitted_fields]})
64
+ end
65
+ }
66
+ end
67
+
68
+ end
69
+
70
+ class ActionController::Base
71
+ extend ::ControllerScaffolder
72
+ end
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: controller_scaffolder
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Alexander Skiba
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-09-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 4.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 4.0.0
27
+ description: Easily scaffold RESTful controllers
28
+ email: skiba-alex@ya.ru
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/controller_scaffolder.rb
34
+ homepage: http://github.com/lacrosse/controller_scaffolder
35
+ licenses:
36
+ - MIT
37
+ metadata: {}
38
+ post_install_message:
39
+ rdoc_options: []
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - '>='
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ requirements: []
53
+ rubyforge_project:
54
+ rubygems_version: 2.0.3
55
+ signing_key:
56
+ specification_version: 4
57
+ summary: Easily scaffold controllers
58
+ test_files: []