sqlpkg 0.2.3.1-x86_64-darwin → 0.2.3.2-x86_64-darwin

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: 50f5759873bba0eabdc6214ff30b1eeb2f65bf32d45bc28fba222d509620cd59
4
- data.tar.gz: eda6aded179023cd46659e86c3f2593bf964610b4dd93b967034d2c35a0a2b4f
3
+ metadata.gz: ecf0a8b23e859d0fdd3dc9bddbaf06da2e84a3ba3915bb834162cd24bb15edb3
4
+ data.tar.gz: bb6e69caab5d62c931c4306b645520accbb68e4e8d885450b88147a69f848316
5
5
  SHA512:
6
- metadata.gz: a3476c50bb2bc17e7a3c9e4eba43c8bdd479b97b85c5fbb2a78467d32a7471d2f883383d61d5d1f9cbf305a6c6549041e9175a059efaa5a3c27221999754eaf9
7
- data.tar.gz: 3c18d0278e414255ffee70320ed734426e38722cf2253f85ba03a857727cfa840c0d723a49adc71477da045f1301e234fadd1cb1cd7ede286abad8a483ce2a20
6
+ metadata.gz: 88c89a39fb35e24e904bcdc5b0d6a08f0fd69817c0fb98733955d391bed047686f1d9ebcb9ca59683f9d5f54c5d410e49366ae7dfd0118aaa0b18cd893b2a3bd
7
+ data.tar.gz: c3ba9ff44ea7527724caa2e42842b382098579ca493b22bfee9859f7882b4a1a02b34e585c64f37347ecbc477349c1a94eef727fe95793108666f36cb4e3f488
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: x86_64-darwin
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.