controller_setter_pattern 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.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/.rspec +2 -0
- data/Gemfile +5 -0
- data/LICENSE +22 -0
- data/README.md +178 -0
- data/Rakefile +7 -0
- data/controller_setter_pattern.gemspec +29 -0
- data/lib/controller_setter_pattern.rb +5 -0
- data/lib/controller_setter_pattern/action_controller.rb +67 -0
- data/lib/controller_setter_pattern/version.rb +6 -0
- data/spec/controller_setter_pattern_spec.rb +68 -0
- data/spec/factories.rb +17 -0
- data/spec/spec_helper.rb +53 -0
- data/spec/support/controllers.rb +43 -0
- data/spec/support/models.rb +25 -0
- data/spec/support/routes.rb +10 -0
- data/spec/support/schema.rb +22 -0
- metadata +188 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 36ee901377eb976f73cfc39346aa635c7063af71
|
4
|
+
data.tar.gz: 7740bd3b21ee8af6e282fb182ac75cdb33026c5c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1fff224ca7116cf0773456103b329f60d4186a3c1ea176f35cd84f5ba8b048b5ba14104e302c17f4970ec4685e931ca0b0a82cec52e4220cd5a53f2996365420
|
7
|
+
data.tar.gz: 1fdbb3904400d9b320a4b10ad7918cf1bdb50d5b78c2b6531bb8cd895b518dd5f5c60630ec9b06bdbd41447883a86be49b5ae9b455a004776e79523ac2bc76dd
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2015 Rodrigo Casara
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
22
|
+
|
data/README.md
ADDED
@@ -0,0 +1,178 @@
|
|
1
|
+
# controller_setter_pattern
|
2
|
+
Pattern for assign instance variables in controllers for use in views, etc.
|
3
|
+
|
4
|
+
## Instalation
|
5
|
+
|
6
|
+
Add `controller_setter_pattern` to your Gemfile:
|
7
|
+
|
8
|
+
```ruby
|
9
|
+
gem "controller_setter_pattern"
|
10
|
+
```
|
11
|
+
|
12
|
+
## Basic usage
|
13
|
+
|
14
|
+
Before setter pattern:
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
class ArticlesController < ApplicationController
|
18
|
+
before_action :set_article, except: [:index, :new, :create]
|
19
|
+
|
20
|
+
# GET /articles
|
21
|
+
def index
|
22
|
+
@articles = Article.all
|
23
|
+
end
|
24
|
+
|
25
|
+
# GET /articles/:id
|
26
|
+
def show; end
|
27
|
+
|
28
|
+
# GET /articles/new
|
29
|
+
def new
|
30
|
+
@article = Article.new
|
31
|
+
end
|
32
|
+
|
33
|
+
# GET /articles/:id/edit
|
34
|
+
def edit; end
|
35
|
+
|
36
|
+
# POST /articles
|
37
|
+
def create
|
38
|
+
@article = Article.new(article_params)
|
39
|
+
|
40
|
+
if @article.save
|
41
|
+
redirect_to @article
|
42
|
+
else
|
43
|
+
render :new
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# PATCH/PUT /articles/:id
|
48
|
+
def update
|
49
|
+
if @article.update(article_params)
|
50
|
+
redirect_to @article
|
51
|
+
else
|
52
|
+
render :edit
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# DELETE /articles/:id
|
57
|
+
def destroy
|
58
|
+
@article.destroy
|
59
|
+
redirect_to articles_path
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
def set_article
|
64
|
+
@article = Article.find(params[:id])
|
65
|
+
end
|
66
|
+
|
67
|
+
def article_params
|
68
|
+
params.require(:article).permit(:title, :text)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
class CommentsController < ApplicationController
|
73
|
+
before_action :set_article
|
74
|
+
before_action :set_comment, except: [:index, :new, :create]
|
75
|
+
|
76
|
+
# POST /articles/:article_id/comments
|
77
|
+
def create
|
78
|
+
@comment = @article.comments.create(comment_params)
|
79
|
+
redirect_to article_path(@article)
|
80
|
+
end
|
81
|
+
|
82
|
+
# DELETE /articles/:article_id/comments/:id
|
83
|
+
def destroy
|
84
|
+
@comment.destroy
|
85
|
+
redirect_to article_path(@article)
|
86
|
+
end
|
87
|
+
|
88
|
+
private
|
89
|
+
def set_article
|
90
|
+
@article = Article.find(params[:article_id])
|
91
|
+
end
|
92
|
+
|
93
|
+
def set_comment
|
94
|
+
@comment = @article.comments.find(params[:id])
|
95
|
+
end
|
96
|
+
|
97
|
+
def comment_params
|
98
|
+
params.require(:comment).permit(:commenter, :body)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
```
|
102
|
+
|
103
|
+
After setter pattern:
|
104
|
+
|
105
|
+
```ruby
|
106
|
+
class ArticlesController < ApplicationController
|
107
|
+
set :article, except: [:index, :new, :create]
|
108
|
+
|
109
|
+
# actions methods ...
|
110
|
+
|
111
|
+
private
|
112
|
+
# setter method no more necessary
|
113
|
+
|
114
|
+
def article_params
|
115
|
+
params.require(:article).permit(:title, :text)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
class CommentsController < ApplicationController
|
120
|
+
set :article
|
121
|
+
set :comment, ancestor: :article, except: [:index, :new, :create]
|
122
|
+
|
123
|
+
# actions methods ...
|
124
|
+
|
125
|
+
private
|
126
|
+
def comment_params
|
127
|
+
params.require(:comment).permit(:commenter, :body)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
```
|
131
|
+
|
132
|
+
In file `app/views/articles/show.html.erb`:
|
133
|
+
|
134
|
+
```erb
|
135
|
+
<p>
|
136
|
+
<strong>Title:</strong>
|
137
|
+
<%= @article.title %>
|
138
|
+
</p>
|
139
|
+
|
140
|
+
<p>
|
141
|
+
<strong>Text:</strong>
|
142
|
+
<%= @article.text %>
|
143
|
+
</p>
|
144
|
+
|
145
|
+
<h2>Comments</h2>
|
146
|
+
<%= render @article.comments %>
|
147
|
+
|
148
|
+
<h2>Add a comment:</h2>
|
149
|
+
<%= render 'comments/form' %>
|
150
|
+
|
151
|
+
<%= link_to 'Edit', edit_article_path(@article) %> |
|
152
|
+
<%= link_to 'Back', articles_path %>
|
153
|
+
```
|
154
|
+
|
155
|
+
## Further configuration
|
156
|
+
|
157
|
+
**Specify the model name:**
|
158
|
+
|
159
|
+
```ruby
|
160
|
+
set :ebook, model: Book
|
161
|
+
# @ebook = Book.find(params[:id])
|
162
|
+
```
|
163
|
+
|
164
|
+
**Specify the parameters key to use to fetch the object:**
|
165
|
+
```ruby
|
166
|
+
set :ebook, model: Book, finder_params: :isbn
|
167
|
+
# @ebook = Book.find_by_isbn(params[:isbn])
|
168
|
+
|
169
|
+
set :ebook, model: Book, finder_params: [:author, :title]
|
170
|
+
# @ebook = Book.find_by_author_and_title(params[:author], params[:title])
|
171
|
+
```
|
172
|
+
|
173
|
+
**Specify the scope:**
|
174
|
+
|
175
|
+
```ruby
|
176
|
+
set :user, scope: :active, finder_params: :email
|
177
|
+
# @user = User.active.find_by_email(params[:email])
|
178
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
$:.push File.expand_path('../lib', __FILE__)
|
2
|
+
|
3
|
+
require 'controller_setter_pattern/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'controller_setter_pattern'
|
7
|
+
s.version = ControllerSetterPattern::VERSION
|
8
|
+
s.authors = ['Rodrigo Casara']
|
9
|
+
s.email = ['rodrigocasara@gmail.com']
|
10
|
+
s.homepage = 'https://github.com/Casara/controller_setter_pattern'
|
11
|
+
s.summary = 'Pattern for assign instance variables in controllers for use in views, etc.'
|
12
|
+
s.description = s.summary
|
13
|
+
s.license = 'MIT'
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
18
|
+
s.require_paths = ['lib']
|
19
|
+
|
20
|
+
s.add_development_dependency 'rspec', '~> 3.2.0'
|
21
|
+
s.add_development_dependency 'rspec-rails', '~> 3.2.1'
|
22
|
+
s.add_development_dependency 'sqlite3'
|
23
|
+
s.add_development_dependency 'database_cleaner', '~> 1.4.1'
|
24
|
+
s.add_development_dependency 'rake'
|
25
|
+
s.add_development_dependency 'actionpack', '~> 4.2.1'
|
26
|
+
s.add_development_dependency 'activesupport', '~> 4.2.1'
|
27
|
+
s.add_development_dependency 'factory_girl_rails', '~> 4.5.0'
|
28
|
+
s.add_development_dependency 'faker', '~> 1.4.3'
|
29
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module ControllerSetterPattern
|
2
|
+
module ActionController
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
module ClassMethods
|
6
|
+
def set(*names)
|
7
|
+
options = names.extract_options!
|
8
|
+
|
9
|
+
model = options.delete(:model)
|
10
|
+
model = model.to_s.camelize.constantize unless model.nil?
|
11
|
+
|
12
|
+
finder_params = normalize_finder_params(options.delete(:finder_params) || [])
|
13
|
+
finder_method = 'find' + (finder_params.empty? ? '' : '_by_' + finder_params.join('_and_'))
|
14
|
+
|
15
|
+
ancestor = options.delete(:ancestor)
|
16
|
+
scope = options.delete(:scope)
|
17
|
+
|
18
|
+
names.each do |variable|
|
19
|
+
before_action options do |controller|
|
20
|
+
if !ancestor.nil?
|
21
|
+
if controller.instance_variable_defined?("@#{ancestor}")
|
22
|
+
resource = controller.instance_variable_get("@#{ancestor}")
|
23
|
+
model_class = resource.class
|
24
|
+
else
|
25
|
+
model_class = ancestor.to_s.camelize.constantize
|
26
|
+
resource = model_class.find(params["#{model_class.name.underscore}_id".to_sym])
|
27
|
+
end
|
28
|
+
reflection_name = (model || variable).to_s.underscore.pluralize.to_sym
|
29
|
+
resource = resource.send(reflection_name) if resource.respond_to?(reflection_name)
|
30
|
+
elsif !model.nil? && model.descends_from_active_record?
|
31
|
+
model_class = model
|
32
|
+
elsif
|
33
|
+
model_class = variable.to_s.camelize.constantize
|
34
|
+
end
|
35
|
+
|
36
|
+
resource ||= model_class
|
37
|
+
|
38
|
+
unless scope.nil?
|
39
|
+
scope = [scope] unless scope.is_a?(Array)
|
40
|
+
scope.each { |s| resource = resource.send(s) }
|
41
|
+
end
|
42
|
+
|
43
|
+
if finder_params.empty?
|
44
|
+
values_for_find = controller.params["#{variable}_id".to_sym] || controller.params[:id]
|
45
|
+
else
|
46
|
+
defaults = finder_params.inject({}) { |h, v| h.merge(v.to_s => nil) }
|
47
|
+
values_for_find = defaults.merge(controller.params.permit(finder_params)).values
|
48
|
+
end
|
49
|
+
|
50
|
+
resource = resource.send(finder_method, *values_for_find)
|
51
|
+
|
52
|
+
var_name = "@#{variable}".to_sym
|
53
|
+
controller.instance_variable_set(var_name, resource)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
def normalize_finder_params(finder_params)
|
60
|
+
finder_params = [finder_params] unless finder_params.is_a?(Array)
|
61
|
+
finder_params = finder_params.compact.uniq
|
62
|
+
finder_params.clear if finder_params.one? && finder_params.join.eql?('id')
|
63
|
+
finder_params
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'rspec/rails'
|
3
|
+
|
4
|
+
describe ControllerSetterPattern do
|
5
|
+
it 'is a model' do
|
6
|
+
expect(ControllerSetterPattern).to be_a(Module)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
describe UsersController, type: :controller do
|
11
|
+
before { FactoryGirl.create_list(:user, 3) }
|
12
|
+
|
13
|
+
let(:user) { User.first }
|
14
|
+
|
15
|
+
subject { assigns(:user) }
|
16
|
+
|
17
|
+
it 'finds the instance with params[:id]' do
|
18
|
+
get :show, id: user.id
|
19
|
+
should be_a(User)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'finds the instance with params[:model_id]' do
|
23
|
+
get :show, user_id: user.id
|
24
|
+
should be_a(User)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe AccountController, type: :controller do
|
29
|
+
before { FactoryGirl.create_list(:user, 3) }
|
30
|
+
|
31
|
+
let(:user) { User.first }
|
32
|
+
|
33
|
+
subject { assigns(:account) }
|
34
|
+
|
35
|
+
context 'with a model name and a parameter key' do
|
36
|
+
it 'finds an instance' do
|
37
|
+
get :resend_password, email: user.email
|
38
|
+
should be_a(User)
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'finds an instance with scope' do
|
42
|
+
user.active!
|
43
|
+
get :profile, username: user.username
|
44
|
+
should be_a(User)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe OrdersController, type: :controller do
|
50
|
+
let(:customer) { FactoryGirl.create(:customer) }
|
51
|
+
|
52
|
+
context 'with ancestor' do
|
53
|
+
it 'finds an instance' do
|
54
|
+
get :show, customer_id: customer.id, id: customer.orders.first.id
|
55
|
+
expect(assigns(:order)).to be_a(Order)
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'assigns based on ancestor model class and model name' do
|
59
|
+
get :edit, customer_id: customer.id, id: customer.orders.last.id
|
60
|
+
expect(assigns(:other_order)).to be_a(Order)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'finds the instance with params keys' do
|
65
|
+
xhr :get, :order_by_customer_date, customer_id: customer.id, order_date: customer.orders.last.order_date.to_date
|
66
|
+
expect(assigns(:order)).to be_a(Order)
|
67
|
+
end
|
68
|
+
end
|
data/spec/factories.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
FactoryGirl.define do
|
2
|
+
factory :user do
|
3
|
+
name { Faker::Name.name }
|
4
|
+
username { Faker::Internet.user_name(name) }
|
5
|
+
email { Faker::Internet.safe_email(username) }
|
6
|
+
end
|
7
|
+
|
8
|
+
factory :customer do
|
9
|
+
name { Faker::Company.name }
|
10
|
+
after(:create) { |customer| create_list(:order, 3, customer: customer) }
|
11
|
+
end
|
12
|
+
|
13
|
+
factory :order do
|
14
|
+
customer
|
15
|
+
order_date { Faker::Date.forward(90) }
|
16
|
+
end
|
17
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'action_controller'
|
2
|
+
require 'active_model'
|
3
|
+
require 'active_record'
|
4
|
+
require 'database_cleaner'
|
5
|
+
require 'logger'
|
6
|
+
require 'faker'
|
7
|
+
require 'factory_girl_rails'
|
8
|
+
require 'controller_setter_pattern'
|
9
|
+
|
10
|
+
module Rails
|
11
|
+
class App
|
12
|
+
def env_config; {} end
|
13
|
+
def routes
|
14
|
+
@routes ||= ActionDispatch::Routing::RouteSet.new
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.application
|
19
|
+
@app ||= App.new
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: ':memory:'
|
24
|
+
ActiveRecord::Base.logger = Logger.new(File.join(File.dirname(__FILE__), '../log/debug.log'))
|
25
|
+
|
26
|
+
# now that we have the database configured, we can create the models and
|
27
|
+
# migrate the database
|
28
|
+
require 'support/models'
|
29
|
+
require 'support/controllers'
|
30
|
+
|
31
|
+
RSpec.configure do |config|
|
32
|
+
config.include FactoryGirl::Syntax::Methods
|
33
|
+
|
34
|
+
config.before(:suite) do
|
35
|
+
begin
|
36
|
+
DatabaseCleaner.strategy = :transaction
|
37
|
+
DatabaseCleaner.clean_with(:truncation)
|
38
|
+
DatabaseCleaner.start
|
39
|
+
FactoryGirl.find_definitions
|
40
|
+
FactoryGirl.lint
|
41
|
+
ensure
|
42
|
+
DatabaseCleaner.clean
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
config.before(:each) do
|
47
|
+
DatabaseCleaner.start
|
48
|
+
end
|
49
|
+
|
50
|
+
config.after(:each) do
|
51
|
+
DatabaseCleaner.clean
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
load File.dirname(__FILE__) + '/routes.rb'
|
2
|
+
|
3
|
+
ActionController::Base.include Rails.application.routes.url_helpers
|
4
|
+
|
5
|
+
class UsersController < ActionController::Base
|
6
|
+
set :user, only: :show
|
7
|
+
|
8
|
+
def show
|
9
|
+
render json: @user
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class AccountController < ActionController::Base
|
14
|
+
set :account, model: User, finder_params: :email, only: :resend_password
|
15
|
+
set :account, model: User, scope: :active, finder_params: :username, only: :profile
|
16
|
+
|
17
|
+
def resend_password
|
18
|
+
render text: "An email containing the new password was sent to your inbox (#{@account.email})."
|
19
|
+
end
|
20
|
+
|
21
|
+
def profile
|
22
|
+
render json: @account
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class OrdersController < ActionController::Base
|
27
|
+
set :customer, only: :show
|
28
|
+
set :order, ancestor: :customer, only: :show
|
29
|
+
set :other_order, model: Order, ancestor: :customer, only: :edit
|
30
|
+
set :order, finder_params: [:customer_id, :order_date], only: :order_by_customer_date
|
31
|
+
|
32
|
+
def show
|
33
|
+
render json: @order
|
34
|
+
end
|
35
|
+
|
36
|
+
def edit
|
37
|
+
render text: 'Edit'
|
38
|
+
end
|
39
|
+
|
40
|
+
def order_by_customer_date
|
41
|
+
render json: @order
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
load File.dirname(__FILE__) + '/schema.rb'
|
2
|
+
|
3
|
+
class User < ActiveRecord::Base
|
4
|
+
has_many :social_networks
|
5
|
+
|
6
|
+
enum status: {
|
7
|
+
passive: 0,
|
8
|
+
pending: 1,
|
9
|
+
active: 2,
|
10
|
+
locked: 3
|
11
|
+
}
|
12
|
+
|
13
|
+
validates_uniqueness_of :email, case_sensitive: false
|
14
|
+
validates_uniqueness_of :username, case_sensitive: false
|
15
|
+
|
16
|
+
before_save { |record| record.status = 'pending' if record.passive? }
|
17
|
+
end
|
18
|
+
|
19
|
+
class Customer < ActiveRecord::Base
|
20
|
+
has_many :orders, dependent: :destroy
|
21
|
+
end
|
22
|
+
|
23
|
+
class Order < ActiveRecord::Base
|
24
|
+
belongs_to :customer
|
25
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
Rails.application.routes.draw do
|
2
|
+
get 'user/(:id)' => 'users#show'
|
3
|
+
|
4
|
+
get 'resend_password/:email' => 'account#resend_password'
|
5
|
+
get 'profile/:username' => 'account#profile'
|
6
|
+
|
7
|
+
get 'customers/:customer_id/orders/:id' => 'orders#show'
|
8
|
+
get 'customers/:customer_id/orders/:id/edit' => 'orders#edit', as: :edit
|
9
|
+
get 'order_by_customer_date' => 'orders#order_by_customer_date'
|
10
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
ActiveRecord::Schema.define do
|
2
|
+
self.verbose = false
|
3
|
+
|
4
|
+
create_table :users, force: true do |t|
|
5
|
+
t.integer :status, default: 0
|
6
|
+
t.string :name
|
7
|
+
t.string :username, unique: true
|
8
|
+
t.string :email, unique: true
|
9
|
+
t.timestamps null: false
|
10
|
+
end
|
11
|
+
|
12
|
+
create_table :customers, force: true do |t|
|
13
|
+
t.string :name
|
14
|
+
t.timestamps null: false
|
15
|
+
end
|
16
|
+
|
17
|
+
create_table :orders, force: true do |t|
|
18
|
+
t.belongs_to :customer, index: true
|
19
|
+
t.datetime :order_date
|
20
|
+
t.timestamps null: false
|
21
|
+
end
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,188 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: controller_setter_pattern
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Rodrigo Casara
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-05-04 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.2.0
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.2.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec-rails
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 3.2.1
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 3.2.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: sqlite3
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: database_cleaner
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.4.1
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.4.1
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: actionpack
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 4.2.1
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 4.2.1
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: activesupport
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 4.2.1
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 4.2.1
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: factory_girl_rails
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 4.5.0
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 4.5.0
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: faker
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 1.4.3
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 1.4.3
|
139
|
+
description: Pattern for assign instance variables in controllers for use in views,
|
140
|
+
etc.
|
141
|
+
email:
|
142
|
+
- rodrigocasara@gmail.com
|
143
|
+
executables: []
|
144
|
+
extensions: []
|
145
|
+
extra_rdoc_files: []
|
146
|
+
files:
|
147
|
+
- ".gitignore"
|
148
|
+
- ".rspec"
|
149
|
+
- Gemfile
|
150
|
+
- LICENSE
|
151
|
+
- README.md
|
152
|
+
- Rakefile
|
153
|
+
- controller_setter_pattern.gemspec
|
154
|
+
- lib/controller_setter_pattern.rb
|
155
|
+
- lib/controller_setter_pattern/action_controller.rb
|
156
|
+
- lib/controller_setter_pattern/version.rb
|
157
|
+
- spec/controller_setter_pattern_spec.rb
|
158
|
+
- spec/factories.rb
|
159
|
+
- spec/spec_helper.rb
|
160
|
+
- spec/support/controllers.rb
|
161
|
+
- spec/support/models.rb
|
162
|
+
- spec/support/routes.rb
|
163
|
+
- spec/support/schema.rb
|
164
|
+
homepage: https://github.com/Casara/controller_setter_pattern
|
165
|
+
licenses:
|
166
|
+
- MIT
|
167
|
+
metadata: {}
|
168
|
+
post_install_message:
|
169
|
+
rdoc_options: []
|
170
|
+
require_paths:
|
171
|
+
- lib
|
172
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
173
|
+
requirements:
|
174
|
+
- - ">="
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: '0'
|
177
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - ">="
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0'
|
182
|
+
requirements: []
|
183
|
+
rubyforge_project:
|
184
|
+
rubygems_version: 2.4.6
|
185
|
+
signing_key:
|
186
|
+
specification_version: 4
|
187
|
+
summary: Pattern for assign instance variables in controllers for use in views, etc.
|
188
|
+
test_files: []
|