gemstash 1.0.0.pre.3 → 1.0.0.pre.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -0
- data/lib/gemstash/db.rb +2 -0
- data/lib/gemstash/db/cached_rubygem.rb +17 -0
- data/lib/gemstash/db/upstream.rb +12 -0
- data/lib/gemstash/gem_source/upstream_source.rb +9 -1
- data/lib/gemstash/migrations/03_cached_gems.rb +24 -0
- data/lib/gemstash/storage.rb +13 -2
- data/lib/gemstash/version.rb +1 -1
- data/rake/changelog.citrus +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f5a0e21d8484a3788102eb3c17efe992b484f407
|
4
|
+
data.tar.gz: e076bb584f76301f806c8479f1e27d18b5853443
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d1339519304f001e2f9ec394d56dd4826ab9775982f45e804eb8b3e028d50a0efd5c3abf8bbb046291c0dc4ea6463b7b08d7adbe3d64935359f9dec3aa9db39
|
7
|
+
data.tar.gz: 9672f47d249e673d79eb76cc0b943fd13497dba969ad363712c608ace051add7feaddab442554cafa11bd2cf4af4cacfb0b5a3ef9ed39d0b346a7185b9328e7d
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
## 1.0.0.pre.4 (2015-12-23)
|
2
|
+
|
3
|
+
### Upgrade Notes
|
4
|
+
|
5
|
+
Any gems fetched before this release won't be indexed, which means plugins you
|
6
|
+
might install can't know about them. These cached gems might also have
|
7
|
+
incorrect headers stored (which shouldn't affect bundling). If you wish to
|
8
|
+
correct this, you can delete or back up your cache by deleting or moving your
|
9
|
+
`~/.gemstash/gem_cache` directory.
|
10
|
+
|
11
|
+
### Bugfixes
|
12
|
+
|
13
|
+
- Cached gem and spec headers don't clobber each other ([#68](https://github.com/bundler/gemstash/pull/68), [@smellsblue](https://github.com/smellsblue))
|
14
|
+
|
15
|
+
### Features
|
16
|
+
|
17
|
+
- Index cached gems and their upstreams for future use of plugins ([#68](https://github.com/bundler/gemstash/pull/68), [@smellsblue](https://github.com/smellsblue))
|
18
|
+
|
1
19
|
## 1.0.0.pre.3 (2015-12-21)
|
2
20
|
|
3
21
|
### Bugfixes
|
data/lib/gemstash/db.rb
CHANGED
@@ -8,8 +8,10 @@ module Gemstash
|
|
8
8
|
Sequel::Model.raise_on_save_failure = true
|
9
9
|
Sequel::Model.plugin :timestamps, update_on_create: true
|
10
10
|
autoload :Authorization, "gemstash/db/authorization"
|
11
|
+
autoload :CachedRubygem, "gemstash/db/cached_rubygem"
|
11
12
|
autoload :Dependency, "gemstash/db/dependency"
|
12
13
|
autoload :Rubygem, "gemstash/db/rubygem"
|
14
|
+
autoload :Upstream, "gemstash/db/upstream"
|
13
15
|
autoload :Version, "gemstash/db/version"
|
14
16
|
end
|
15
17
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require "gemstash"
|
2
|
+
|
3
|
+
module Gemstash
|
4
|
+
module DB
|
5
|
+
# Sequel model for cached_rubygems table.
|
6
|
+
class CachedRubygem < Sequel::Model
|
7
|
+
def self.store(upstream, gem_name, resource_type)
|
8
|
+
db.transaction do
|
9
|
+
upstream_id = Gemstash::DB::Upstream.find_or_insert(upstream)
|
10
|
+
record = self[upstream_id: upstream_id, name: gem_name.name, resource_type: resource_type.to_s]
|
11
|
+
return record.id if record
|
12
|
+
new(upstream_id: upstream_id, name: gem_name.name, resource_type: resource_type.to_s).tap(&:save).id
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Gemstash
|
2
|
+
module DB
|
3
|
+
# Sequel model for upstreams table.
|
4
|
+
class Upstream < Sequel::Model
|
5
|
+
def self.find_or_insert(upstream)
|
6
|
+
record = self[uri: upstream.to_s]
|
7
|
+
return record.id if record
|
8
|
+
new(uri: upstream.to_s, host_id: upstream.host_id).tap(&:save).id
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -160,7 +160,15 @@ module Gemstash
|
|
160
160
|
def fetch_remote_gem(gem_name, gem_resource, resource_type)
|
161
161
|
log.info "Gem #{gem_name.name} is not cached, fetching #{resource_type}"
|
162
162
|
gem_fetcher.fetch(gem_name.id, resource_type) do |content, properties|
|
163
|
-
|
163
|
+
resource_properties = {
|
164
|
+
upstream: upstream.to_s,
|
165
|
+
gem_name: gem_name.name,
|
166
|
+
headers: { resource_type => properties }
|
167
|
+
}
|
168
|
+
|
169
|
+
gem = gem_resource.save({ resource_type => content }, resource_properties)
|
170
|
+
Gemstash::DB::CachedRubygem.store(upstream, gem_name, resource_type)
|
171
|
+
gem
|
164
172
|
end
|
165
173
|
end
|
166
174
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
Sequel.migration do
|
2
|
+
change do
|
3
|
+
create_table :upstreams do
|
4
|
+
primary_key :id
|
5
|
+
String :uri, size: 191, null: false
|
6
|
+
String :host_id, size: 191, null: false
|
7
|
+
DateTime :created_at, null: false
|
8
|
+
DateTime :updated_at, null: false
|
9
|
+
index [:uri], unique: true
|
10
|
+
index [:host_id], unique: true
|
11
|
+
end
|
12
|
+
|
13
|
+
create_table :cached_rubygems do
|
14
|
+
primary_key :id
|
15
|
+
Integer :upstream_id, null: false
|
16
|
+
String :name, size: 191, null: false
|
17
|
+
String :resource_type, size: 191, null: false
|
18
|
+
DateTime :created_at, null: false
|
19
|
+
DateTime :updated_at, null: false
|
20
|
+
index [:upstream_id, :resource_type, :name], unique: true
|
21
|
+
index [:name]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/gemstash/storage.rb
CHANGED
@@ -139,7 +139,7 @@ module Gemstash
|
|
139
139
|
#
|
140
140
|
# Separate calls to save for the same resource will replace existing files,
|
141
141
|
# and add new ones. Properties on additional calls will be merged with
|
142
|
-
# existing properties.
|
142
|
+
# existing properties. Nested hashes in properties will also be merged.
|
143
143
|
#
|
144
144
|
# Examples:
|
145
145
|
#
|
@@ -181,12 +181,23 @@ module Gemstash
|
|
181
181
|
end
|
182
182
|
|
183
183
|
# Update the metadata properties of this resource. The +props+ will be
|
184
|
-
# merged with any existing properties.
|
184
|
+
# merged with any existing properties. Nested hashes in the properties will
|
185
|
+
# also be merged.
|
185
186
|
#
|
186
187
|
# @param props [Hash] the properties to add
|
187
188
|
# @return [Gemstash::Resource] self for chaining purposes
|
188
189
|
def update_properties(props)
|
189
190
|
load_properties(true)
|
191
|
+
|
192
|
+
deep_merge = proc do |_, old_value, new_value|
|
193
|
+
if old_value.is_a?(Hash) && new_value.is_a?(Hash)
|
194
|
+
old_value.merge(new_value, &deep_merge)
|
195
|
+
else
|
196
|
+
new_value
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
props = properties.merge(props || {}, &deep_merge)
|
190
201
|
save_properties(properties.merge(props || {}))
|
191
202
|
self
|
192
203
|
end
|
data/lib/gemstash/version.rb
CHANGED
data/rake/changelog.citrus
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemstash
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.pre.
|
4
|
+
version: 1.0.0.pre.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andre Arko
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dalli
|
@@ -283,8 +283,10 @@ files:
|
|
283
283
|
- lib/gemstash/configuration.rb
|
284
284
|
- lib/gemstash/db.rb
|
285
285
|
- lib/gemstash/db/authorization.rb
|
286
|
+
- lib/gemstash/db/cached_rubygem.rb
|
286
287
|
- lib/gemstash/db/dependency.rb
|
287
288
|
- lib/gemstash/db/rubygem.rb
|
289
|
+
- lib/gemstash/db/upstream.rb
|
288
290
|
- lib/gemstash/db/version.rb
|
289
291
|
- lib/gemstash/dependencies.rb
|
290
292
|
- lib/gemstash/env.rb
|
@@ -301,6 +303,7 @@ files:
|
|
301
303
|
- lib/gemstash/logging.rb
|
302
304
|
- lib/gemstash/migrations/01_gem_dependencies.rb
|
303
305
|
- lib/gemstash/migrations/02_authorizations.rb
|
306
|
+
- lib/gemstash/migrations/03_cached_gems.rb
|
304
307
|
- lib/gemstash/puma.rb
|
305
308
|
- lib/gemstash/rack_env_rewriter.rb
|
306
309
|
- lib/gemstash/specs_builder.rb
|
@@ -331,7 +334,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
331
334
|
version: 1.3.1
|
332
335
|
requirements: []
|
333
336
|
rubyforge_project:
|
334
|
-
rubygems_version: 2.4.
|
337
|
+
rubygems_version: 2.4.6
|
335
338
|
signing_key:
|
336
339
|
specification_version: 4
|
337
340
|
summary: A place to stash gems you'll need
|