grape-app 0.6.4 → 0.7.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: ceb5d9f75dd6d5db403dce33d2a5d3e1c6aca71848a04a37ed99f8fde0f037ed
4
- data.tar.gz: ae1ae575667dae62ec3139c3c91d3a396f32fb821885fdf0f0ee30c50db9ff1d
3
+ metadata.gz: b57e351adc50118035370d237ef50414ce15c5937ddac3304b724932c9a8cda9
4
+ data.tar.gz: 36dfd3eac4d65e5264feb16240f565120c40ee964866eb57755b358f75b1a942
5
5
  SHA512:
6
- metadata.gz: 72273165dfaf50b2004c47a4e73ff7c6f64ded19e8ec8d34ef0efd578a3f9846bd409e3f9b227d834b30bc1fd1fbccb4767f53545388476db69fefd5813629c9
7
- data.tar.gz: 1c4bc4ea19dda75930bf9ba6e63aa04e2b39462497488ddce45e25219d503af872aea37d0a7447f2a20f5a12bb04a5991454747438b1d8eb76f40ea983d80c02
6
+ metadata.gz: a8d09f18885b43fa835eaa37adb3b33b0f064b5665dde1cdd2bcc278ea87aca4f99784b4f734abb8e8ce9bdc30def55c40ff33663ff884036475c8f6d7ca1207
7
+ data.tar.gz: 9ff549eb0e0d16eca3caa2a42ed80834436e8ba0252835f25e7891e5baa7eddff72544cf68706b2225839064c57c28650f53bcdb598efcbb818ae43bdd13c6e9
@@ -1,13 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- grape-app (0.6.4)
4
+ grape-app (0.7.1)
5
5
  activesupport
6
6
  grape (>= 1.2.0)
7
7
  grape-entity
8
8
  rack-cors
9
9
  rack-ssl-enforcer
10
10
  thor
11
+ zeitwerk
11
12
 
12
13
  GEM
13
14
  remote: https://rubygems.org/
@@ -37,7 +38,7 @@ GEM
37
38
  thread_safe (~> 0.3, >= 0.3.1)
38
39
  diff-lcs (1.3)
39
40
  equalizer (0.0.11)
40
- grape (1.2.2)
41
+ grape (1.2.3)
41
42
  activesupport
42
43
  builder
43
44
  mustermann-grape (~> 1.0.0)
@@ -47,17 +48,17 @@ GEM
47
48
  grape-entity (0.7.1)
48
49
  activesupport (>= 4.0)
49
50
  multi_json (>= 1.3.2)
50
- i18n (1.4.0)
51
+ i18n (1.5.3)
51
52
  concurrent-ruby (~> 1.0)
52
53
  ice_nine (0.11.2)
53
- jaro_winkler (1.5.1)
54
+ jaro_winkler (1.5.2)
54
55
  minitest (5.11.3)
55
56
  multi_json (1.13.1)
56
57
  mustermann (1.0.3)
57
58
  mustermann-grape (1.0.0)
58
59
  mustermann (~> 1.0.0)
59
- parallel (1.12.1)
60
- parser (2.5.3.0)
60
+ parallel (1.13.0)
61
+ parser (2.6.0.0)
61
62
  ast (~> 2.4.0)
62
63
  powerpack (0.1.2)
63
64
  rack (2.0.6)
@@ -82,7 +83,7 @@ GEM
82
83
  diff-lcs (>= 1.2.0, < 2.0)
83
84
  rspec-support (~> 3.8.0)
84
85
  rspec-support (3.8.0)
85
- rubocop (0.62.0)
86
+ rubocop (0.63.1)
86
87
  jaro_winkler (~> 1.5.1)
87
88
  parallel (~> 1.10)
88
89
  parser (>= 2.5, != 2.5.1.1)
@@ -102,6 +103,7 @@ GEM
102
103
  coercible (~> 1.0)
103
104
  descendants_tracker (~> 0.0, >= 0.0.3)
104
105
  equalizer (~> 0.0, >= 0.0.9)
106
+ zeitwerk (1.0.0.beta2)
105
107
 
106
108
  PLATFORMS
107
109
  ruby
@@ -1,6 +1,6 @@
1
- Gem::Specification.new do |s| # rubocop:disable Metrics/BlockLength
1
+ Gem::Specification.new do |s|
2
2
  s.name = 'grape-app'
3
- s.version = '0.6.4'
3
+ s.version = '0.7.1'
4
4
  s.authors = ['Black Square Media Ltd']
5
5
  s.email = ['info@blacksquaremedia.com']
6
6
  s.summary = %(Stanalone Grape API apps)
@@ -20,6 +20,7 @@ Gem::Specification.new do |s| # rubocop:disable Metrics/BlockLength
20
20
  s.add_dependency 'rack-cors'
21
21
  s.add_dependency 'rack-ssl-enforcer'
22
22
  s.add_dependency 'thor'
23
+ s.add_dependency 'zeitwerk'
23
24
 
24
25
  s.add_development_dependency 'activerecord'
25
26
  s.add_development_dependency 'bundler'
@@ -3,10 +3,10 @@ require 'pathname'
3
3
  require 'grape'
4
4
  require 'active_support/string_inquirer'
5
5
  require 'active_support/configurable'
6
- require 'active_support/inflector/methods'
7
6
  require 'active_support/core_ext/time/zones'
8
7
  require 'rack/cors'
9
8
  require 'rack/ssl-enforcer'
9
+ require 'zeitwerk'
10
10
 
11
11
  class Grape::App < Grape::API::Instance
12
12
  class << self
@@ -20,8 +20,10 @@ class Grape::App < Grape::API::Instance
20
20
 
21
21
  # Update load path
22
22
  $LOAD_PATH.push self.root.join('lib').to_s
23
- $LOAD_PATH.push self.root.join('app').to_s
24
- $LOAD_PATH.push self.root.join('app', 'models').to_s
23
+
24
+ # Push dirs to loader
25
+ push_dir? self.root.join('app')
26
+ push_dir? self.root.join('app', 'models')
25
27
 
26
28
  # Load initializers
27
29
  require 'grape/app/initializers/pre'
@@ -29,8 +31,10 @@ class Grape::App < Grape::API::Instance
29
31
  require_all 'config', 'initializers'
30
32
  require 'grape/app/initializers/post'
31
33
 
34
+ # Setup loader
35
+ loader.setup
36
+
32
37
  # Load app
33
- require_one 'app', 'models'
34
38
  require_one 'app', 'api'
35
39
  end
36
40
 
@@ -58,9 +62,10 @@ class Grape::App < Grape::API::Instance
58
62
  @env ||= ActiveSupport::StringInquirer.new(ENV['GRAPE_ENV'] || ENV['RACK_ENV'] || 'development')
59
63
  end
60
64
 
61
- def autoload(paths)
62
- paths.each do |path|
63
- Object.autoload ActiveSupport::Inflector.classify(path), path
65
+ # @return [Zeitwerk::Loader] loader
66
+ def loader
67
+ @loader ||= Zeitwerk::Loader.new.tap do |l|
68
+ l.inflector = Grape::App::Inflector.new
64
69
  end
65
70
  end
66
71
 
@@ -79,6 +84,10 @@ class Grape::App < Grape::API::Instance
79
84
 
80
85
  private
81
86
 
87
+ def push_dir?(dir)
88
+ loader.push_dir(dir) if dir.exist?
89
+ end
90
+
82
91
  def require_all(*args)
83
92
  args += ['**', '*.rb']
84
93
  Dir[root.join(*args).to_s].sort.each {|f| require f }
@@ -88,9 +97,9 @@ class Grape::App < Grape::API::Instance
88
97
  path = root.join(*args).to_s
89
98
  require path if File.exist?("#{path}.rb")
90
99
  end
91
-
92
100
  end
93
101
  end
94
102
 
95
103
  require 'grape/app/configuration'
96
104
  require 'grape/app/helpers'
105
+ require 'grape/app/inflector'
@@ -0,0 +1,13 @@
1
+ require 'zeitwerk'
2
+ require 'active_support/inflector'
3
+
4
+ class Grape::App::Inflector < Zeitwerk::Inflector
5
+ def camelize(basename, _abspath)
6
+ case basename
7
+ when 'api'
8
+ 'API'
9
+ else
10
+ ActiveSupport::Inflector.camelize(basename)
11
+ end
12
+ end
13
+ end
@@ -10,7 +10,7 @@ ActiveRecord::Tasks::DatabaseTasks.tap do |config|
10
10
  end
11
11
  end
12
12
 
13
- namespace :db do # rubocop:disable Metrics/BlockLength
13
+ namespace :db do
14
14
 
15
15
  Rake::Task['load_config'].clear
16
16
 
@@ -1,8 +1,4 @@
1
1
  module API
2
- extend ActiveSupport::Autoload
3
-
4
- # Autoload API components
5
- autoload :V1
6
2
  end
7
3
 
8
4
  # Mount root API to app
@@ -1,8 +1,4 @@
1
1
  module API
2
- extend ActiveSupport::Autoload
3
-
4
- # Autoload API components
5
- autoload :V1
6
2
  end
7
3
 
8
4
  # Mount root API to app
@@ -0,0 +1,5 @@
1
+ class API::Posts < Grape::API::Instance
2
+ get '/posts' do
3
+ []
4
+ end
5
+ end
@@ -13,4 +13,6 @@ class API::V1 < Grape::API::Instance
13
13
  get '/failing' do
14
14
  raise MyLib::BadRequest, 'bad request'
15
15
  end
16
+
17
+ mount API::Posts
16
18
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape-app
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.4
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Black Square Media Ltd
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-03 00:00:00.000000000 Z
11
+ date: 2019-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: zeitwerk
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: activerecord
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -218,6 +232,7 @@ files:
218
232
  - lib/grape/app/helpers.rb
219
233
  - lib/grape/app/helpers/params.rb
220
234
  - lib/grape/app/helpers/respond_with.rb
235
+ - lib/grape/app/inflector.rb
221
236
  - lib/grape/app/initializers/post.rb
222
237
  - lib/grape/app/initializers/pre.rb
223
238
  - lib/grape/app/tasks.rb
@@ -227,7 +242,6 @@ files:
227
242
  - lib/grape/app/templates/Rakefile
228
243
  - lib/grape/app/templates/app/api.rb
229
244
  - lib/grape/app/templates/app/api/v1.rb
230
- - lib/grape/app/templates/app/models.rb
231
245
  - lib/grape/app/templates/config.ru
232
246
  - lib/grape/app/templates/config/environment.rb
233
247
  - lib/grape/app/templates/config/environments/development.rb
@@ -241,6 +255,7 @@ files:
241
255
  - spec/grape/app_spec.rb
242
256
  - spec/scenario/Gemfile
243
257
  - spec/scenario/app/api.rb
258
+ - spec/scenario/app/api/posts.rb
244
259
  - spec/scenario/app/api/v1.rb
245
260
  - spec/scenario/config/database.yml
246
261
  - spec/scenario/config/environments/test.rb
@@ -274,6 +289,7 @@ test_files:
274
289
  - spec/grape/app_spec.rb
275
290
  - spec/scenario/Gemfile
276
291
  - spec/scenario/app/api.rb
292
+ - spec/scenario/app/api/posts.rb
277
293
  - spec/scenario/app/api/v1.rb
278
294
  - spec/scenario/config/database.yml
279
295
  - spec/scenario/config/environments/test.rb
@@ -1,4 +0,0 @@
1
- # Add your model names below
2
- Grape::App.autoload %w[
3
-
4
- ]