dehydrate 0.1.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6bf49ed50b24d847bd9c8c17acd0204258c116b9
4
+ data.tar.gz: 7e7c9e12f7a45f4af0439aa27bb7f518ab820177
5
+ SHA512:
6
+ metadata.gz: 8012c6393f100fb5d08572a695273138395f394e9a670d5c1fd0ace0899413752b17e7affecc127ca7f5b073c3d5e965a4acaa37ee270871c11f16c8f5c282a6
7
+ data.tar.gz: 83132e71565c3c1b63f77c923e1c0eac256078a989615a8f8022673055c132d40a7611fb16c5da6b577560f436f7e54f518ca550f69024988d12f094be636baa
@@ -0,0 +1,15 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+
11
+ # rspec failure tracking
12
+ .rspec_status
13
+
14
+ .DS_Store
15
+
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.4
5
+ before_install: gem install bundler -v 1.15.3
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in dehydrate.gemspec
6
+ gemspec
@@ -0,0 +1,23 @@
1
+ # Dehydrate
2
+
3
+ Welcome to your Dehydrate gem!.This gem provide a method named resourceful which you can use in your controller to make it resourceful and remove duplicacy.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem "dehydrate", path: "url of this repo"
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle install
16
+
17
+ ## Usage
18
+
19
+ Make your controller resourceful by adding "dehydrate" in your controller
20
+
21
+ ## Contributing
22
+
23
+ Bug reports and pull requests are welcome on GitHub at https://github.com/gemventory/dehydrate.
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "dehydrate"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "dehydrate/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "dehydrate"
8
+ spec.version = Dehydrate::VERSION
9
+ spec.authors = ["Ankit", "Yadwinder Paul Singh"]
10
+ spec.email = ["ankitsherawat94@gmail.com", "yadwinderpaul@gmail.com"]
11
+
12
+ spec.summary = %q{Dry up your controllers}
13
+ spec.description = %q{Dry up your controllers}
14
+
15
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
16
+ f.match(%r{^(test|spec|features)/})
17
+ end
18
+ spec.bindir = "exe"
19
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_development_dependency "bundler", "~> 1.15"
23
+ spec.add_development_dependency "rake", "~> 10.0"
24
+ spec.add_development_dependency "rspec", "~> 3.0"
25
+
26
+ spec.add_dependency 'activerecord', '~> 5.0'
27
+ spec.add_dependency 'railties', '~> 5.0', '>= 5.0.0.1'
28
+ end
@@ -0,0 +1,11 @@
1
+ require "dehydrate/version"
2
+ require "active_support"
3
+ require "rails"
4
+ require "dehydrate/railtie"
5
+ require_relative "dehydrate/concern"
6
+
7
+ module Dehydrate
8
+ def dehydrate
9
+ include Dehydrate::Concern
10
+ end
11
+ end
@@ -0,0 +1,160 @@
1
+ module Dehydrate
2
+ module Concern
3
+ extend ActiveSupport::Concern
4
+
5
+
6
+ included do
7
+ before_action :set_parent_resource
8
+ before_action :set_resource, except: [:index, :new, :create, :search]
9
+ end
10
+
11
+
12
+ module ClassMethods
13
+
14
+ def Model
15
+ controller_name.camelcase.singularize.constantize
16
+ end
17
+
18
+ def ParentModel
19
+ nil
20
+ end
21
+
22
+ def ParentRelationName
23
+ nil
24
+ end
25
+
26
+ end
27
+
28
+
29
+ def initialize
30
+ super
31
+ @model_name = self.class.Model.model_name
32
+ @parent_model_name = self.class.ParentModel.model_name if self.class.ParentModel
33
+ end
34
+
35
+ def index
36
+ if params[:query]
37
+ @resources = self.class.Model.where(search_query, *search_args).page params[:page]
38
+ else
39
+ @resources = self.class.Model.page params[:page]
40
+ end
41
+ end
42
+
43
+ def search
44
+ @resources = self.class.Model.where(search_query, *search_args).page params[:page]
45
+ render :index
46
+ end
47
+
48
+ def show
49
+ end
50
+
51
+ def new
52
+ if self.class.ParentModel
53
+ @resource = @parent_resource.send(self.class.Model.model_name.collection).new
54
+ else
55
+ @resource = self.class.Model.new
56
+ end
57
+ end
58
+
59
+ def create
60
+ if self.class.ParentModel
61
+ @resource = @parent_resource.send(self.class.Model.model_name.collection).new resource_params
62
+ else
63
+ @resource = self.class.Model.new resource_params
64
+ end
65
+
66
+ if @resource.save
67
+ successful_creation
68
+ else
69
+ failed_creation
70
+ end
71
+ end
72
+
73
+ def edit
74
+ end
75
+
76
+ def update
77
+ if @resource.update(resource_params)
78
+ successful_updation
79
+ else
80
+ failed_updation
81
+ end
82
+ end
83
+
84
+ def destroy
85
+ if @resource.destroy
86
+ successful_deletion
87
+ else
88
+ failed_deletion
89
+ end
90
+ end
91
+
92
+
93
+ protected
94
+
95
+ def set_parent_resource
96
+ if self.class.ParentModel
97
+ key = "#{self.class.ParentModel.name.underscore}_id".to_sym
98
+ @parent_resource = self.class.ParentModel.find params[key]
99
+ end
100
+ end
101
+
102
+ def set_resource
103
+ @resource = self.class.Model.find params[:id]
104
+ end
105
+
106
+ def search_query
107
+ search_params
108
+ .to_h
109
+ .compact
110
+ .map{ |key, value| "#{key} LIKE ?" }
111
+ .join(" AND ")
112
+ end
113
+
114
+ def search_args
115
+ search_params
116
+ .to_h
117
+ .compact
118
+ .map{ |key, value| "%#{value}%" }
119
+ end
120
+
121
+ def resource_params
122
+ raise "Please define strong params"
123
+ end
124
+
125
+ def search_params
126
+ raise "Please define strong params"
127
+ end
128
+
129
+ def successful_creation
130
+ flash[:success] = "Successfully created #{@model_name.human.humanize}"
131
+ redirect_to action: :show, id: @resource.id
132
+ end
133
+
134
+ def failed_creation(errors = nil)
135
+ flash.now[:alert] = errors ? errors.full_messages : @resource.errors.full_messages
136
+ render :new
137
+ end
138
+
139
+ def successful_updation
140
+ flash[:success] = "Successfully updated #{@model_name.human.humanize}"
141
+ redirect_to action: :show, id: @resource.id
142
+ end
143
+
144
+ def failed_updation(errors = nil)
145
+ flash.now[:alert] = errors ? errors.full_messages : @resource.errors.full_messages
146
+ render :edit
147
+ end
148
+
149
+ def successful_deletion
150
+ flash.now[:success] = "Successfully deleted #{@model_name.human.humanize}"
151
+ redirect_back fallback_location: :root
152
+ end
153
+
154
+ def failed_deletion
155
+ flash.now[:alert] = "Failed to delete #{@model_name.human.humanize}"
156
+ redirect_back fallback_location: :root
157
+ end
158
+
159
+ end
160
+ end
@@ -0,0 +1,11 @@
1
+ require "rails"
2
+
3
+ module Dehydrate
4
+ class Railtie < Rails::Railtie
5
+ initializer "dehydrate.initialize" do
6
+ ActiveSupport.on_load(:action_controller) do
7
+ extend Dehydrate
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ module Dehydrate
2
+ VERSION = "0.1.0"
3
+ end
metadata ADDED
@@ -0,0 +1,134 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dehydrate
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ankit
8
+ - Yadwinder Paul Singh
9
+ autorequire:
10
+ bindir: exe
11
+ cert_chain: []
12
+ date: 2017-10-03 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1.15'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '1.15'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rake
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '10.0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '10.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rspec
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '3.0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '3.0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: activerecord
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '5.0'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '5.0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: railties
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '5.0'
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 5.0.0.1
80
+ type: :runtime
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - "~>"
85
+ - !ruby/object:Gem::Version
86
+ version: '5.0'
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 5.0.0.1
90
+ description: Dry up your controllers
91
+ email:
92
+ - ankitsherawat94@gmail.com
93
+ - yadwinderpaul@gmail.com
94
+ executables: []
95
+ extensions: []
96
+ extra_rdoc_files: []
97
+ files:
98
+ - ".gitignore"
99
+ - ".rspec"
100
+ - ".travis.yml"
101
+ - Gemfile
102
+ - README.md
103
+ - Rakefile
104
+ - bin/console
105
+ - bin/setup
106
+ - dehydrate.gemspec
107
+ - lib/dehydrate.rb
108
+ - lib/dehydrate/concern.rb
109
+ - lib/dehydrate/railtie.rb
110
+ - lib/dehydrate/version.rb
111
+ homepage:
112
+ licenses: []
113
+ metadata: {}
114
+ post_install_message:
115
+ rdoc_options: []
116
+ require_paths:
117
+ - lib
118
+ required_ruby_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ requirements: []
129
+ rubyforge_project:
130
+ rubygems_version: 2.6.12
131
+ signing_key:
132
+ specification_version: 4
133
+ summary: Dry up your controllers
134
+ test_files: []