activerecord-libsql 0.1.3 → 0.1.4
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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a5d277e702ca4b1efc21294d5627a74553142befa52ea732c3bf6c24e85f0118
|
|
4
|
+
data.tar.gz: 15a1b97a80a4f50785dbd883eb224eda315d034f7dedd34923870cbee4235f9c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b234df8ecb2b8c8d52f02c336bf74a469df4c6a3667882422bb48792b2a395f2ecd562a426124c004b23847d1f38725475cf9861d4e85ad5daa89acb3dcc7715
|
|
7
|
+
data.tar.gz: 69cbc05cad1d6ae3a46c64e744ce32d08a1fa10a787713056b9c61d26b5fea7f8cb458ecd9ac296892bb836896667a72052f12918cecd4d8b05e3ebfa9e62b89
|
|
@@ -119,9 +119,9 @@ module ActiveRecord
|
|
|
119
119
|
super
|
|
120
120
|
end
|
|
121
121
|
|
|
122
|
-
# fork
|
|
123
|
-
#
|
|
124
|
-
#
|
|
122
|
+
# fork 後の子プロセスで呼ばれる。
|
|
123
|
+
# sqlite3 gem の fork safety が接続を強制クローズするため、
|
|
124
|
+
# 参照を破棄して子プロセスで新しい接続を確立できるようにする。
|
|
125
125
|
# AR の ConnectionPool が fork 後に各コネクションに対して呼ぶ。
|
|
126
126
|
def discard!
|
|
127
127
|
@raw_connection = nil
|
|
@@ -106,14 +106,18 @@ module TursoLibsql
|
|
|
106
106
|
|
|
107
107
|
# ローカル SQLite 接続(Embedded Replica 用)
|
|
108
108
|
# sqlite3 gem を使用
|
|
109
|
+
# sqlite3 gem 2.x は fork 後に接続を自動クローズする(ForkSafety)。
|
|
110
|
+
# AR の discard! が @raw_connection を nil にするので、子プロセスでは
|
|
111
|
+
# reconnect が走って新しい接続が確立される。
|
|
109
112
|
class LocalConnection
|
|
110
113
|
def initialize(path, remote_url, token, mode)
|
|
111
114
|
require 'sqlite3'
|
|
112
|
-
@
|
|
113
|
-
@db.results_as_hash = true
|
|
115
|
+
@path = path
|
|
114
116
|
@remote_url = remote_url
|
|
115
117
|
@token = token
|
|
116
118
|
@mode = mode
|
|
119
|
+
@db = SQLite3::Database.new(path)
|
|
120
|
+
@db.results_as_hash = true
|
|
117
121
|
@last_insert_rowid = 0
|
|
118
122
|
@last_affected_rows = 0
|
|
119
123
|
end
|
|
@@ -142,10 +146,18 @@ module TursoLibsql
|
|
|
142
146
|
|
|
143
147
|
def commit_transaction
|
|
144
148
|
@db.execute('COMMIT')
|
|
149
|
+
rescue SQLite3::Exception => e
|
|
150
|
+
# fork 後に接続が強制クローズされた場合など、トランザクションが
|
|
151
|
+
# 既に存在しない状態での COMMIT は無視する
|
|
152
|
+
raise unless e.message.include?('no transaction is active')
|
|
145
153
|
end
|
|
146
154
|
|
|
147
155
|
def rollback_transaction
|
|
148
156
|
@db.execute('ROLLBACK')
|
|
157
|
+
rescue SQLite3::Exception => e
|
|
158
|
+
# fork 後に接続が強制クローズされた場合など、トランザクションが
|
|
159
|
+
# 既に存在しない状態での ROLLBACK は無視する
|
|
160
|
+
raise unless e.message.include?('no transaction is active')
|
|
149
161
|
end
|
|
150
162
|
|
|
151
163
|
attr_reader :last_insert_rowid
|