sqlpkg 0.2.3-x86_64-darwin → 0.2.3.2-x86_64-darwin

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: e9e04850c44988721c00505d0b2a91b72c25801c460d0a6a16d141e8a6af980d
4
- data.tar.gz: b4d650c0e6e5123a9a680908c58622d328f4044ab569b7a878462132f9019eaf
3
+ metadata.gz: ecf0a8b23e859d0fdd3dc9bddbaf06da2e84a3ba3915bb834162cd24bb15edb3
4
+ data.tar.gz: bb6e69caab5d62c931c4306b645520accbb68e4e8d885450b88147a69f848316
5
5
  SHA512:
6
- metadata.gz: '0032913c971c09b9083e5ea9c0c0c61f630d38302a0556660422497cd9f3f46ac6a83f45017833333925be41311f8979e6ecfd764f4ef6a4e0d0527bbcef5f75'
7
- data.tar.gz: a440367bdea4e2274f3d6e9c3ee5fd9990d09c838aa44268a25653afa65cf5a91112d3358dcac3d87b672f4c3235359e16d1c35ef7f9e84625b4af2ce90e75cb
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.
data/exe/sqlpkg CHANGED
@@ -5,7 +5,7 @@ require "sqlpkg/commands"
5
5
 
6
6
  begin
7
7
  command = [Sqlpkg::Commands.executable, *ARGV]
8
- puts command.inspect
8
+ puts command.inspect if ENV["DEBUG"]
9
9
  exec(*command)
10
10
  rescue Sqlpkg::Commands::UnsupportedPlatformException, Sqlpkg::Commands::ExecutableNotFoundException => e
11
11
  warn("ERROR: " + e.message)
@@ -1,3 +1,3 @@
1
1
  module Sqlpkg
2
- VERSION = "0.2.3"
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
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.