Skip to content

Commit 6bf4489

Browse files
committed
jruby fixes
Signed-off-by: Samuel Giddins <[email protected]>
1 parent e763968 commit 6bf4489

File tree

4 files changed

+13
-22
lines changed

4 files changed

+13
-22
lines changed

gemstash.gemspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ you push your own private gems as well."
3939
spec.add_runtime_dependency "lru_redux", "~> 1.1"
4040
spec.add_runtime_dependency "psych", ">= 3.2.1"
4141
spec.add_runtime_dependency "puma", "~> 6.1"
42-
spec.add_runtime_dependency "sequel", "~> 5.0"
42+
spec.add_runtime_dependency "sequel", "~> 5.85"
4343
spec.add_runtime_dependency "server_health_check-rack", "~> 0.1"
4444
spec.add_runtime_dependency "sinatra", ">= 1.4", "< 5.0"
4545
spec.add_runtime_dependency "terminal-table", "~> 3.0"
@@ -53,7 +53,7 @@ you push your own private gems as well."
5353
# spec.add_runtime_dependency "mysql2", "~> 0.4"
5454

5555
if RUBY_PLATFORM == "java"
56-
spec.add_runtime_dependency "jdbc-sqlite3", "~> 3.8"
56+
spec.add_runtime_dependency "jdbc-sqlite3", "~> 3.46"
5757
else
5858
# SQLite 3.44+ is required for string_agg support
5959
spec.add_runtime_dependency "sqlite3", ">= 1.68", "< 3.0"

lib/gemstash/compact_index_builder.rb

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ def build_result(force_rebuild: false)
8787
else
8888
ts = Time.now.iso8601
8989
versions_file.create(
90-
compact_index_public_versions(ts), ts
90+
compact_index_public_versions(ts), ts.to_s.sub(/\+00:00\z/, "Z")
9191
)
9292
@result = file.read
9393
resource.save("versions.list" => @result)
@@ -176,14 +176,11 @@ def fetch_resource
176176

177177
def build_result
178178
@result = CompactIndex.info(requirements_and_dependencies)
179-
rescue Sequel::DatabaseError => e
180-
raise "Error building info for #{@name}\n\n```sql\n#{e.sql}\n```\n"
181179
end
182180

183181
private
184182

185183
def requirements_and_dependencies
186-
db_type = DB::Rubygem.db.database_type
187184
DB::Rubygem.association_left_join(versions: :dependencies).
188185
where(name: @name).
189186
where { versions[:indexed] }.
@@ -192,24 +189,17 @@ def requirements_and_dependencies
192189
[versions[:number], versions[:platform], versions[:sha256], versions[:info_checksum], versions[:required_ruby_version], versions[:required_rubygems_version], versions[:created_at]]
193190
end. # rubocop:disable Style/MultilineBlockChain
194191
select_more do
195-
sa = case db_type
196-
when :sqlite then ->(a, b) { string_agg(a, b) }
197-
else ->(a, b) { Sequel.string_agg(a, b) }
198-
end
199-
[sa.call(dependencies[:requirements], "@").order(dependencies[:rubygem_name], dependencies[:id]).as(:dep_req_agg),
200-
sa.call(dependencies[:rubygem_name], ",").order(dependencies[:rubygem_name]).as(:dep_name_agg)]
192+
[coalesce(Sequel.string_agg(dependencies[:requirements], "@").order(dependencies[:rubygem_name], dependencies[:id]), "").as(:dep_req_agg),
193+
coalesce(Sequel.string_agg(dependencies[:rubygem_name], ",").order(dependencies[:rubygem_name]), "").as(:dep_name_agg)]
201194
end. # rubocop:disable Style/MultilineBlockChain
202195
map do |row|
203-
reqs = row[:dep_req_agg]&.split("@")
204-
dep_names = row[:dep_name_agg]&.split(",")
196+
reqs = row[:dep_req_agg].split("@")
197+
dep_names = row[:dep_name_agg].split(",")
205198

206-
raise "Dependencies and requirements are not the same size:\n reqs: #{reqs.inspect}\n dep_names: #{dep_names.inspect}\n row: #{row.inspect}" if dep_names&.size != reqs&.size
199+
raise "Dependencies and requirements are not the same size:\n reqs: #{reqs.inspect}\n dep_names: #{dep_names.inspect}\n row: #{row.inspect}" if dep_names.size != reqs.size
207200

208-
deps = []
209-
if reqs
210-
dep_names.zip(reqs).each do |name, req|
211-
deps << CompactIndex::Dependency.new(name, req)
212-
end
201+
deps = dep_names.zip(reqs).map! do |name, req|
202+
CompactIndex::Dependency.new(name, req)
213203
end
214204

215205
CompactIndex::GemVersion.new(

lib/gemstash/env.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,8 @@ def db
130130
Sequel.connect("jdbc:sqlite:#{db_path}", config.database_connection_config)
131131
else
132132
Sequel.connect("sqlite://#{CGI.escape(db_path)}", config.database_connection_config)
133-
end.tap {|db| raise "SQLite 3.44+ required, have #{db.sqlite_version}" unless db.sqlite_version >= 34_400 }
133+
end
134+
raise "SQLite 3.44+ required, have #{db.sqlite_version}" unless db.sqlite_version >= 34_400
134135
when "postgres", "mysql", "mysql2"
135136
db_url = config[:db_url]
136137
raise "Missing DB URL" unless db_url

spec/integration_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@
127127
it "is a conformant gem server", db_transaction: false do
128128
@gemstash.env.cache.flush
129129
expect(
130-
execute("gem_server_conformance", ["--fail-fast", "--format", "progress", "--tag=~content_length_header"],
130+
execute("gem_server_conformance", ["--format", "progress", "--tag=~content_length_header"],
131131
env: { "UPSTREAM" => host, "GEM_HOST_API_KEY" => auth_key })
132132
).
133133
to exit_success

0 commit comments

Comments
 (0)