server-gem-listen 0.1.1 → 0.2.1

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.
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.