grape-reload 0.0.4 → 0.1.0

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
  SHA1:
3
- metadata.gz: cf764d2710409ccf448fb1a9b1878611ae510b28
4
- data.tar.gz: 74bb786cd48bd89ac78e95e955680bb695e30846
3
+ metadata.gz: da9b9fe811b2d7cba4c719a8bc5046cbc2fb97a3
4
+ data.tar.gz: 5698e1ff3994a6982222643bce5b3bbfc2dbbd21
5
5
  SHA512:
6
- metadata.gz: 9b918ce662a102851066936b2bb1c3a534af0dfbee84a900e0692f80095ef67905bdf47c8c7773c26619a6b64c8e826403bad8bfe184734cde1c8c035fc96b36
7
- data.tar.gz: 21a8509583dc86cb23b3747536c32090fb88deeb415bb44ff277797193a95f6368d181ae51865e43d9f96fb4a72d4d92766cb6ca82e83ef2caf93844983d4291
6
+ metadata.gz: 3e63acc751942a9d1c39439d608f2e65d7508c9f34aae731a7bb5157b6569a1113bac0b8f635c33cd022bd284d0daba18c29151e48a3f980702aa224af377bde
7
+ data.tar.gz: ee0f36a0cd76bd6c317cec13bf94afcc5d417e4841d7970c10d0201aa717af25e068aa8145ab6b6b68335a0be14b1e2da700d2a0d72af796e47959e8c126ea88
@@ -5,6 +5,7 @@ rvm:
5
5
  - jruby
6
6
  - 2.0.0
7
7
  - 2.1.2
8
+ - 2.2.0
8
9
 
9
10
  script: 'bundle exec rake'
10
11
 
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in grape-reload.gemspec
4
- gemspec
4
+ gemspec
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_runtime_dependency "grape", "~> 0.9"
20
+ spec.add_runtime_dependency "grape", "~> 0.10.1"
21
21
  spec.add_runtime_dependency "rack", "~> 1.5.2"
22
22
 
23
23
  spec.add_development_dependency "bundler", "~> 1.6"
@@ -24,7 +24,14 @@ module Grape
24
24
  def initialize(sources)
25
25
  @sources = sources
26
26
  files = @sources.map{|p| Dir[p]}.flatten.uniq
27
- @map = Hash[files.zip(files.map{|file| Ripper.extract_constants(File.read(file))})]
27
+ @map = Hash[files.zip(files.map do |file|
28
+ begin
29
+ Ripper.extract_constants(File.read(file))
30
+ rescue
31
+ Grape::RackBuilder.logger.error("Theres is an error while parsing #{file}")
32
+ []
33
+ end
34
+ end)]
28
35
  end
29
36
 
30
37
  def sorted_files
@@ -35,6 +35,12 @@ end
35
35
 
36
36
  module Grape
37
37
  module Reload
38
+ module EndpointPatch
39
+ def clear_inheritable_settings!
40
+ @inheritable_settings.clear
41
+ end
42
+ end
43
+
38
44
  module AutoreloadInterceptor
39
45
  extend ActiveSupport::Concern
40
46
 
@@ -63,17 +69,33 @@ module Grape
63
69
  METHOD
64
70
  end
65
71
 
66
- def reinit!
67
- declaration = class_declaration.dup
72
+ def fire_definitions!
73
+ @declaration_cache.each {|decl|
74
+ send(decl[0],*deep_reconstantize.call(decl[1]),&decl[2])
75
+ }
76
+
77
+ endpoints.each { |e|
78
+ if e.options[:app].respond_to?('fire_definitions!')
79
+ e.options[:app].inheritable_setting.inherit_from(e.options[:app].inheritable_setting.parent)
80
+ e.options[:app].fire_definitions!
81
+ end
82
+
83
+ }
84
+ end
85
+
86
+ def reinit!(root = true)
87
+ @declaration_cache = class_declaration.dup
68
88
  @class_decl = []
69
89
  endpoints_cache = endpoints
70
90
  reset!
71
- endpoints_cache.each { |e| e.options[:app].reinit! if e.options[:app].respond_to?('reinit!') }
72
-
73
- declaration.each {|decl|
74
- send(decl[0],*deep_reconstantize.call(decl[1]),&decl[2])
91
+ inheritable_setting.clear!
92
+ top_level_setting.clear!
93
+ endpoints_cache.each { |e|
94
+ e.inheritable_setting.clear!
95
+ e.options[:app].reinit!(false) if e.options[:app].respond_to?('reinit!')
75
96
  }
76
97
  change!
98
+ fire_definitions! if root
77
99
  end
78
100
 
79
101
  def recursive_!
@@ -103,9 +125,28 @@ METHOD
103
125
  end
104
126
  end
105
127
 
128
+ module Grape
129
+ module Util
130
+ class InheritableSetting
131
+ def clear!
132
+ self.route = {}
133
+ self.api_class = {}
134
+ self.namespace = InheritableValues.new # only inheritable from a parent when
135
+ # used with a mount, or should every API::Class be a seperate namespace by default?
136
+ self.namespace_inheritable = InheritableValues.new
137
+ self.namespace_stackable = StackableValues.new
138
+
139
+ self.point_in_time_copies = []
140
+
141
+ # self.parent = nil
142
+ end
143
+ end
144
+ end
145
+ end
146
+
147
+
106
148
  Grape::API.singleton_class.class_eval do
107
149
  alias_method :inherited_shadowed, :inherited
108
- alias_method :settings_shadowed, :settings
109
150
  def inherited(*args)
110
151
  inherited_shadowed(*args)
111
152
  args.first.class_eval do
@@ -1,5 +1,5 @@
1
1
  module Grape
2
2
  module Reload
3
- VERSION = "0.0.4"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
@@ -7,7 +7,7 @@ module Grape
7
7
  module Watcher
8
8
  class << self
9
9
  MTIMES = {}
10
- # include Padrino::Reloader
10
+
11
11
  attr_reader :sources
12
12
  def rack_builder; Grape::RackBuilder end
13
13
 
@@ -197,7 +197,7 @@ end
197
197
  class ASTBody < ASTEntity
198
198
  def self.ripper_id; :bodystmt end
199
199
  def initialize(*args)
200
- @body = args.first.map{ |node| ASTEntity.node_for(node) }
200
+ @body = args.reject(&:nil?).map{ |node| ASTEntity.node_for(node) }
201
201
  end
202
202
  def collect_constants(result, context)
203
203
  context[:variable_assignment] = false
@@ -350,9 +350,7 @@ class ASTModule < ASTEntity
350
350
  def self.ripper_id; :module end
351
351
  def initialize(*args)
352
352
  @module_name = args.find{|a| a.first == :const_ref}.last[1]
353
- @body = args.find{|a| a.first == :bodystmt}[1].map{|node|
354
- ASTEntity.node_for(node)
355
- }
353
+ @body = [ASTEntity.node_for(args.find{|a| a.first == :bodystmt})]
356
354
  end
357
355
  def collect_constants(result, context)
358
356
  result.declare_const(@module_name)
@@ -387,9 +385,30 @@ class ASTLambda < ASTEntity
387
385
  end
388
386
  end
389
387
 
388
+ class ASTStatementsAdd < ASTEntity
389
+ def self.ripper_id; :stmts_add end
390
+ def initialize(*args)
391
+ super(*args)
392
+ end
393
+ end
394
+
395
+ class ASTStatementsNew < ASTEntity
396
+ def self.ripper_id; :stmts_new end
397
+ def initialize(*args)
398
+ super(*args)
399
+ end
400
+ end
401
+
402
+ class ASTStatementsProgram < ASTEntity
403
+ def self.ripper_id; :program end
404
+ def initialize(*args)
405
+ super(args.first)
406
+ end
407
+ end
408
+
390
409
  class Ripper
391
410
  def self.extract_constants(code)
392
- ast = Ripper.sexp(code)
411
+ ast = Ripper.sexp_raw(code)
393
412
  result = ASTEntity.node_for(ast).collect_constants(TraversingResult.new)
394
413
  consts = result.extract_consts
395
414
  consts[:declared].flatten!
@@ -28,7 +28,7 @@ module Test
28
28
  CONST_DEF2 = Test3::AnotherClass
29
29
  CONST_DEF3 = SomeExternalClass
30
30
  class Test < Superclass
31
- test_class_method {params: SomeClass}
31
+ test_class_method({params: SomeClass})
32
32
 
33
33
  def test_method
34
34
  SomeClass1.call_method
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape-reload
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - AMar4enko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-29 00:00:00.000000000 Z
11
+ date: 2015-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: grape
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.9'
19
+ version: 0.10.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.9'
26
+ version: 0.10.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rack
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -252,7 +252,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
252
252
  version: '0'
253
253
  requirements: []
254
254
  rubyforge_project:
255
- rubygems_version: 2.2.2
255
+ rubygems_version: 2.4.5
256
256
  signing_key:
257
257
  specification_version: 4
258
258
  summary: Grape autoreload gem