calib-rails 0.1.9 → 0.1.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3c136ae28f6cd9225817e20d584b8fe3a10c2eeb94fb0954cb0e5c35203f361b
4
- data.tar.gz: c355b4cba03b6b191d0cbf0a47e0830cb09a9c11e7fdfbf1428bb8b800311474
3
+ metadata.gz: bfdcbe8fbfa7c4b62dcc3527dc8979d03f5c491690c832b7b9ec8f0d083ae05e
4
+ data.tar.gz: 5df15af026bd6823fbd0f262fe91faa1edd3307f99b81eb45eddbadee8c98409
5
5
  SHA512:
6
- metadata.gz: b327099d26cef807af1c22101dd7600c36c9ccd1469e79b2c382dc9024c3f9e1c5a611980f9cecac1bdfad141272a3db7344222da71d04a019ba40724ad95df2
7
- data.tar.gz: 6f7adea3885ab9dc94ad99bd8b7ab83bd7037259a66af3d1b336738c33aaa7bb0ce83131afabdd3913bcd470095db215ad261568d7bf9603bb3d04b71d959b17
6
+ metadata.gz: 66445fec8cff243bafa2e060f5a650741fd0a51004d968159604314997ce4e39e569d91fbe85ae9919e3f4d54b95e0ea21d31ccdb2c086c7e51ee27a97f0420f
7
+ data.tar.gz: 71fc441f650e9858bf7a82a40b8051539731f8f0fa857738147fae855101cadb639cbee5a1c9249518fb6344552827c2659b641ad6525454602e782a2552d0e2
@@ -2,19 +2,20 @@
2
2
  # authenticated status stored in session.
3
3
  # avoid frequently logging in
4
4
  #
5
- # [usage]
6
- # class ApplicationController < ActionController::Base
7
- # include Calib::Controllers::BasicAuth
8
- # basic_auth(user: 'myuser', pass: 'secret')
9
- # ...
10
- # end
5
+ # === usage
6
+ # class ApplicationController < ActionController::Base
7
+ # include Calib::Controllers::BasicAuth
8
+ # basic_auth(user: 'myuser', pass: 'secret')
9
+ # ...
10
+ # end
11
11
  #
12
- # basic_auth # read ENV['BASIC_AUTH_USER'] and ENV['BASIC_AUTH_PASS']
13
- # basic_auth(user: 'myuser', pass: 'secret') # standard
12
+ # === options
13
+ # basic_auth # read ENV['BASIC_AUTH_USER'] and ENV['BASIC_AUTH_PASS']
14
+ # basic_auth(user: 'myuser', pass: 'secret') # standard
14
15
  #
15
- # basic_auth(user: 'myuser', pass: 'secret') do
16
- # request.domain != 'localhost' # localhost is unblocked domain.
17
- # end
16
+ # basic_auth(user: 'myuser', pass: 'secret') do |request|
17
+ # request.domain != 'localhost' # localhost is unblocked domain.
18
+ # end
18
19
  module Calib::Controllers::BasicAuth
19
20
  extend ActiveSupport::Concern
20
21
 
@@ -5,7 +5,7 @@ module Calib::Delegatable
5
5
  def self.delegate_all(targets)
6
6
  targets = Array(targets)
7
7
  define_method('method_missing') do |method, *args|
8
- target = targets.find {|target| target.respond_to?(method) }
8
+ target = targets.find {|t| t.respond_to?(method) }
9
9
  return target.send(method, *args) if target.present?
10
10
  super
11
11
  end
@@ -2,11 +2,11 @@
2
2
  # Redirect back to current page after sign in.
3
3
  # @see https://github.com/plataformatec/devise/wiki/How-To:-Redirect-back-to-current-page-after-sign-in,-sign-out,-sign-up,-update
4
4
  #
5
- # [usage]
6
- # class ApplicationController < ActionController::Base
7
- # include Calib::Devise::FriendlyForwardable
8
- # ...
9
- # end
5
+ # === usage
6
+ # class ApplicationController < ActionController::Base
7
+ # include Calib::Devise::FriendlyForwardable
8
+ # ...
9
+ # end
10
10
  module Calib::Devise::FriendlyForwardable
11
11
  extend ActiveSupport::Concern
12
12
 
@@ -1,20 +1,27 @@
1
- # on schema:
1
+ # == Soft deletation for devise
2
+ # use with SoftDeletionMigrationEnhancable
2
3
  #
3
- # with coulumn for soft_deleted_flag
4
- # t.integer "alive", default: 1
4
+ # === usage
5
+ # include to Devise Model.
5
6
  #
6
- # unique index
7
- # [for postgresql] # partial indexes
8
- # t.index ["email", "alive"], name: "index_users_on_email_and_alive", unique: true, where: "(alive = 1)"
9
- # [for mysql] # ignoring null column
10
- # t.index ["email", "alive"], name: "index_users_on_email_and_alive", unique: true
7
+ # class User < ApplicationRecord
8
+ # include Calib::Devise::SoftDeletion
11
9
  #
10
+ # devise :database_authenticatable, :registerable,
11
+ # :recoverable, :rememberable, :trackable, :validatable,
12
+ # :confirmable
13
+ #
14
+ # devise_soft_deletable # call below `device` method
15
+ #
16
+ # ...
17
+ # end
12
18
  module Calib::Devise::SoftDeletion
13
19
  extend ActiveSupport::Concern
14
20
 
15
21
  included do
16
22
  class_attribute :alive_column_name
17
23
 
24
+ # initialize method to call on Devise Model.
18
25
  def self.devise_soft_deletable(alive_column_name = :alive)
19
26
  self.alive_column_name = alive_column_name
20
27
 
@@ -41,18 +48,22 @@ module Calib::Devise::SoftDeletion
41
48
  end
42
49
  end
43
50
 
51
+ # check canceled
44
52
  def canceled?
45
53
  self.alive_value == nil
46
54
  end
47
55
 
56
+ # do soft destroy
48
57
  def soft_destroy
49
58
  save if pre_destroy
50
59
  end
51
60
 
61
+ # do soft destroy!
52
62
  def soft_destroy!
53
63
  save! if pre_destroy
54
64
  end
55
65
 
66
+ # get alive_column_value
56
67
  def alive_value
57
68
  self.send(self.class.alive_column_name)
58
69
  end
@@ -1,3 +1,30 @@
1
+ # == A Module for migration with soft deletation
2
+ # 1. unique email to ununique
3
+ # 2. email and _filter_column_ to composite unique
4
+ # 3. add colunn _caneled_at_column_ for storing canceled datetime
5
+ #
6
+ # === usage
7
+ # create migration file
8
+ #
9
+ # class ChangeForSoftDeletationToUsers < ActiveRecord::Migration[5.1]
10
+ # include Calib::Devise::SoftDeletionMigrationEnhancable
11
+ # def change
12
+ # change_for_device_soft_deletion(:users)
13
+ # end
14
+ # end
15
+ #
16
+ # do migration
17
+ #
18
+ # and results on schema.rb:
19
+ #
20
+ # # with coulumn for soft_deleted_flag
21
+ # t.integer "alive", default: 1
22
+ #
23
+ # # unique indexes
24
+ # # [for postgresql] - partial indexes -
25
+ # t.index ["email", "alive"], name: "index_users_on_email_and_alive", unique: true, where: "(alive = 1)"
26
+ # # [for mysql] - ignoring null column -
27
+ # t.index ["email", "alive"], name: "index_users_on_email_and_alive", unique: true
1
28
  module Calib::Devise::SoftDeletionMigrationEnhancable
2
29
  include Calib::SoftDeletion::MigrationEnhancable
3
30
 
@@ -1,5 +1,5 @@
1
1
  module Calib
2
2
  module Rails
3
- VERSION = '0.1.9'
3
+ VERSION = '0.1.10'
4
4
  end
5
5
  end
@@ -1,14 +1,32 @@
1
+ # == A Module for soft deletation on MySQL and PostgreSQL.
2
+ # with unique constraints(`deleted_at = nil` couldn't do it).
3
+ #
4
+ # === usage
5
+ # create migration file
6
+ #
7
+ # # Inlude this Modlule and edit.
8
+ # class AddNameToUsers < ActiveRecord::Migration[5.1]
9
+ # include Calib::SoftDeletion::MigrationEnhancable
10
+ # def change
11
+ # add_unique_column_for_soft_deletion :users, :name
12
+ # end
13
+ # end
14
+ #
15
+ # and migrate
1
16
  module Calib::SoftDeletion::MigrationEnhancable
17
+ # add unique column with soft deletation column as _filter_column_
2
18
  def add_unique_column_for_soft_deletion(table, unique_column, filter_column = :alive)
3
19
  add_column_for_soft_deletion(table, filter_column)
4
20
  add_unique_index_for_soft_deletion(table, unique_column, filter_column)
5
21
  end
6
22
 
23
+ # add column for soft deletation as _filter_column_
7
24
  def add_column_for_soft_deletion(table, filter_column = :alive)
8
25
  # @see https://qiita.com/yuba/items/70165875cfe02b03513d
9
26
  add_column table, filter_column, :integer, default: 1 # if canceled, alive=NULL for MYSQL
10
27
  end
11
28
 
29
+ # add unique index with soft deletation column as _filter_column_
12
30
  def add_unique_index_for_soft_deletion(table, unique_column, filter_column = :alive)
13
31
  if connection.adapter_name == 'MySQL'
14
32
  add_index table, [unique_column, filter_column], unique: true
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: calib-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - ms2sato
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-09 00:00:00.000000000 Z
11
+ date: 2018-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails