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.
@@ -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
 
@@ -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.6.0')
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')
@@ -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
@@ -8,20 +8,7 @@ module Gemlock
8
8
  end
9
9
 
10
10
  initializer 'Check for updates using Gemlock' do
11
- puts "Checking for gem updates..."
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
@@ -1,3 +1,3 @@
1
1
  module Gemlock
2
- VERSION = "0.0.10"
2
+ VERSION = "0.0.11"
3
3
  end
@@ -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.10
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-19 00:00:00.000000000Z
15
+ date: 2011-10-21 00:00:00.000000000Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rake
19
- requirement: &70330316853880 !ruby/object:Gem::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: *70330316853880
27
+ version_requirements: *70207373857980
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: bundler
30
- requirement: &70330316853380 !ruby/object:Gem::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: *70330316853380
38
+ version_requirements: *70207373857480
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: rest-client
41
- requirement: &70330316853000 !ruby/object:Gem::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: *70330316853000
49
+ version_requirements: *70207373857080
50
50
  - !ruby/object:Gem::Dependency
51
51
  name: json
52
- requirement: &70330316852540 !ruby/object:Gem::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: *70330316852540
60
+ version_requirements: *70207373856540
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: rspec
63
- requirement: &70330316852040 !ruby/object:Gem::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.6.0
68
+ version: 2.7.0
69
69
  type: :development
70
70
  prerelease: false
71
- version_requirements: *70330316852040
71
+ version_requirements: *70207373856020
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: mocha
74
- requirement: &70330316882500 !ruby/object:Gem::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: *70330316882500
82
+ version_requirements: *70207373855460
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: pry
85
- requirement: &70330316882040 !ruby/object:Gem::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: *70330316882040
93
+ version_requirements: *70207373854900
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: vcr
96
- requirement: &70330316881580 !ruby/object:Gem::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: *70330316881580
104
+ version_requirements: *70207373854340
105
105
  - !ruby/object:Gem::Dependency
106
106
  name: fakeweb
107
- requirement: &70330316881120 !ruby/object:Gem::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: *70330316881120
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