graphiti 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +12 -0
  4. data/Appraisals +20 -5
  5. data/{lib/generators → deprecated_generators}/graphiti/api_test_generator.rb +2 -3
  6. data/{lib/generators → deprecated_generators}/graphiti/generator_mixin.rb +0 -0
  7. data/{lib/generators → deprecated_generators}/graphiti/install_generator.rb +1 -2
  8. data/{lib/generators → deprecated_generators}/graphiti/resource_generator.rb +1 -2
  9. data/{lib/generators → deprecated_generators}/graphiti/resource_test_generator.rb +1 -2
  10. data/{lib/generators → deprecated_generators}/graphiti/templates/application_resource.rb.erb +0 -0
  11. data/{lib/generators → deprecated_generators}/graphiti/templates/controller.rb.erb +0 -0
  12. data/{lib/generators → deprecated_generators}/graphiti/templates/create_request_spec.rb.erb +0 -0
  13. data/{lib/generators → deprecated_generators}/graphiti/templates/destroy_request_spec.rb.erb +0 -0
  14. data/{lib/generators → deprecated_generators}/graphiti/templates/index_request_spec.rb.erb +0 -0
  15. data/{lib/generators → deprecated_generators}/graphiti/templates/resource.rb.erb +0 -0
  16. data/{lib/generators → deprecated_generators}/graphiti/templates/resource_reads_spec.rb.erb +0 -0
  17. data/{lib/generators → deprecated_generators}/graphiti/templates/resource_writes_spec.rb.erb +0 -0
  18. data/{lib/generators → deprecated_generators}/graphiti/templates/show_request_spec.rb.erb +0 -0
  19. data/{lib/generators → deprecated_generators}/graphiti/templates/update_request_spec.rb.erb +0 -0
  20. data/gemfiles/rails_4.gemfile +0 -1
  21. data/gemfiles/rails_5.gemfile +0 -1
  22. data/gemfiles/rails_5_graphiti_rails.gemfile +20 -0
  23. data/gemfiles/rails_6.gemfile +2 -3
  24. data/gemfiles/rails_6_graphiti_rails.gemfile +20 -0
  25. data/graphiti.gemspec +2 -2
  26. data/lib/graphiti.rb +88 -78
  27. data/lib/graphiti/configuration.rb +15 -7
  28. data/lib/graphiti/debugger.rb +7 -6
  29. data/lib/graphiti/{tasks.rb → deprecated_tasks.rb} +0 -0
  30. data/lib/graphiti/rails.rb +3 -0
  31. data/lib/graphiti/railtie.rb +8 -2
  32. data/lib/graphiti/renderer.rb +2 -1
  33. data/lib/graphiti/resource/remote.rb +1 -0
  34. data/lib/graphiti/resource/sideloading.rb +3 -2
  35. data/lib/graphiti/responders.rb +2 -0
  36. data/lib/graphiti/schema.rb +2 -1
  37. data/lib/graphiti/scope.rb +3 -1
  38. data/lib/graphiti/sideload.rb +10 -13
  39. data/lib/graphiti/util/serializer_relationships.rb +3 -2
  40. data/lib/graphiti/version.rb +1 -1
  41. metadata +20 -30
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4afe1b88c18d728d9a2fc0a3f80cb425c08ee5effa28f1e5237bde5b08d944ce
4
- data.tar.gz: 1a2545e6c20612bf12b0684c0a4e92d95fb618ca210b8b3db80a7822ffd9821c
3
+ metadata.gz: 787f7fb976a85d75236bafedc2fc5c2e798757dc82a0cf17d6ec6d46ca2beef5
4
+ data.tar.gz: d1fa1569f15b1cdc336b722985bf64f929167cd151201efbb694d78ace9eccef
5
5
  SHA512:
6
- metadata.gz: efbc08d434992a6d797e0c0b29b97d6a6f074094c09e2248faac1b9a4f109f743d40591b2d6bb8fd0d39bda89755c510273aaaceb51bac57b9fcf451fcd9f7e6
7
- data.tar.gz: 13b954fe3312e9b6652a20c85b86e0fd28b42cd572062e83665251305242a056f060986b0e4e122738f92ccdff8d9d33e6b65092c8948c591524394ef1b6dc8f
6
+ metadata.gz: 9cf5251b0dc07f16affcd69dc2ee6ef7e8ff756bf0170d1a1a5c881cbc2510ae0e5d0e5465d8accfd8dbd17a2ab4d9fe4d1d87fde16af8b2d4f2e59eae748f5d
7
+ data.tar.gz: f05e5bb7f5b88bcf71a94023f71cd1c29da8ddcc6d71c719d6285a9acdc49cf411d4e4b89fb62e8ddfaec13fc0b45ae1284af654bfa23947bda579136fc90002
data/.gitignore CHANGED
@@ -8,6 +8,7 @@
8
8
  /gemfiles/*.lock
9
9
  /tmp/
10
10
  .byebug_history
11
+ spec/.rspec-examples
11
12
  spec/dummy/log/*
12
13
  *~
13
14
  .vscode/
@@ -9,6 +9,8 @@ gemfile:
9
9
  - gemfiles/rails_4.gemfile
10
10
  - gemfiles/rails_5.gemfile
11
11
  - gemfiles/rails_6.gemfile
12
+ - gemfiles/rails_5_graphiti_rails.gemfile
13
+ - gemfiles/rails_6_graphiti_rails.gemfile
12
14
  env:
13
15
  - COMMAND=standardrb --no-fix --format progress
14
16
  - COMMAND=rspec
@@ -21,6 +23,10 @@ matrix:
21
23
  gemfile: gemfiles/rails_5.gemfile
22
24
  - env: COMMAND=standardrb --no-fix --format progress
23
25
  gemfile: gemfiles/rails_6.gemfile
26
+ - env: COMMAND=standardrb --no-fix --format progress
27
+ gemfile: gemfiles/rails_5_graphiti_rails.gemfile
28
+ - env: COMMAND=standardrb --no-fix --format progress
29
+ gemfile: gemfiles/rails_6_graphiti_rails.gemfile
24
30
  - env: COMMAND=rspec APPRAISAL_INITIALIZED=true
25
31
  gemfile: Gemfile
26
32
  - env: COMMAND=rspec
@@ -29,8 +35,14 @@ matrix:
29
35
  gemfile: gemfiles/rails_5.gemfile
30
36
  - env: COMMAND=rspec
31
37
  gemfile: gemfiles/rails_6.gemfile
38
+ - env: COMMAND=rspec
39
+ gemfile: gemfiles/rails_5_graphiti_rails.gemfile
40
+ - env: COMMAND=rspec
41
+ gemfile: gemfiles/rails_6_graphiti_rails.gemfile
32
42
  - gemfile: gemfiles/rails_6.gemfile
33
43
  rvm: 2.4
44
+ - gemfile: gemfiles/rails_6_graphiti_rails.gemfile
45
+ rvm: 2.4
34
46
  - gemfile: gemfiles/rails_4.gemfile
35
47
  rvm: 2.5
36
48
  - gemfile: gemfiles/rails_4.gemfile
data/Appraisals CHANGED
@@ -3,7 +3,6 @@ appraise "rails-4" do
3
3
  gem "rspec-rails"
4
4
  gem "sqlite3", "~> 1.3.6"
5
5
  gem "database_cleaner"
6
- gem "kaminari", "~> 0.17"
7
6
  end
8
7
 
9
8
  appraise "rails-5" do
@@ -11,13 +10,29 @@ appraise "rails-5" do
11
10
  gem "rspec-rails"
12
11
  gem "sqlite3", "~> 1.3.6"
13
12
  gem "database_cleaner"
14
- gem "kaminari", "~> 0.17"
15
13
  end
16
14
 
17
- appraise "rails-6" do
18
- gem "rails", "~> 6.0.0.beta2"
15
+ appraise "rails-5-graphiti-rails" do
16
+ gem "rails", "~> 5.2"
19
17
  gem "rspec-rails"
20
18
  gem "sqlite3", "~> 1.3.6"
21
19
  gem "database_cleaner"
22
- gem "kaminari", "~> 0.17"
20
+ gem "rescue_registry", git: "https://github.com/wagenet/rescue_registry.git", branch: "master"
21
+ gem "graphiti-rails", git: "https://github.com/wagenet/graphiti-rails.git", branch: "master"
22
+ end
23
+
24
+ appraise "rails-6" do
25
+ gem "rails", "~> 6.0.0.rc1"
26
+ gem "rspec-rails"
27
+ gem "sqlite3", "~> 1.4.0"
28
+ gem "database_cleaner"
29
+ end
30
+
31
+ appraise "rails-6-graphiti-rails" do
32
+ gem "rails", "~> 6.0.0.rc1"
33
+ gem "rspec-rails"
34
+ gem "sqlite3", "~> 1.4.0"
35
+ gem "database_cleaner"
36
+ gem "rescue_registry", git: "https://github.com/wagenet/rescue_registry.git", branch: "master"
37
+ gem "graphiti-rails", git: "https://github.com/wagenet/graphiti-rails.git", branch: "master"
23
38
  end
@@ -1,11 +1,10 @@
1
- $:.unshift File.dirname(__FILE__)
2
- require "generator_mixin"
1
+ require_relative "generator_mixin"
3
2
 
4
3
  module Graphiti
5
4
  class ApiTestGenerator < ::Rails::Generators::Base
6
5
  include GeneratorMixin
7
6
 
8
- source_root File.expand_path("../templates", __FILE__)
7
+ source_root File.expand_path("templates", __dir__)
9
8
 
10
9
  argument :resource, type: :string
11
10
  class_option :actions,
@@ -1,5 +1,4 @@
1
- $:.unshift File.dirname(__FILE__)
2
- require "generator_mixin"
1
+ require_relative "generator_mixin"
3
2
 
4
3
  module Graphiti
5
4
  class InstallGenerator < ::Rails::Generators::Base
@@ -1,5 +1,4 @@
1
- $:.unshift File.dirname(__FILE__)
2
- require "generator_mixin"
1
+ require_relative "generator_mixin"
3
2
 
4
3
  module Graphiti
5
4
  class ResourceGenerator < ::Rails::Generators::NamedBase
@@ -1,5 +1,4 @@
1
- $:.unshift File.dirname(__FILE__)
2
- require "generator_mixin"
1
+ require_relative "generator_mixin"
3
2
 
4
3
  module Graphiti
5
4
  class ResourceTestGenerator < ::Rails::Generators::Base
@@ -6,7 +6,6 @@ gem "rails", "~> 4.1"
6
6
  gem "rspec-rails"
7
7
  gem "sqlite3", "~> 1.3.6"
8
8
  gem "database_cleaner"
9
- gem "kaminari", "~> 0.17"
10
9
 
11
10
  group :test do
12
11
  gem "pry"
@@ -6,7 +6,6 @@ gem "rails", "~> 5.2"
6
6
  gem "rspec-rails"
7
7
  gem "sqlite3", "~> 1.3.6"
8
8
  gem "database_cleaner"
9
- gem "kaminari", "~> 0.17"
10
9
 
11
10
  group :test do
12
11
  gem "pry"
@@ -0,0 +1,20 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 5.2"
6
+ gem "rspec-rails"
7
+ gem "sqlite3", "~> 1.3.6"
8
+ gem "database_cleaner"
9
+ gem "rescue_registry", git: "https://github.com/wagenet/rescue_registry.git", branch: "master"
10
+ gem "graphiti-rails", git: "https://github.com/wagenet/graphiti-rails.git", branch: "master"
11
+
12
+ group :test do
13
+ gem "pry"
14
+ gem "pry-byebug", platform: [:mri]
15
+ gem "appraisal"
16
+ gem "guard"
17
+ gem "guard-rspec"
18
+ end
19
+
20
+ gemspec path: "../"
@@ -2,11 +2,10 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 6.0.0.beta2"
5
+ gem "rails", "~> 6.0.0.rc1"
6
6
  gem "rspec-rails"
7
- gem "sqlite3", "~> 1.4"
7
+ gem "sqlite3", "~> 1.4.0"
8
8
  gem "database_cleaner"
9
- gem "kaminari", "~> 0.17"
10
9
 
11
10
  group :test do
12
11
  gem "pry"
@@ -0,0 +1,20 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 6.0.0.rc1"
6
+ gem "rspec-rails"
7
+ gem "sqlite3", "~> 1.4.0"
8
+ gem "database_cleaner"
9
+ gem "rescue_registry", git: "https://github.com/wagenet/rescue_registry.git", branch: "master"
10
+ gem "graphiti-rails", git: "https://github.com/wagenet/graphiti-rails.git", branch: "master"
11
+
12
+ group :test do
13
+ gem "pry"
14
+ gem "pry-byebug", platform: [:mri]
15
+ gem "appraisal"
16
+ gem "guard"
17
+ gem "guard-rspec"
18
+ end
19
+
20
+ gemspec path: "../"
@@ -22,13 +22,13 @@ Gem::Specification.new do |spec|
22
22
  spec.add_dependency "dry-types", "~> 0.15"
23
23
  spec.add_dependency "graphiti_errors", "~> 1.1.0"
24
24
  spec.add_dependency "concurrent-ruby", "~> 1.0"
25
- spec.add_dependency "activesupport", [">= 4.1", "< 6"]
25
+ spec.add_dependency "activesupport", ">= 4.1"
26
26
 
27
27
  spec.add_development_dependency "faraday", "~> 0.15"
28
28
  spec.add_development_dependency "kaminari", "~> 0.17"
29
29
  spec.add_development_dependency "bundler"
30
30
  spec.add_development_dependency "rake", "~> 10.0"
31
- spec.add_development_dependency "activemodel", [">= 4.1", "< 6"]
31
+ spec.add_development_dependency "activemodel", ">= 4.1"
32
32
  spec.add_development_dependency "graphiti_spec_helpers", "1.0.beta.4"
33
33
  spec.add_development_dependency "standard"
34
34
  end
@@ -12,84 +12,9 @@ require "graphiti_errors"
12
12
 
13
13
  require "jsonapi/serializable"
14
14
 
15
- require "graphiti/version"
16
- require "graphiti/jsonapi_serializable_ext"
17
- require "graphiti/configuration"
18
- require "graphiti/context"
19
- require "graphiti/errors"
20
- require "graphiti/types"
21
- require "graphiti/schema"
22
- require "graphiti/schema_diff"
23
- require "graphiti/adapters/abstract"
24
- require "graphiti/resource/sideloading"
25
- require "graphiti/resource/links"
26
- require "graphiti/resource/configuration"
27
- require "graphiti/resource/dsl"
28
- require "graphiti/resource/interface"
29
- require "graphiti/resource/polymorphism"
30
- require "graphiti/resource/documentation"
31
- require "graphiti/resource/persistence"
32
- require "graphiti/resource/remote"
33
- require "graphiti/sideload"
34
- require "graphiti/sideload/has_many"
35
- require "graphiti/sideload/belongs_to"
36
- require "graphiti/sideload/has_one"
37
- require "graphiti/sideload/many_to_many"
38
- require "graphiti/sideload/polymorphic_belongs_to"
39
- require "graphiti/resource"
40
- require "graphiti/resource_proxy"
41
- require "graphiti/request_validator"
42
- require "graphiti/query"
43
- require "graphiti/scope"
44
- require "graphiti/deserializer"
45
- require "graphiti/renderer"
46
- require "graphiti/hash_renderer"
47
- require "graphiti/filter_operators"
48
- require "graphiti/scoping/base"
49
- require "graphiti/scoping/sort"
50
- require "graphiti/scoping/paginate"
51
- require "graphiti/scoping/extra_attributes"
52
- require "graphiti/scoping/filterable"
53
- require "graphiti/scoping/default_filter"
54
- require "graphiti/scoping/filter"
55
- require "graphiti/stats/dsl"
56
- require "graphiti/stats/payload"
57
- require "graphiti/delegates/pagination"
58
- require "graphiti/util/include_params"
59
- require "graphiti/util/field_params"
60
- require "graphiti/util/hash"
61
- require "graphiti/util/relationship_payload"
62
- require "graphiti/util/persistence"
63
- require "graphiti/util/validation_response"
64
- require "graphiti/util/sideload"
65
- require "graphiti/util/simple_errors"
66
- require "graphiti/util/transaction_hooks_recorder"
67
- require "graphiti/util/attribute_check"
68
- require "graphiti/util/serializer_attributes"
69
- require "graphiti/util/serializer_relationships"
70
- require "graphiti/util/class"
71
- require "graphiti/util/link"
72
- require "graphiti/util/remote_serializer"
73
- require "graphiti/util/remote_params"
74
- require "graphiti/adapters/null"
75
- require "graphiti/adapters/graphiti_api"
76
- require "graphiti/extensions/extra_attribute"
77
- require "graphiti/extensions/boolean_attribute"
78
- require "graphiti/extensions/temp_id"
79
- require "graphiti/serializer"
80
- require "graphiti/debugger"
81
-
82
- if defined?(ActiveRecord)
83
- require "graphiti/adapters/active_record"
84
- end
85
-
86
- if defined?(Rails)
87
- require "graphiti/railtie"
88
- require "graphiti/rails"
89
- require "graphiti/responders"
90
- end
91
-
92
15
  module Graphiti
16
+ DEPRECATOR = ActiveSupport::Deprecation.new('2.0', 'Graphiti')
17
+
93
18
  # @api private
94
19
  def self.context
95
20
  Thread.current[:context] ||= {}
@@ -128,7 +53,9 @@ module Graphiti
128
53
  end
129
54
 
130
55
  def self.broadcast(name, payload)
131
- name = "graphiti.#{name}"
56
+ # AS::N prefers domain naming format with more specific towards end
57
+ name = "#{name}.graphiti"
58
+
132
59
  ActiveSupport::Notifications.instrument(name, payload) do
133
60
  yield payload if block_given?
134
61
  end
@@ -170,6 +97,89 @@ module Graphiti
170
97
  end
171
98
  end
172
99
 
100
+ require "graphiti/version"
101
+ require "graphiti/jsonapi_serializable_ext"
102
+ require "graphiti/configuration"
103
+ require "graphiti/context"
104
+ require "graphiti/errors"
105
+ require "graphiti/types"
106
+ require "graphiti/schema"
107
+ require "graphiti/schema_diff"
108
+ require "graphiti/adapters/abstract"
109
+ require "graphiti/resource/sideloading"
110
+ require "graphiti/resource/links"
111
+ require "graphiti/resource/configuration"
112
+ require "graphiti/resource/dsl"
113
+ require "graphiti/resource/interface"
114
+ require "graphiti/resource/polymorphism"
115
+ require "graphiti/resource/documentation"
116
+ require "graphiti/resource/persistence"
117
+ require "graphiti/resource/remote"
118
+ require "graphiti/sideload"
119
+ require "graphiti/sideload/has_many"
120
+ require "graphiti/sideload/belongs_to"
121
+ require "graphiti/sideload/has_one"
122
+ require "graphiti/sideload/many_to_many"
123
+ require "graphiti/sideload/polymorphic_belongs_to"
124
+ require "graphiti/resource"
125
+ require "graphiti/resource_proxy"
126
+ require "graphiti/request_validator"
127
+ require "graphiti/query"
128
+ require "graphiti/scope"
129
+ require "graphiti/deserializer"
130
+ require "graphiti/renderer"
131
+ require "graphiti/hash_renderer"
132
+ require "graphiti/filter_operators"
133
+ require "graphiti/scoping/base"
134
+ require "graphiti/scoping/sort"
135
+ require "graphiti/scoping/paginate"
136
+ require "graphiti/scoping/extra_attributes"
137
+ require "graphiti/scoping/filterable"
138
+ require "graphiti/scoping/default_filter"
139
+ require "graphiti/scoping/filter"
140
+ require "graphiti/stats/dsl"
141
+ require "graphiti/stats/payload"
142
+ require "graphiti/delegates/pagination"
143
+ require "graphiti/util/include_params"
144
+ require "graphiti/util/field_params"
145
+ require "graphiti/util/hash"
146
+ require "graphiti/util/relationship_payload"
147
+ require "graphiti/util/persistence"
148
+ require "graphiti/util/validation_response"
149
+ require "graphiti/util/sideload"
150
+ require "graphiti/util/simple_errors"
151
+ require "graphiti/util/transaction_hooks_recorder"
152
+ require "graphiti/util/attribute_check"
153
+ require "graphiti/util/serializer_attributes"
154
+ require "graphiti/util/serializer_relationships"
155
+ require "graphiti/util/class"
156
+ require "graphiti/util/link"
157
+ require "graphiti/util/remote_serializer"
158
+ require "graphiti/util/remote_params"
159
+ require "graphiti/adapters/null"
160
+ require "graphiti/adapters/graphiti_api"
161
+ require "graphiti/extensions/extra_attribute"
162
+ require "graphiti/extensions/boolean_attribute"
163
+ require "graphiti/extensions/temp_id"
164
+ require "graphiti/serializer"
165
+ require "graphiti/debugger"
166
+
167
+ if defined?(ActiveRecord)
168
+ require "graphiti/adapters/active_record"
169
+ end
170
+
171
+ if defined?(Rails)
172
+ require "graphiti/rails"
173
+ require "graphiti/responders"
174
+
175
+ # graphiti-rails has own Railtie
176
+ begin
177
+ require "graphiti-rails"
178
+ rescue LoadError
179
+ require "graphiti/railtie"
180
+ end
181
+ end
182
+
173
183
  require "graphiti/runner"
174
184
 
175
185
  # Because we set 2 magic variables when processing the graph,
@@ -32,15 +32,20 @@ module Graphiti
32
32
  self.debug = ENV.fetch("GRAPHITI_DEBUG", true)
33
33
  self.debug_models = ENV.fetch("GRAPHITI_DEBUG_MODELS", false)
34
34
 
35
- if defined?(::Rails)
36
- if File.exist?("#{::Rails.root}/.graphiticfg.yml")
37
- cfg = YAML.load_file("#{::Rails.root}/.graphiticfg.yml")
38
- @schema_path = "#{::Rails.root}/public#{cfg["namespace"]}/schema.json"
35
+ # FIXME: Don't duplicate graphiti-rails efforts
36
+ if defined?(::Rails.root) && (root = ::Rails.root)
37
+ config_file = root.join(".graphiticfg.yml")
38
+ if config_file.exist?
39
+ cfg = YAML.load_file(config_file)
40
+ @schema_path = root.join("public#{cfg["namespace"]}/schema.json")
39
41
  else
40
- @schema_path = "#{::Rails.root}/public/schema.json"
42
+ @schema_path = root.join("public/schema.json")
43
+ end
44
+
45
+ if (logger = ::Rails.logger)
46
+ self.debug = logger.level.zero?
47
+ Graphiti.logger = logger
41
48
  end
42
- self.debug = ::Rails.logger.level.zero?
43
- Graphiti.logger = ::Rails.logger
44
49
  end
45
50
  end
46
51
 
@@ -66,4 +71,7 @@ module Graphiti
66
71
  send(:"#{key}=", original)
67
72
  end
68
73
  end
74
+
75
+ msg = "Use graphiti-rails's `config.graphiti.respond_to_formats`"
76
+ DEPRECATOR.deprecate_methods(Configuration, respond_to: msg, "respond_to=": msg)
69
77
  end
@@ -59,9 +59,10 @@ module Graphiti
59
59
  add_chunk(payload[:resource], payload[:parent]) do |logs, json|
60
60
  logs << [" \\_ #{sideload.name}", :yellow, true]
61
61
  json[:name] = sideload.name
62
- query = "#{payload[:resource].class.name}.all(#{params.inspect})"
63
- unless payload[:resource]
64
- query = "#{sideload.resource.class.name}: Manual sideload via .scope"
62
+ if sideload.class.scope_proc
63
+ query = "#{payload[:resource].class.name}: Manual sideload via .scope"
64
+ else
65
+ query = "#{payload[:resource].class.name}.all(#{params.inspect})"
65
66
  end
66
67
  logs << [" #{query}", :cyan, true]
67
68
  json[:query] = query
@@ -121,7 +122,7 @@ module Graphiti
121
122
  end
122
123
 
123
124
  def flush
124
- Graphiti.broadcast("debug.flush", {}) do |payload|
125
+ Graphiti.broadcast(:flush_debug, {}) do |payload|
125
126
  payload[:chunks] = chunks
126
127
  graph_statements.each do |chunk|
127
128
  flush_chunk(chunk)
@@ -187,8 +188,8 @@ module Graphiti
187
188
  end
188
189
 
189
190
  ActiveSupport::Notifications.subscribe \
190
- "graphiti.data", method(:on_data)
191
+ "resolve.graphiti", method(:on_data)
191
192
  ActiveSupport::Notifications.subscribe \
192
- "graphiti.render", method(:on_render)
193
+ "render.graphiti", method(:on_render)
193
194
  end
194
195
  end
@@ -8,6 +8,9 @@ module Graphiti
8
8
  # @see Base#wrap_context
9
9
  module Rails
10
10
  def self.included(klass)
11
+ backtrace = ::Rails::VERSION::MAJOR == 4 ? caller(2) : caller_locations(2)
12
+ Graphiti::DEPRECATOR.deprecation_warning("Including Graphiti::Rails", "Use graphiti-rails instead. See https://www.graphiti.dev/guides/graphiti-rails-migration for details.", backtrace)
13
+
11
14
  klass.class_eval do
12
15
  include Graphiti::Context
13
16
  include GraphitiErrors
@@ -1,8 +1,14 @@
1
1
  module Graphiti
2
+ # @deprecated Use graphiti-rails's Graphiti::Rails::Railtie
2
3
  class Railtie < ::Rails::Railtie
3
4
  rake_tasks do
4
- path = File.expand_path(__dir__)
5
- load "#{path}/tasks.rb"
5
+ load File.expand_path("deprecated_tasks.rb", __dir__)
6
+ end
7
+
8
+ generators do
9
+ Dir[File.expand_path("../../deprecated_generators/**/*.rb", __dir__)].each do |f|
10
+ require f
11
+ end
6
12
  end
7
13
 
8
14
  initializer "graphiti.require_activerecord_adapter" do
@@ -38,7 +38,8 @@ module Graphiti
38
38
  private
39
39
 
40
40
  def render(renderer)
41
- Graphiti.broadcast(:render, records: records, options: options) do
41
+ Graphiti.broadcast(:render, records: records, proxy: proxy, options: options) do
42
+ # TODO: If these aren't expensive to compute, set them before the broadcast block
42
43
  options[:fields] = proxy.fields
43
44
  options[:expose] ||= {}
44
45
  options[:expose][:extra_fields] = proxy.extra_fields
@@ -38,6 +38,7 @@ module Graphiti
38
38
  # Forward all headers
39
39
  def request_headers
40
40
  {}.tap do |headers|
41
+ # TODO: Maybe handle this in graphiti-rails
41
42
  if defined?(Rails) && context
42
43
  raw = context.request.headers.to_h
43
44
  if (auth = raw["HTTP_AUTHORIZATION"])
@@ -114,8 +114,9 @@ module Graphiti
114
114
  # If eager loading, ensure routes are loaded first, then apply
115
115
  # This happens in Railtie
116
116
  def eagerly_apply_sideload?(sideload)
117
- if defined?(::Rails)
118
- ::Rails.application.config.eager_load ? false : true
117
+ # TODO: Maybe handle this in graphiti-rails
118
+ if defined?(::Rails) && (app = ::Rails.application)
119
+ app.config.eager_load ? false : true
119
120
  else
120
121
  sideload.resource_class_loaded?
121
122
  end
@@ -4,6 +4,8 @@ module Graphiti
4
4
  extend ActiveSupport::Concern
5
5
 
6
6
  included do
7
+ backtrace = ::Rails::VERSION::MAJOR == 4 ? caller(2) : caller_locations(2)
8
+ DEPRECATOR.deprecation_warning("Including Graphiti::Responders", "Use graphiti-rails instead. See https://www.graphiti.dev/guides/graphiti-rails-migration for details.", backtrace)
7
9
  include ActionController::MimeResponds
8
10
  respond_to(*Graphiti.config.respond_to)
9
11
  end
@@ -3,6 +3,7 @@ module Graphiti
3
3
  attr_reader :resources
4
4
 
5
5
  def self.generate(resources = nil)
6
+ # TODO: Maybe handle this in graphiti-rails
6
7
  ::Rails.application.eager_load! if defined?(::Rails)
7
8
  resources ||= Graphiti.resources.reject(&:abstract_class?)
8
9
  resources.reject! { |r| r.name.nil? }
@@ -17,7 +18,7 @@ module Graphiti
17
18
  errors = Graphiti::SchemaDiff.new(old, schema).compare
18
19
  return errors if errors.any?
19
20
  end
20
- FileUtils.mkdir_p(Graphiti.config.schema_path.gsub("/schema.json", ""))
21
+ FileUtils.mkdir_p(Graphiti.config.schema_path.to_s.gsub("/schema.json", ""))
21
22
  File.write(Graphiti.config.schema_path, JSON.pretty_generate(schema))
22
23
  []
23
24
  end
@@ -76,8 +76,10 @@ module Graphiti
76
76
  params: @opts[:params],
77
77
  sideload: @opts[:sideload],
78
78
  parent: @opts[:parent],
79
+ # Set once data is resolved within block
80
+ # results: ...
79
81
  }
80
- Graphiti.broadcast("data", opts) do |payload|
82
+ Graphiti.broadcast(:resolve, opts) do |payload|
81
83
  yield payload
82
84
  end
83
85
  end
@@ -249,19 +249,16 @@ module Graphiti
249
249
  end
250
250
 
251
251
  if self.class.scope_proc
252
- Graphiti.broadcast("data", resource_class: resource.class, sideload: self) do |payload|
253
- sideload_scope = fire_scope(parents)
254
- sideload_scope = Scope.new sideload_scope,
255
- resource,
256
- query,
257
- parent: graph_parent,
258
- sideload: self,
259
- sideload_parent_length: parents.length,
260
- default_paginate: false
261
- sideload_scope.resolve do |sideload_results|
262
- payload[:results] = sideload_results
263
- fire_assign(parents, sideload_results)
264
- end
252
+ sideload_scope = fire_scope(parents)
253
+ sideload_scope = Scope.new sideload_scope,
254
+ resource,
255
+ query,
256
+ parent: graph_parent,
257
+ sideload: self,
258
+ sideload_parent_length: parents.length,
259
+ default_paginate: false
260
+ sideload_scope.resolve do |sideload_results|
261
+ fire_assign(parents, sideload_results)
265
262
  end
266
263
  else
267
264
  load(parents, query, graph_parent)
@@ -83,8 +83,9 @@ module Graphiti
83
83
  end
84
84
 
85
85
  def eagerly_validate_links?
86
- if defined?(::Rails)
87
- ::Rails.application.config.eager_load
86
+ # TODO: Maybe handle this in graphiti-rails
87
+ if defined?(::Rails) && (app = ::Rails.application)
88
+ app.config.eager_load
88
89
  else
89
90
  true
90
91
  end
@@ -1,3 +1,3 @@
1
1
  module Graphiti
2
- VERSION = "1.1.1"
2
+ VERSION = "1.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphiti
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Richmond
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-05-16 00:00:00.000000000 Z
11
+ date: 2019-05-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jsonapi-serializable
@@ -73,9 +73,6 @@ dependencies:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '4.1'
76
- - - "<"
77
- - !ruby/object:Gem::Version
78
- version: '6'
79
76
  type: :runtime
80
77
  prerelease: false
81
78
  version_requirements: !ruby/object:Gem::Requirement
@@ -83,9 +80,6 @@ dependencies:
83
80
  - - ">="
84
81
  - !ruby/object:Gem::Version
85
82
  version: '4.1'
86
- - - "<"
87
- - !ruby/object:Gem::Version
88
- version: '6'
89
83
  - !ruby/object:Gem::Dependency
90
84
  name: faraday
91
85
  requirement: !ruby/object:Gem::Requirement
@@ -149,9 +143,6 @@ dependencies:
149
143
  - - ">="
150
144
  - !ruby/object:Gem::Version
151
145
  version: '4.1'
152
- - - "<"
153
- - !ruby/object:Gem::Version
154
- version: '6'
155
146
  type: :development
156
147
  prerelease: false
157
148
  version_requirements: !ruby/object:Gem::Requirement
@@ -159,9 +150,6 @@ dependencies:
159
150
  - - ">="
160
151
  - !ruby/object:Gem::Version
161
152
  version: '4.1'
162
- - - "<"
163
- - !ruby/object:Gem::Version
164
- version: '6'
165
153
  - !ruby/object:Gem::Dependency
166
154
  name: graphiti_spec_helpers
167
155
  requirement: !ruby/object:Gem::Requirement
@@ -215,27 +203,29 @@ files:
215
203
  - bin/console
216
204
  - bin/rspec
217
205
  - bin/setup
206
+ - deprecated_generators/graphiti/api_test_generator.rb
207
+ - deprecated_generators/graphiti/generator_mixin.rb
208
+ - deprecated_generators/graphiti/install_generator.rb
209
+ - deprecated_generators/graphiti/resource_generator.rb
210
+ - deprecated_generators/graphiti/resource_test_generator.rb
211
+ - deprecated_generators/graphiti/templates/application_resource.rb.erb
212
+ - deprecated_generators/graphiti/templates/controller.rb.erb
213
+ - deprecated_generators/graphiti/templates/create_request_spec.rb.erb
214
+ - deprecated_generators/graphiti/templates/destroy_request_spec.rb.erb
215
+ - deprecated_generators/graphiti/templates/index_request_spec.rb.erb
216
+ - deprecated_generators/graphiti/templates/resource.rb.erb
217
+ - deprecated_generators/graphiti/templates/resource_reads_spec.rb.erb
218
+ - deprecated_generators/graphiti/templates/resource_writes_spec.rb.erb
219
+ - deprecated_generators/graphiti/templates/show_request_spec.rb.erb
220
+ - deprecated_generators/graphiti/templates/update_request_spec.rb.erb
218
221
  - exe/graphiti
219
222
  - gemfiles/.bundle/config
220
223
  - gemfiles/rails_4.gemfile
221
224
  - gemfiles/rails_5.gemfile
225
+ - gemfiles/rails_5_graphiti_rails.gemfile
222
226
  - gemfiles/rails_6.gemfile
227
+ - gemfiles/rails_6_graphiti_rails.gemfile
223
228
  - graphiti.gemspec
224
- - lib/generators/graphiti/api_test_generator.rb
225
- - lib/generators/graphiti/generator_mixin.rb
226
- - lib/generators/graphiti/install_generator.rb
227
- - lib/generators/graphiti/resource_generator.rb
228
- - lib/generators/graphiti/resource_test_generator.rb
229
- - lib/generators/graphiti/templates/application_resource.rb.erb
230
- - lib/generators/graphiti/templates/controller.rb.erb
231
- - lib/generators/graphiti/templates/create_request_spec.rb.erb
232
- - lib/generators/graphiti/templates/destroy_request_spec.rb.erb
233
- - lib/generators/graphiti/templates/index_request_spec.rb.erb
234
- - lib/generators/graphiti/templates/resource.rb.erb
235
- - lib/generators/graphiti/templates/resource_reads_spec.rb.erb
236
- - lib/generators/graphiti/templates/resource_writes_spec.rb.erb
237
- - lib/generators/graphiti/templates/show_request_spec.rb.erb
238
- - lib/generators/graphiti/templates/update_request_spec.rb.erb
239
229
  - lib/graphiti.rb
240
230
  - lib/graphiti/adapters/abstract.rb
241
231
  - lib/graphiti/adapters/active_record.rb
@@ -251,6 +241,7 @@ files:
251
241
  - lib/graphiti/context.rb
252
242
  - lib/graphiti/debugger.rb
253
243
  - lib/graphiti/delegates/pagination.rb
244
+ - lib/graphiti/deprecated_tasks.rb
254
245
  - lib/graphiti/deserializer.rb
255
246
  - lib/graphiti/errors.rb
256
247
  - lib/graphiti/extensions/boolean_attribute.rb
@@ -296,7 +287,6 @@ files:
296
287
  - lib/graphiti/sideload/polymorphic_belongs_to.rb
297
288
  - lib/graphiti/stats/dsl.rb
298
289
  - lib/graphiti/stats/payload.rb
299
- - lib/graphiti/tasks.rb
300
290
  - lib/graphiti/types.rb
301
291
  - lib/graphiti/util/attribute_check.rb
302
292
  - lib/graphiti/util/class.rb