calib-rails 0.1.9 → 0.1.10

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 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