server-gem-listen 0.1.1 → 0.2.1

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: fd84ad184258f02fb857957a512c2bf061383e85e8d186b6628b5608101c78a6
4
- data.tar.gz: 04baf0f979a1ac84e4b938d5dfd5b351fde28953876bbf0a2caf4e318d85a719
3
+ metadata.gz: d1b9f87a624c8be221edeb444b12e4ef42838d6cda87389dfb93aac4542cd7c3
4
+ data.tar.gz: 89581f67c9f7236a14c7b5000596061146472f42081419bfc15acc31cd4e4d4f
5
5
  SHA512:
6
- metadata.gz: 000ebf277e935710ce8b8cc687d8ce8fc31e14ff6d8c23f2287ffcb43ca55998e56a096eb1d9ececf74bb79dfefa6ae350ff5cae025794ab59cdd832364ed58e
7
- data.tar.gz: d82d0999ea626fab503886dda3822bac0657a0f6e73b91976ea210fb94ca3892cbd98c14696510dbab2e77bc2b82cff42abdfb8702e25396f824f9b3420421a4
6
+ metadata.gz: 73f07290d1c10e9d6226f1897a6379ee25839e9d9cfe80035160614b183ccd05ccdd5b329a4640b76d946789e5cc0a7b8537fee893fada97d49520cecb7bf9fb
7
+ data.tar.gz: f67c6dd26aa732d9249df0e9c9a036c7a403ae6800ed69cdc33adc544c09fad76df53176f95dc99fc6e3f33cb23ecff78134deb16f656b58363e8d3c633718e9
data/README.md CHANGED
@@ -7,9 +7,12 @@ gem install server-gem-listen
7
7
  ```
8
8
 
9
9
  ## Usage
10
-
11
- TODO: Write usage instructions here
10
+ Execute the command below under your project root:
11
+ ```
12
+ server-gem-listen
13
+ ```
14
+ This will launch `rails s` wrapped with gem watcher.
12
15
 
13
16
  ## License
14
17
 
15
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
18
+ Server Gem Listen is released under the [MIT License](https://opensource.org/licenses/MIT).
@@ -3,14 +3,16 @@ require "awesome_print"
3
3
  require "bundler"
4
4
  require "listen"
5
5
  require "server_gem_listen/listener"
6
- require "server_gem_listen/puma"
6
+ require "server_gem_listen/server"
7
7
  require "server_gem_listen/version"
8
8
 
9
9
  module ServerGemListen
10
+ NOTIFICATION_PREFIX = '=> Server Gem Listen:'
11
+
10
12
  def self.launch
11
- puts 'Start Puma with Curiosity watcher'
13
+ puts "#{NOTIFICATION_PREFIX} launch default server"
12
14
  Bundler.configure
13
- Puma.start
15
+ Server.start
14
16
  Listener.start
15
17
  end
16
18
  end
@@ -2,13 +2,10 @@ module ServerGemListen
2
2
  module Listener
3
3
  class << self
4
4
  def start
5
- listener = Listen.to(ENV['GEM_HOME']) do |*args|
6
- notify(*args)
7
- Puma.restart
8
- end
9
-
10
- listener.start
5
+ listen_events.start
11
6
  sleep
7
+ rescue Interrupt => e
8
+ puts "\n#{ServerGemListen::NOTIFICATION_PREFIX} interrupted"
12
9
  end
13
10
 
14
11
  private
@@ -18,10 +15,33 @@ module ServerGemListen
18
15
  files.each_pair do |key, value|
19
16
  next if value.empty?
20
17
  value.map! { |v| v.gsub(ENV['GEM_HOME'], '') }
21
- ap "#{'File'.pluralize(value.size)} #{key}:"
18
+ puts "#{ServerGemListen::NOTIFICATION_PREFIX} #{'file'.pluralize(value.size)} #{key}"
22
19
  ap value
23
20
  end
24
21
  end
22
+
23
+ def listen_events
24
+ gems = Bundler.definition.specs.to_hash.keys
25
+ Listen.to(ENV['GEM_HOME']) do |*args|
26
+ process_event(gems, *args)
27
+ end
28
+ end
29
+
30
+ def process_event(gems, *args)
31
+ return unless need_restart?(gems, *args)
32
+ notify(*args)
33
+ Server.restart
34
+ end
35
+
36
+ def need_restart?(gems, *args)
37
+ args.each do |arg|
38
+ arg.each do |path|
39
+ matches = gems.select { |gem| path.include? gem }
40
+ return true unless matches.empty?
41
+ end
42
+ end
43
+ false
44
+ end
25
45
  end
26
46
  end
27
47
  end
@@ -1,14 +1,14 @@
1
1
  module ServerGemListen
2
- module Puma
2
+ module Server
3
3
  class << self
4
4
  def start
5
5
  Thread.new do
6
- system 'rails s'
6
+ system './bin/rails s'
7
7
  end
8
8
  end
9
9
 
10
10
  def restart
11
- puts '=> Restart Puma'
11
+ puts "#{ServerGemListen::NOTIFICATION_PREFIX} Restart Puma"
12
12
  stop
13
13
  start
14
14
  end
@@ -1,3 +1,3 @@
1
1
  module ServerGemListen
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["vavgustov@gmail.com"]
11
11
 
12
12
  spec.summary = %q{Automatically reload rails server on gem source changes.}
13
- spec.description = %q{Automatically reload rails server on gem source changes.}
13
+ spec.description = %q{Not for actual development or production usage. You can use this gem for quick 'scientific' experiments with core.}
14
14
  spec.homepage = "https://github.com/vavgustov/server-gem-listen."
15
15
  spec.license = "MIT"
16
16
 
@@ -26,8 +26,8 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency "rake", "~> 10.0"
27
27
  spec.add_development_dependency "rspec", "~> 3.0"
28
28
 
29
+ spec.add_runtime_dependency "activesupport", "> 5.0", "< 6"
30
+ spec.add_runtime_dependency "awesome_print", ">= 1.6", "< 1.9"
29
31
  spec.add_runtime_dependency "bundler", "~> 1.16"
30
- spec.add_runtime_dependency "awesome_print", "~> 1.8"
31
- spec.add_runtime_dependency "activesupport", "~> 5.1"
32
32
  spec.add_runtime_dependency "listen", "~> 3.1"
33
33
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: server-gem-listen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vladimir Avgustov
@@ -39,47 +39,59 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: bundler
42
+ name: activesupport
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.16'
47
+ version: '5.0'
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: '6'
48
51
  type: :runtime
49
52
  prerelease: false
50
53
  version_requirements: !ruby/object:Gem::Requirement
51
54
  requirements:
52
- - - "~>"
55
+ - - ">"
53
56
  - !ruby/object:Gem::Version
54
- version: '1.16'
57
+ version: '5.0'
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: '6'
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: awesome_print
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
- - - "~>"
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '1.6'
68
+ - - "<"
60
69
  - !ruby/object:Gem::Version
61
- version: '1.8'
70
+ version: '1.9'
62
71
  type: :runtime
63
72
  prerelease: false
64
73
  version_requirements: !ruby/object:Gem::Requirement
65
74
  requirements:
66
- - - "~>"
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '1.6'
78
+ - - "<"
67
79
  - !ruby/object:Gem::Version
68
- version: '1.8'
80
+ version: '1.9'
69
81
  - !ruby/object:Gem::Dependency
70
- name: activesupport
82
+ name: bundler
71
83
  requirement: !ruby/object:Gem::Requirement
72
84
  requirements:
73
85
  - - "~>"
74
86
  - !ruby/object:Gem::Version
75
- version: '5.1'
87
+ version: '1.16'
76
88
  type: :runtime
77
89
  prerelease: false
78
90
  version_requirements: !ruby/object:Gem::Requirement
79
91
  requirements:
80
92
  - - "~>"
81
93
  - !ruby/object:Gem::Version
82
- version: '5.1'
94
+ version: '1.16'
83
95
  - !ruby/object:Gem::Dependency
84
96
  name: listen
85
97
  requirement: !ruby/object:Gem::Requirement
@@ -94,7 +106,8 @@ dependencies:
94
106
  - - "~>"
95
107
  - !ruby/object:Gem::Version
96
108
  version: '3.1'
97
- description: Automatically reload rails server on gem source changes.
109
+ description: Not for actual development or production usage. You can use this gem
110
+ for quick 'scientific' experiments with core.
98
111
  email:
99
112
  - vavgustov@gmail.com
100
113
  executables:
@@ -118,7 +131,7 @@ files:
118
131
  - exe/server-gem-listen
119
132
  - lib/server_gem_listen.rb
120
133
  - lib/server_gem_listen/listener.rb
121
- - lib/server_gem_listen/puma.rb
134
+ - lib/server_gem_listen/server.rb
122
135
  - lib/server_gem_listen/version.rb
123
136
  - server-gem-listen.gemspec
124
137
  homepage: https://github.com/vavgustov/server-gem-listen.