Comments (13)
Thanks for the heads up, I will definitely check out how to fix this soon.
from rabl.
I think this has been fixed, can you confirm if this still happens?
from rabl.
Closing, re-open if you notice this in last version.
from rabl.
just switched my project's bundle to the git version. the kicker now gets executed 3 times :-)
from rabl.
That is awesomely bad. Can you help me with a simple test sample? I have two AR models: Users and Address and User has_one address. I created a bunch of users in AR and then did:
get "/" do
@users = User.includes(:address).where('name != ?', 'frank')
render "users"
end
with users template:
object @users
attribute :id, :name, :age
child :address do
attribute :street, :city
end
code :foo do |m|
m.name + "!"
end
and the logs show this:
DEBUG - [14/Apr/2011 12:53:18] "User Load (0.8ms) SELECT "users".* FROM "users" WHERE (name != 'frank')"
DEBUG - [14/Apr/2011 12:53:18] "Address Load (0.4ms) SELECT "addresses".* FROM "addresses" WHERE ("addresses".user_id IN (1,2,3))"
I think I am doing the test wrong. Do you think this is criteria objects in mongoid specific? I do check respond_to?
on the object once or twice, I wonder if even a respond_to? kicks the object.
from rabl.
no prob, here's a simple sample project that replicates the bug: http://cl.ly/231i0N0k2M1X0J0j3918
from rabl.
Also, I pushed to git version a new little hack that should fix it when you use the collection
declaration instead of object.
collection @users
instead of object
will force the passed in object to a collection with to_a
. I would prefer a more elegant solution though such that using the 'object' directly still works.
from rabl.
Thanks will try to come up with a better solution based on that test project. Can you confirm if on latest git rev that using collection solves it at least?
from rabl.
cool, sounds good. i have a breakpoint in the rabl src code, tracing through it now. i'll let you know if i come up with anything
from rabl.
Awesome thanks, would love to know the root cause of the three invocations.
from rabl.
hmm, it might just be a mongoid issue
e @_data.respond_to?(:each_pair)
MONGODB rabl['users'].find({})
from rabl.
ok, looks like this is just a mongoid issue. it's executing a query whenever respond_to?
is called on the criteria object. the solution you added of doing a .to_a
on the collection @users
is great and should solve my issues in the meantime. thanks!
from rabl.
Yeah kicking on respond_to? is kind of sloppy, tempted to report the issue for mongoid. AR and DM act as you'd expect (no kick). Cleaned up the implementation of collection, I don't think it's that bad of an approach to fixing this for now. I kind of think it is a bit cleaner to declare the collection explicitly anyways. Thanks for your help.
from rabl.
Related Issues (20)
- Drop riot? Unmaintained, broken on Ruby 2.5. HOT 2
- How to use rabl with swagger? HOT 2
- Tagging a new version, or use master branch? HOT 1
- Unable to properly render json for an simple array of objects HOT 1
- How do I render free form metadata HOT 1
- Migrating to Rails 5 - Rabl returning Active Record object
- Rspec renders rabl as string instead of json
- Not able to get the rendered result in Rails console HOT 1
- Rabl output values as keys
- Rabl partial lookup based on requested api namespace
- upgrading from 0.14.0 to 0.14.1 is a breaking change HOT 8
- Child removes node from response when the provided object is an empty array HOT 2
- Rabl not renders collection properly HOT 4
- Is nested map valid in RABL?
- N+1 issues HOT 1
- some problems to install rable on windows HOT 2
- Avoid playing with `Oj` shared `default_options` HOT 2
- rabl tests failing with rr 3.x and Ruby 3 HOT 12
- Rails 7 compatibility HOT 1
- access controller instance variables in representers
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rabl.