Lucas Hosseini
2696557650
Replace Field#included? with Field#excluded?.
2016-01-13 06:20:05 +01:00
Chris Nixon
7fbf7e536d
Use condition_type in case statement for included?.
2016-01-13 06:20:05 +01:00
Lucas Hosseini
40ed7b57bd
Factor out ancestor class Field of Attribute and Reflection.
2016-01-13 06:20:04 +01:00
Lucas Hosseini
6860318133
Add support for if/unless on associations.
2016-01-13 06:19:47 +01:00
Lucas Hosseini
a502b5d38b
Add support for if/unless on attributes.
2016-01-13 06:19:28 +01:00
Lucas Hosseini
adaf5b87df
Merge pull request #1248 from beauby/jsonapi-parse
...
JSON API deserialization.
2016-01-13 06:18:52 +01:00
Lucas Hosseini
20a58d7f5c
Add support for JSON API deserialization (experimental).
2016-01-13 05:48:06 +01:00
Lucas Hosseini
2e87c8effe
Fix comment.
2016-01-13 05:41:32 +01:00
Ben Woosley
8ac1f107f4
Remove unnecessary dup in ActiveModel::Serializer::Associations#associate
...
The `_reflections` are duped on `inherited` - no need to `dup` them
with each addition.
2016-01-12 14:42:07 -08:00
Ben Woosley
251e33a0a1
Don't pluralize the CollectionSerializer#root for #json_key
...
One of three constituents is used to provide the
CollectionSerializer's #json_key:
1) the :root option - controlled by the caller
2) the #name of the first resource serializer - the root or
underscored model name
3) the underscored #name of the resources object - generally
equivalent to the underscored model name of #2
Of the three, only the latter 2 are out of the callers control, and
only the latter two are expected to be singular by default. Not
pluralizing the root gives the caller additional flexibility in
defining the desired root, whether conventionally plural,
unconventionally plural (e.g. objects_received:) or singular.
2016-01-12 09:32:43 -08:00
Lucas Hosseini
f6fe0c8aa3
Extract links and type-related methods to their own module.
2016-01-12 15:05:39 +01:00
Ben Woosley
0a6c133d25
Tidy up the tests
...
* Use assert_nil where appropriate
* Lead with the expected value in collection_serializer_test.rb, etc
so that expected/actual in test failure messages are not reversed
2016-01-07 11:21:19 -08:00
lcp
43312fa083
support read_multi
2016-01-05 20:55:34 +08:00
Benjamin Fleischer
7d4f0c5c8a
Merge branch 'bf4-consider_association_blocks'
2016-01-03 23:16:49 -06:00
Lucas Hosseini
77095f2a84
Add ActiveSupport::Autoload extension to Attribute.
2015-12-30 17:44:19 +01:00
Lucas Hosseini
a586a45863
Remove key from Attribute class.
2015-12-30 16:47:10 +01:00
Lucas Hosseini
7d24cbfd3d
Extract latent Attribute object.
2015-12-30 16:47:10 +01:00
Lucas Hosseini
1d4b27f60f
Improve attribute value computation.
2015-12-30 16:47:10 +01:00
Lucas Hosseini
ee0283cb57
Simplify attributes handling.
2015-12-30 16:47:10 +01:00
Benjamin Fleischer
d7de53ce30
Consider evaluating association in serializer context
...
For discussion:
Consider evaluating association in serializer context
That way, associations are really just anything that
can be conditionally included. They no longer
have to actually be methods on the object or serializer.
e.g.
```diff
has_many :comments do
- last(1)
+ Comment.active.for_serialization(object).last(1)
end
```
2015-12-29 22:16:42 -06:00
Lucas Hosseini
fd06a8ad0d
Extract caching into its own module.
2015-12-28 02:53:49 +01:00
Benjamin Fleischer
b6a4ad1c26
Merge pull request #1383 from beauby/simplify-associations
...
Simplify reflections handling.
2015-12-22 10:37:28 -06:00
Benjamin Fleischer
fce856fc83
Merge pull request #1371 from bf4/documentation_updates
...
[DOCS] Refactor, update, create documentation
2015-12-20 22:30:44 -06:00
Benjamin Fleischer
30fd9d9eb7
Merge pull request #1353 from bf4/disable_serializer_lookup
...
Allow users to globally opt out of automatic serializer lookup
2015-12-20 20:04:16 -06:00
Lucas Hosseini
762f298c03
Simplify reflections handling.
2015-12-20 16:19:10 +01:00
Benjamin Fleischer
ce17a1b305
[DOCS] Refactor, update, create documentation [ci skip]
2015-12-14 14:38:29 -06:00
Benjamin Fleischer
bf8270b8b4
Document Serializer settings and private api [ci skip]
2015-12-10 15:08:22 -06:00
Benjamin Fleischer
386a567dfc
Evaluate association blocks as scopes on the association
2015-12-04 13:58:22 -06:00
Benjamin Fleischer
c4feccfd10
Refactor Association/Reflection block value reading
2015-12-03 10:53:43 -06:00
Benjamin Fleischer
cd736e0adf
Memoize attributes
2015-12-02 17:47:24 -06:00
Benjamin Fleischer
036604b149
Extract Serializer Attributes into its own file
2015-12-02 17:45:42 -06:00
Benjamin Fleischer
e2903643c5
Encapsulate serialized_associations; test inline associations
2015-12-02 17:20:22 -06:00
Lucas Hosseini
7cbef1b3b5
Add inline syntax for defining associations
...
Adapted from
https://github.com/rails-api/active_model_serializers/pull/1262
2015-12-02 17:20:22 -06:00
Benjamin Fleischer
28394340d8
Add config.serializer_lookup_enabled that defaults true
2015-11-30 00:20:58 -06:00
Trek Glowacki
170db3ba88
Allow users to globally opt out of automatic lookup
2015-11-30 00:15:02 -06:00
Benjamin Fleischer
a9ce4fb766
Move caching initialization to Railtie
...
Also
- Add reference to config from ActiveModelSerializers.config
- correctly call super in FragmentCacheTest#setup
- rename test rails app from Foo to ActiveModelSerializers::RailsApplication
2015-11-25 21:56:01 -06:00
Benjamin Fleischer
aa4384839d
Merge pull request #1322 from bf4/maurogeorge-patch-10
...
Instrumenting rendering of resources
2015-11-19 13:01:38 -06:00
Benjamin Fleischer
360ecc88fe
Clean up notification code with some meta-prog
2015-11-10 03:09:24 -06:00
Benjamin Fleischer
21bb306d38
Keep Logging in the ActiveModelSerializers namespace
2015-11-10 03:09:24 -06:00
Mauro George
51424963da
ActiveSupport::Notifications render.active_model_serializers
...
Squashed commits:
Add Logging
Generates logging when renders a serializer.
Tunning performance on notify_active_support
- Use yield over block.call
- Freeze the event name string
Organize the logger architeture
* Keep only the `ActiveModel::Serializer.logger` to follow the same public API we
have for example to config, like `ActiveModel::Serializer.config.adapter` and
remove the `ActiveModelSerializers.logger` API.
* Define the logger on the load of the AMS, following the Rails convention on
Railties [1], [2] and [3].
This way on non Rails apps we have a default logger and on Rails apps we will
use the `Rails.logger` the same way that Active Job do [4].
[1]: 2ad9afe4ff/activejob/lib/active_job/railtie.rb (L9-L11)
[2]: 2ad9afe4ff/activerecord/lib/active_record/railtie.rb (L75-L77)
[3]: 2ad9afe4ff/actionview/lib/action_view/railtie.rb (L19-L21)
[4]: 2ad9afe4ff/activejob/lib/active_job/logging.rb (L10-L11)
Performance tunning on LogSubscriber#render
Move the definition of locals to inside the `info` block this way the code is
executed only when the logger is called.
Remove not needed check on SerializableResource
Use SerializableResource on ActionController integration
On the ActionController was using a adapter, and since the instrumentation is
made on the SerializableResource we need to use the SerializableResource over
the adapter directly. Otherwise the logger is not called on a Rails app.
Use SerializableResource on the ActionController, since this is the main
interface to create and call a serializer.
Using always the SerializableResource we can keep the adapter code more easy to
mantain since no Adapter will need to call the instrumentation, only the
SerializableResource care about this.
Add docs about logging
Add a CHANGELOG entry
Keep the ActiveModelSerializers.logger
Better wording on Logging docs
[ci skip]
Add doc about instrumentation
[ci skip]
Use ActiveModel::Callbacks on the SerializableResource
2015-11-10 03:09:24 -06:00
Benjamin Fleischer
e5a109865c
Test ArraySerializer less rigorously on Minitest 4
2015-11-08 23:12:56 -06:00
tchak
31172b1be5
rename context to serialization_context
2015-11-07 20:32:27 +01:00
Paul Chobert
6407dbeadd
Add test and bugfix to include an array of string
2015-11-06 17:23:25 +01:00
Lucas Hosseini
8ac2b9b01f
Minor cleanup.
2015-11-03 23:59:12 +01:00
Lucas Hosseini
3804dcc238
Add support for resource-level JSON API links.
2015-11-03 23:50:16 +01:00
Lucas Hosseini
0948c4199a
Compute only requested attributes.
2015-10-31 19:20:53 +01:00
L. Preston Sego III
17be650538
Revert "rename context to serialization_context and add url helpers"
2015-10-29 08:16:47 -04:00
L. Preston Sego III
a063cbea21
Merge pull request #1289 from tchak/serialization_context
...
rename context to serialization_context and add url helpers
2015-10-29 07:56:47 -04:00
Lucas Hosseini
b5aecfd114
Initialize fieldset.
2015-10-25 19:56:43 +01:00
Lucas Hosseini
13ef8fed1b
Fix fields option to restrict relationships as well.
2015-10-24 21:28:13 +02:00
tchak
d08ee5994f
rename context to serialization_context and add url helpers
2015-10-22 22:28:54 +02:00
Lucas Hosseini
63317699f3
Correct minor typos
2015-10-22 10:31:21 -05:00
Benjamin Fleischer
80e75202ea
Document Serializer and FragmentCache
2015-10-22 10:31:21 -05:00
Benjamin Fleischer
2c8b9b796d
Rename ArraySerializer to CollectionSerializer for clarity
2015-10-21 16:53:26 -05:00
Benjamin Fleischer
124faaa829
Add PORO serializable base class: ActiveModelSerializers::Model
2015-10-14 21:33:02 -05:00
João Moura
da7e6dc795
Merge pull request #1247 from beauby/jsonapi-toplevel-links
...
Add support for toplevel JSON API links.
2015-10-10 17:52:08 -03:00
L. Preston Sego III
6018ef16c4
Merge pull request #1225 from beauby/nested-serializer-lookup
...
Add support for nested serializers
2015-10-09 10:12:08 -04:00
Benjamin Fleischer
49eb531539
Merge pull request #1239 from beauby/fix-duplicate-jsonapi
...
Fix duplicate resources inside included in compound document.
2015-10-08 14:19:02 -05:00
Lucas Hosseini
9147469842
Extend serializer lookup to the parent serializer.
2015-10-08 18:23:54 +02:00
Benjamin Fleischer
dc44b136aa
Remove unnecessarily silenced warnings
2015-10-07 05:54:57 -05:00
Lucas Hosseini
54303b6290
Add support for toplevel JSON API links.
2015-10-06 20:01:46 +02:00
Lucas Hosseini
f4bb4c81b0
Fix duplicate resources between data and included.
2015-10-06 17:25:27 +02:00
Lucas Hosseini
503bfe9598
Move meta/meta_key handling inside adapter.
2015-10-05 19:06:50 +02:00
Lucas Hosseini
658810e6a0
Extract attributes filtering from serializer into adapter.
2015-10-05 08:21:26 +02:00
Lucas Hosseini
34d65716cb
Merge pull request #1214 from NullVoxPopuli/issue/1211-failing-test
...
Fix #1211 , include_tree is null when using the key: options
2015-10-02 15:29:04 +02:00
Liam Bowen
f8323fc9e5
Fixes #1211 - retrieve the key from the reflection options when building associations
2015-10-02 08:52:21 -04:00
Benjamin Fleischer
a2bfe190e3
Merge pull request #1050 from bf4/json_api_member
...
Add top-level jsonapi member to JSON API adapter
2015-10-01 23:03:11 -05:00
Ivan Yurov
2dd569ae51
Add Serializer 'type' directive to control type field, for use by the JsonApi adapter
2015-10-01 22:48:57 -04:00
Benjamin Fleischer
9d7da8afc4
Add support for top level jsonapi member.
2015-10-01 21:22:49 -05:00
Lucas Hosseini
35473cf983
Merge pull request #1186 from bf4/empty_else
...
Enforce case requires else; allow else nil
2015-09-21 17:48:27 +02:00
Lucas Hosseini
606e2ae337
Merge pull request #1127 from NullVoxPopuli/support-nested-associations-for-json-adapter
...
Support nested associations for Json and Attributes adapters + Refactor Attributes adapter
2015-09-21 17:20:29 +02:00
Benjamin Fleischer
1d8a3d039a
Enforce case requires else; allow else nil
2015-09-21 09:50:53 -05:00
L. Preston Sego III
a74ea189cd
Refactors of the Attribute adapter. Adds support for nested associations specified from the include key in the controller. Adds some tests and some method documentation
2015-09-21 10:35:47 -04:00
L. Preston Sego III
8f2dd66710
Merge pull request #1183 from rails-api/block_style
...
Update Rubocop todo
2015-09-21 01:25:50 -05:00
Lucas Hosseini
4976837c31
Fix options passing in Json and Attributes adapters.
2015-09-21 07:13:17 +02:00
Benjamin Fleischer
140b4f2735
Update Rubocop todo
2015-09-21 00:11:08 -05:00
Benjamin Fleischer
ca6b193fcb
Enforce Rails-style (line-count-based) block style
2015-09-21 00:00:53 -05:00
Lucas Hosseini
ac06013aeb
Add support for wildcard includes + improve perfs on JsonApi includes.
2015-09-21 05:58:00 +02:00
Benjamin Fleischer
19de5f7722
Introduce Adapter::Base
...
Breaking change:
- Adapters now inherit Adapter::Base
- 'Adapter' is now a module, no longer a class
Why?
- using a class as a namespace that you also inherit from is complicated and circular at time i.e.
buggy (see https://github.com/rails-api/active_model_serializers/pull/1177 )
- The class methods on Adapter aren't necessarily related to the instance methods, they're more
Adapter functions
- named `Base` because it's a Rails-ism
- It helps to isolate and highlight what the Adapter interface actually is
2015-09-20 12:26:04 -05:00
Benjamin Fleischer
ad2ca3b45c
Remove Adapter autoloads in favor of require
...
Adapters must be eager loaded to ensure they are defined
before they are used as namespacing.
cf6a074a1c (diff-41f2b3509d33e1c65bb70ee0ec7a2eea)
2015-09-18 12:44:53 -05:00
Benjamin Fleischer
c6f8d0f5f2
Rename FlattenJson to Attributes (allow plural adapter names)
2015-09-18 10:17:02 -05:00
Benjamin Fleischer
ceef214f1e
FlattenJson adapter no longer inherits Json adapter
2015-09-18 10:15:49 -05:00
L. Preston Sego III
701eb17a27
Merge pull request #1172 from bf4/better_adapter_registration
...
Better serializer registration, get more than just the first module
2015-09-18 02:12:54 -04:00
Benjamin Fleischer
eb1264ad99
Better serializer registration, get more than just the first module
...
But is potentially breaking anyone on rc3, but the fix is just
to manually register the adapter with the rc3-style name
2015-09-17 23:33:04 -05:00
Benjamin Fleischer
0091be89f8
Consistently refer to the 'JSON API' and the 'JsonApi' adapter
2015-09-17 15:22:28 -05:00
Benjamin Fleischer
9d65f0adc5
Distinguish options ivar from local; Extract latent Adapter::CachedSerializer
2015-09-17 10:45:09 -05:00
João M. D. Moura
1ca73e0c33
updating version to new release
2015-09-16 12:19:44 -03:00
L. Preston Sego III
1bff6173d1
Merge pull request #1089 from bf4/add_logger
...
Add ActiveModelSerializers.logger with default null device
2015-09-15 14:51:29 -04:00
João Moura
479146c02a
Merge pull request #1121 from beauby/fix-jsonapi-links
...
Refactor `add_links` in JSONAPI adapter.
2015-09-15 05:00:39 -03:00
Lucas Hosseini
fb7ec88e2e
Remove unnecessary parentheses accidentally reintroduced in #1017 .
2015-09-15 00:25:37 +02:00
Lucas Hosseini
319a9071af
Remove legacy method accidentally reintroduced in #1017 .
2015-09-15 00:22:28 +02:00
Lucas Hosseini
285cdf841e
Split serializable_hash into two methods.
2015-09-14 06:46:52 +02:00
Lucas Hosseini
572ff7db20
Refactor add_links in JSONAPI adapter.
2015-09-14 06:46:52 +02:00
Lucas Hosseini
2789a579e8
Merge pull request #1131 from beauby/jsonapi-include-tree
...
Extended format for JSONAPI `include` option
2015-09-13 23:10:05 +02:00
Lucas Hosseini
ce7a839f3d
Extended format for JSONAPI include option.
2015-09-13 22:45:47 +02:00
Ville Lautanala
fada4dcb08
Fix typo in fieldset exception
2015-09-12 18:56:15 +03:00
L. Preston Sego III
b594d1487b
Merge pull request #1132 from beauby/fix-flatten-json
...
Get rid of unnecessary instance variables, and implied dependencies.
2015-09-12 11:51:38 -04:00
Lucas Hosseini
a9d07cd68f
Get rid of unnecessary instance variables, and implied dependencies.
2015-09-10 04:02:06 +02:00
Benjamin Fleischer
28345adef0
Use Adapter.const_get instead of safe_constantize
...
(Thanks to sandstrom for the reference to ActiveJob::QueueAdapters
a11571cec3/activejob/lib/active_job/queue_adapters.rb (L123-L133)
2015-09-09 08:55:20 -05:00
Benjamin Fleischer
363345b8dd
Rename Adapter.get to Adapter.lookup
...
Per https://github.com/rails-api/active_model_serializers/pull/1017#discussion_r39003855
comment by sandstrom in discussion of the inherited hook
> I'm thinking that it would be better to register adapters manually, without using the hook, i.e.
> have people call ActiveModel::Serializer::Adapter.register directly (perhaps in an initializer).
> Possibly, some inspiration can be taken from how ActiveJob adapters are wired[1].
> [1] a11571cec3/activejob/lib/active_job/queue_adapter.rb (L52-L56)
2015-09-09 08:55:20 -05:00