gemlock 0.0.10 → 0.0.11
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.
- data/README.markdown +5 -0
- data/gemlock.gemspec +1 -1
- data/lib/gemlock.rb +38 -10
- data/lib/gemlock/railtie.rb +1 -14
- data/lib/gemlock/version.rb +1 -1
- data/spec/gemlock_spec.rb +45 -0
- metadata +21 -21
data/README.markdown
CHANGED
@@ -19,6 +19,11 @@ Gemlock looks at what gems you've specified in your Gemfile, checks the version
|
|
19
19
|
that that Bundler has set in Gemfile.lock, and lets you know if there's a newer
|
20
20
|
version available.
|
21
21
|
|
22
|
+
If you're using Gemlock in a Rails project, whenever you start your server,
|
23
|
+
Gemlock will check for updates. Then, it will check again in 2 weeks or when
|
24
|
+
you restart your server, whichever comes first. In the future, both of these
|
25
|
+
should be configurable options.
|
26
|
+
|
22
27
|
Installation
|
23
28
|
------------
|
24
29
|
|
data/gemlock.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.add_dependency('rest-client')
|
24
24
|
s.add_dependency('json')
|
25
25
|
|
26
|
-
s.add_development_dependency('rspec' , '~> 2.
|
26
|
+
s.add_development_dependency('rspec' , '~> 2.7.0')
|
27
27
|
s.add_development_dependency('mocha' , '~> 0.10.0')
|
28
28
|
s.add_development_dependency('pry' , '>= 0.9.5')
|
29
29
|
s.add_development_dependency('vcr' , '>= 1.11.0')
|
data/lib/gemlock.rb
CHANGED
@@ -26,6 +26,16 @@ module Gemlock
|
|
26
26
|
locked_gemfile_specs.delete_if { |spec| !gemfile_names.include?(spec.name) }
|
27
27
|
end
|
28
28
|
|
29
|
+
def config
|
30
|
+
if defined?(Rails) && File.exists?(Rails.root.join('config', 'gemlock.yml'))
|
31
|
+
Rails.root.join('config', 'gemlock.yml')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def parsed_config
|
36
|
+
YAML.load_file(config) if config
|
37
|
+
end
|
38
|
+
|
29
39
|
def lookup_version(name)
|
30
40
|
json_hash = JSON.parse(RestClient.get("http://rubygems.org/api/v1/gems/#{name}.json"))
|
31
41
|
|
@@ -59,16 +69,6 @@ module Gemlock
|
|
59
69
|
return_hash
|
60
70
|
end
|
61
71
|
|
62
|
-
def config
|
63
|
-
if defined?(Rails) && File.exists?(Rails.root.join('config', 'gemlock.yml'))
|
64
|
-
Rails.root.join('config', 'gemlock.yml')
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def parsed_config
|
69
|
-
YAML.load_file(config) if config
|
70
|
-
end
|
71
|
-
|
72
72
|
def difference(version_a, version_b)
|
73
73
|
major_a, minor_a, patch_a = version_a.split('.').collect(&:to_i)
|
74
74
|
major_b, minor_b, patch_b = version_b.split('.').collect(&:to_i)
|
@@ -83,5 +83,33 @@ module Gemlock
|
|
83
83
|
"none"
|
84
84
|
end
|
85
85
|
end
|
86
|
+
|
87
|
+
# By default, check for updates every 2 weeks
|
88
|
+
def initializer(update_interval = 60*60*24*7*2)
|
89
|
+
Thread.new(update_interval) do |interval|
|
90
|
+
loop do
|
91
|
+
puts "Checking for gem updates..."
|
92
|
+
outdated = Gemlock.outdated
|
93
|
+
if outdated.empty?
|
94
|
+
puts "All gems up to date!"
|
95
|
+
else
|
96
|
+
outdated.each_pair do |name, versions|
|
97
|
+
puts "#{name} is out of date!"
|
98
|
+
puts "Installed version: #{versions[:current]}. Latest version: #{versions[:latest]}"
|
99
|
+
puts "To update: bundle update #{name}"
|
100
|
+
end
|
101
|
+
puts ""
|
102
|
+
puts "To update all your gems via bundler:"
|
103
|
+
puts "bundle update"
|
104
|
+
end
|
105
|
+
puts "Checking for updates again in #{interval} seconds"
|
106
|
+
sleep interval
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
def sleep(length)
|
112
|
+
Kernel.sleep(length)
|
113
|
+
end
|
86
114
|
end
|
87
115
|
end
|
data/lib/gemlock/railtie.rb
CHANGED
@@ -8,20 +8,7 @@ module Gemlock
|
|
8
8
|
end
|
9
9
|
|
10
10
|
initializer 'Check for updates using Gemlock' do
|
11
|
-
|
12
|
-
outdated = Gemlock.outdated
|
13
|
-
if outdated.empty?
|
14
|
-
puts "All gems up to date!"
|
15
|
-
else
|
16
|
-
outdated.each_pair do |name, versions|
|
17
|
-
puts "#{name} is out of date!"
|
18
|
-
puts "Installed version: #{versions[:current]}. Latest version: #{versions[:latest]}"
|
19
|
-
puts "To update: bundle update #{name}"
|
20
|
-
end
|
21
|
-
puts ""
|
22
|
-
puts "To update all your gems via bundler:"
|
23
|
-
puts "bundle update"
|
24
|
-
end
|
11
|
+
Gemlock.initializer
|
25
12
|
end
|
26
13
|
end
|
27
14
|
end
|
data/lib/gemlock/version.rb
CHANGED
data/spec/gemlock_spec.rb
CHANGED
@@ -153,4 +153,49 @@ describe Gemlock do
|
|
153
153
|
Gemlock.difference("1.0.0", "1.0.0").should eql "none"
|
154
154
|
end
|
155
155
|
end
|
156
|
+
|
157
|
+
describe '#initializer' do
|
158
|
+
it "makes a thread" do
|
159
|
+
Gemlock.stubs(:outdated).returns([])
|
160
|
+
|
161
|
+
capture_stdout do
|
162
|
+
@thread = Gemlock.initializer
|
163
|
+
|
164
|
+
@thread.class.should eql Thread
|
165
|
+
@thread.kill
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
it "checks for updates" do
|
170
|
+
Gemlock.expects(:outdated).returns([])
|
171
|
+
|
172
|
+
capture_stdout do
|
173
|
+
@thread = Gemlock.initializer
|
174
|
+
|
175
|
+
while @thread.status != 'sleep' do
|
176
|
+
sleep 0.5
|
177
|
+
end
|
178
|
+
@thread.kill
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
it "sleeps for the given amount of time" do
|
183
|
+
Gemlock.stubs(:outdated).returns([])
|
184
|
+
Gemlock.expects(:sleep).with(1).at_least(1)
|
185
|
+
|
186
|
+
capture_stdout do
|
187
|
+
@thread = Gemlock.initializer(1)
|
188
|
+
sleep 1
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
def capture_stdout
|
194
|
+
io = StringIO.new
|
195
|
+
$stdout = io
|
196
|
+
yield
|
197
|
+
return io
|
198
|
+
ensure
|
199
|
+
$stdout = STDOUT
|
200
|
+
end
|
156
201
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemlock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,11 +12,11 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2011-10-
|
15
|
+
date: 2011-10-21 00:00:00.000000000Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rake
|
19
|
-
requirement: &
|
19
|
+
requirement: &70207373857980 !ruby/object:Gem::Requirement
|
20
20
|
none: false
|
21
21
|
requirements:
|
22
22
|
- - ! '>='
|
@@ -24,10 +24,10 @@ dependencies:
|
|
24
24
|
version: 0.8.7
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
|
-
version_requirements: *
|
27
|
+
version_requirements: *70207373857980
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: bundler
|
30
|
-
requirement: &
|
30
|
+
requirement: &70207373857480 !ruby/object:Gem::Requirement
|
31
31
|
none: false
|
32
32
|
requirements:
|
33
33
|
- - ~>
|
@@ -35,10 +35,10 @@ dependencies:
|
|
35
35
|
version: 1.0.0
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
|
-
version_requirements: *
|
38
|
+
version_requirements: *70207373857480
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
40
|
name: rest-client
|
41
|
-
requirement: &
|
41
|
+
requirement: &70207373857080 !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
43
|
requirements:
|
44
44
|
- - ! '>='
|
@@ -46,10 +46,10 @@ dependencies:
|
|
46
46
|
version: '0'
|
47
47
|
type: :runtime
|
48
48
|
prerelease: false
|
49
|
-
version_requirements: *
|
49
|
+
version_requirements: *70207373857080
|
50
50
|
- !ruby/object:Gem::Dependency
|
51
51
|
name: json
|
52
|
-
requirement: &
|
52
|
+
requirement: &70207373856540 !ruby/object:Gem::Requirement
|
53
53
|
none: false
|
54
54
|
requirements:
|
55
55
|
- - ! '>='
|
@@ -57,21 +57,21 @@ dependencies:
|
|
57
57
|
version: '0'
|
58
58
|
type: :runtime
|
59
59
|
prerelease: false
|
60
|
-
version_requirements: *
|
60
|
+
version_requirements: *70207373856540
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: rspec
|
63
|
-
requirement: &
|
63
|
+
requirement: &70207373856020 !ruby/object:Gem::Requirement
|
64
64
|
none: false
|
65
65
|
requirements:
|
66
66
|
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 2.
|
68
|
+
version: 2.7.0
|
69
69
|
type: :development
|
70
70
|
prerelease: false
|
71
|
-
version_requirements: *
|
71
|
+
version_requirements: *70207373856020
|
72
72
|
- !ruby/object:Gem::Dependency
|
73
73
|
name: mocha
|
74
|
-
requirement: &
|
74
|
+
requirement: &70207373855460 !ruby/object:Gem::Requirement
|
75
75
|
none: false
|
76
76
|
requirements:
|
77
77
|
- - ~>
|
@@ -79,10 +79,10 @@ dependencies:
|
|
79
79
|
version: 0.10.0
|
80
80
|
type: :development
|
81
81
|
prerelease: false
|
82
|
-
version_requirements: *
|
82
|
+
version_requirements: *70207373855460
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: pry
|
85
|
-
requirement: &
|
85
|
+
requirement: &70207373854900 !ruby/object:Gem::Requirement
|
86
86
|
none: false
|
87
87
|
requirements:
|
88
88
|
- - ! '>='
|
@@ -90,10 +90,10 @@ dependencies:
|
|
90
90
|
version: 0.9.5
|
91
91
|
type: :development
|
92
92
|
prerelease: false
|
93
|
-
version_requirements: *
|
93
|
+
version_requirements: *70207373854900
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
95
|
name: vcr
|
96
|
-
requirement: &
|
96
|
+
requirement: &70207373854340 !ruby/object:Gem::Requirement
|
97
97
|
none: false
|
98
98
|
requirements:
|
99
99
|
- - ! '>='
|
@@ -101,10 +101,10 @@ dependencies:
|
|
101
101
|
version: 1.11.0
|
102
102
|
type: :development
|
103
103
|
prerelease: false
|
104
|
-
version_requirements: *
|
104
|
+
version_requirements: *70207373854340
|
105
105
|
- !ruby/object:Gem::Dependency
|
106
106
|
name: fakeweb
|
107
|
-
requirement: &
|
107
|
+
requirement: &70207373853820 !ruby/object:Gem::Requirement
|
108
108
|
none: false
|
109
109
|
requirements:
|
110
110
|
- - ! '>='
|
@@ -112,7 +112,7 @@ dependencies:
|
|
112
112
|
version: 1.3.0
|
113
113
|
type: :development
|
114
114
|
prerelease: false
|
115
|
-
version_requirements: *
|
115
|
+
version_requirements: *70207373853820
|
116
116
|
description: When installed, allows a user to check for updates in their Rails application
|
117
117
|
email:
|
118
118
|
- mskalnik@gatech.edu
|