sqlpkg 0.2.3.1-arm64-linux → 0.2.3.2-arm64-linux

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: 589808b16afc5d231e22371f9cb0f81468eb750adcc0687e091d5335648a9a59
4
- data.tar.gz: 3e7586ef47d2a011f0e37ca55571a9728932618b64f0504867e70d37acd99189
3
+ metadata.gz: 487bfd96309d2bd935de0a60673e05d51dd63df2bd139af52217577a1d0a5a02
4
+ data.tar.gz: fb0dcb7d7a22a17e4e8a47257f86df444a29e3e174c0133c99edeab2bba05ec0
5
5
  SHA512:
6
- metadata.gz: eef53cc638e4d8d5b206ca91b260570304079f836d9099e18a6e1ccf9dad7ba2040f17e943e587968d4410caa294b068f5c7aac49e387f422460c670ef27988e
7
- data.tar.gz: 391fd59ccd4efbea2a70b00a4b63324c327ef20fe83d1f83204174ed022e2fb2f5e0ed1a5fe692809bf2c39f93d44c1e391164eea6517c4431dc963e8405f275
6
+ metadata.gz: 7ff8642f56b9c7686873e4ae1bf4d1bdccabef1f52a931b54605e7d98fd1f660085e1e77ea4b225aa30deef94f0ff5defaea3dbff75edf8fb5bc3d9d20254828
7
+ data.tar.gz: 46f9c405a939dcf65650bc1f1f4f49eebcca0fe102cbd2545540d381068cc0b8e8f4b785ec83466025dadade54abd5ed81f72b4578cd54491c8befc04f44cf1d
data/README.md CHANGED
@@ -5,16 +5,19 @@
5
5
  ## Installation
6
6
 
7
7
  Install the gem and add to the application's Gemfile by executing:
8
-
9
- $ bundle add sqlpkg
8
+ ```shell
9
+ bundle add sqlpkg
10
+ ```
10
11
 
11
12
  If bundler is not being used to manage dependencies, install the gem by executing:
12
-
13
- $ gem install sqlpkg
13
+ ```shell
14
+ gem install sqlpkg
15
+ ```
14
16
 
15
17
  After installing the gem, run the installer:
16
-
17
- $ rails generate sqlpkg:install
18
+ ```shell
19
+ rails generate sqlpkg:install
20
+ ```
18
21
 
19
22
  The installer does three things:
20
23
 
@@ -23,8 +26,9 @@ The installer does three things:
23
26
  3. creates an initializer file at `config/initializers/sqlpkg.rb` which will patch the `SQLite3Adapter` to automatically load the extensions installed in the `.sqlpkg/` directory whenever the database is opened
24
27
 
25
28
  Once properly integrated into your Rails application, you can install any extension listed on [the `sqlpkg` registry](https://sqlpkg.org/all/) by executing:
26
-
27
- $ bundle exec sqlpkg install PACKAGE_IDENTIFIER
29
+ ```shell
30
+ bundle exec sqlpkg install PACKAGE_IDENTIFIER
31
+ ```
28
32
 
29
33
  When exploring the [the `sqlpkg` registry](https://sqlpkg.org/all/), the `PACKAGE_IDENTIFIER` needed to install an extension is the title found in the cards, always in `owner/name` format.
30
34
 
@@ -56,7 +60,7 @@ SQLPKG_INSTALL_DIR=.bin
56
60
  ## Usage
57
61
 
58
62
  ```shell
59
- $ bundle exec sqlpkg help
63
+ bundle exec sqlpkg help
60
64
  ┌────────────────────────────────────────────────┐
61
65
  │ sqlpkg is an SQLite package manager. │
62
66
  │ Use it to install or update SQLite extensions. │
@@ -74,6 +78,42 @@ $ bundle exec sqlpkg help
74
78
  └────────────────────────────────────────────────┘
75
79
  ```
76
80
 
81
+ You can get the path to an installed extension using the `Sqlpkg.path_for` method, e.g.:
82
+
83
+ ```ruby
84
+ Sqlpkg.path_for("nalgeon/uuid")
85
+ # => "./.sqlpkg/nalgeon/uuid/uuid.dylib"
86
+ ```
87
+
88
+ You can also use the shorter `.[]` alias:
89
+
90
+ ```ruby
91
+ Sqlpkg["nalgeon/uuid"]
92
+ # => "./.sqlpkg/nalgeon/uuid/uuid.dylib"
93
+ ```
94
+
95
+ If you try to access an extension that hasn't been installed, a `Sqlpkg::ExtensionNotInstalledError` will be raised:
96
+
97
+ ```ruby
98
+ Sqlpkg["nalgeon/ulid"]
99
+ # raises Sqlpkg::ExtensionNotInstalledError
100
+ ```
101
+
102
+ This feature is particulary useful for the [new Rails feature](https://github.com/rails/rails/pull/53827) and [`sqlite3-ruby` feature](https://github.com/sparklemotion/sqlite3-ruby/pull/586) that allows automatically loading extensions via the `extensions` keyword defined in the Rails `config/database.yml` or the `SQLite3::Database.new` method call. You can now use either:
103
+
104
+ ```yaml
105
+ development:
106
+ adapter: sqlite3
107
+ extensions:
108
+ - <%= Sqlpkg.path_for("asg017/ulid") %>
109
+ ```
110
+
111
+ or if you are using `SQLite3::Database` directly:
112
+
113
+ ```ruby
114
+ db = SQLite3::Database.new(":memory:", extensions: [Sqlpkg.path_for("asg017/ulid")])
115
+ ```
116
+
77
117
  ## Development
78
118
 
79
119
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -1,3 +1,3 @@
1
1
  module Sqlpkg
2
- VERSION = "0.2.3.1"
2
+ VERSION = "0.2.3.2"
3
3
  end
data/lib/sqlpkg.rb CHANGED
@@ -1,6 +1,35 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sqlpkg
4
+ DIR = ".sqlpkg"
5
+ FILE_PATTERN = "*.{dylib,so,dll}"
6
+
7
+ Error = Class.new(StandardError)
8
+ ExtensionNotInstalledError = Class.new(Error)
9
+
10
+ class << self
11
+ # File path for identified extension
12
+ # => "./.sqlpkg/nalgeon/uuid/uuid.dylib"
13
+ def path_for(identifier)
14
+ path_glob = File.join(file_dir, identifier, FILE_PATTERN)
15
+ path = Dir.glob(path_glob).first
16
+
17
+ path || raise(ExtensionNotInstalledError, "No extension found for identifier: #{identifier}")
18
+ end
19
+ alias_method :[], :path_for
20
+
21
+ # The directory where `sqlpkg` stores installed extensions
22
+ # => "./.sqlpkg"
23
+ def file_dir
24
+ File.join(__dir__, DIR)
25
+ end
26
+
27
+ # List of file paths for all installed extensions
28
+ # => ["./.sqlpkg/asg017/ulid/ulid0.dylib", "./.sqlpkg/nalgeon/uuid/uuid.dylib"]
29
+ def installed_extension_paths
30
+ Dir.glob File.join(file_dir, "**", FILE_PATTERN)
31
+ end
32
+ end
4
33
  end
5
34
 
6
35
  require_relative "sqlpkg/version"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqlpkg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3.1
4
+ version: 0.2.3.2
5
5
  platform: arm64-linux
6
6
  authors:
7
7
  - Stephen Margheim
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-05-05 00:00:00.000000000 Z
11
+ date: 2024-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  requirements: []
99
- rubygems_version: 3.5.1
99
+ rubygems_version: 3.5.23
100
100
  signing_key:
101
101
  specification_version: 4
102
102
  summary: Integrate sqlpkg with the RubyGems infrastructure.