Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Grape Rabl #597

Closed
kushkella opened this issue Nov 6, 2014 · 1 comment
Closed

Grape Rabl #597

kushkella opened this issue Nov 6, 2014 · 1 comment

Comments

@kushkella
Copy link

I'm using Rabl with Grape and gem version 0.11.2 and later don't seem to work for me. I tried to figure out what the problem could be, and it seems that something was introduced while refactoring code in 0.11.2 version. Following is a partial stack trace:

/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/sources.rb:70:in `fetch_sinatra_source'
/Users/kushkella/Workspace/k2_web/lib/extensions/rabl_ext.rb:18:in `block in fetch_source'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl.rb:60:in `source_cache'
/Users/kushkella/Workspace/k2_web/lib/extensions/rabl_ext.rb:10:in `fetch_source'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/partials.rb:12:in `partial_as_engine'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:281:in `partial'
/Users/kushkella/Workspace/k2_web/api/templates/shared/companies/show.rabl:6:in `block in eval_source'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:159:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:159:in `node'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:114:in `block in compile_settings'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:113:in `each'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:113:in `compile_settings'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:58:in `block in to_hash'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:269:in `cache_results'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:49:in `to_hash'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:86:in `to_hash'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:48:in `block in render'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:380:in `cache_results'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:47:in `render'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:134:in `block in merge_engines_into_result'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:119:in `each'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:119:in `merge_engines_into_result'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:55:in `block in to_hash'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:269:in `cache_results'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:49:in `to_hash'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:86:in `to_hash'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:48:in `block in render'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:380:in `cache_results'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:47:in `render'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:124:in `block (2 levels) in merge_engines_into_result'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:122:in `each'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:122:in `block in merge_engines_into_result'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:119:in `each'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:119:in `merge_engines_into_result'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:55:in `block in to_hash'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:269:in `cache_results'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:49:in `to_hash'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:86:in `to_hash'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:48:in `block in render'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:380:in `cache_results'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:47:in `render'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:124:in `block (2 levels) in merge_engines_into_result'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:122:in `each'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:122:in `block in merge_engines_into_result'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:119:in `each'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:119:in `merge_engines_into_result'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:55:in `block in to_hash'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:269:in `cache_results'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/builder.rb:49:in `to_hash'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:86:in `to_hash'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:101:in `to_dumpable'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:110:in `to_json'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:48:in `block in render'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:380:in `cache_results'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/engine.rb:47:in `render'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rabl-0.11.2/lib/rabl/template.rb:15:in `evaluate'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/tilt-1.4.1/lib/tilt/template.rb:103:in `render'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-rabl-0.3.0/lib/grape-rabl/formatter.rb:17:in `block in call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-rabl-0.3.0/lib/grape-rabl/formatter.rb:47:in `rabl'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-rabl-0.3.0/lib/grape-rabl/formatter.rb:15:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/middleware/formatter.rb:33:in `block in after'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/middleware/formatter.rb:32:in `collect'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/middleware/formatter.rb:32:in `after'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/middleware/base.rb:25:in `call!'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/middleware/base.rb:18:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/newrelic_rpm-3.9.6.257/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/middleware/base.rb:24:in `call!'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/middleware/base.rb:18:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/newrelic_rpm-3.9.6.257/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rack-1.5.2/lib/rack/auth/basic.rb:25:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/middleware/auth/base.rb:37:in `_call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/middleware/auth/base.rb:19:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/newrelic_rpm-3.9.6.257/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/middleware/base.rb:24:in `call!'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/middleware/base.rb:18:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/newrelic_rpm-3.9.6.257/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/Users/kushkella/Workspace/k2_web/api/api_logger.rb:16:in `block in call'
/Users/kushkella/Workspace/k2_web/api/api_logger.rb:16:in `catch'
/Users/kushkella/Workspace/k2_web/api/api_logger.rb:16:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/newrelic_rpm-3.9.6.257/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/middleware/error.rb:27:in `block in call!'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/middleware/error.rb:26:in `catch'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/middleware/error.rb:26:in `call!'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/middleware/base.rb:18:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/newrelic_rpm-3.9.6.257/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rack-1.5.2/lib/rack/head.rb:11:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/newrelic_rpm-3.9.6.257/lib/new_relic/agent/instrumentation/middleware_tracing.rb:57:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rack-1.5.2/lib/rack/builder.rb:138:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/endpoint.rb:172:in `call!'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/endpoint.rb:160:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rack-mount-0.8.3/lib/rack/mount/route_set.rb:152:in `block in call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rack-mount-0.8.3/lib/rack/mount/code_generation.rb:96:in `block in recognize'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rack-mount-0.8.3/lib/rack/mount/code_generation.rb:82:in `optimized_each'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rack-mount-0.8.3/lib/rack/mount/code_generation.rb:95:in `recognize'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/rack-mount-0.8.3/lib/rack/mount/route_set.rb:141:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/api.rb:128:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/api.rb:43:in `call!'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/grape-0.9.0/lib/grape/api.rb:39:in `call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/actionpack-4.1.7/lib/action_dispatch/journey/router.rb:73:in `block in call'
/Users/kushkella/.rvm/gems/ruby-2.1.2@k2_web/gems/actionpack-4.1.7/lib/action_dispatch/journey/router.rb:59:in `each'

As far as I can tell It seems like that Rabl tries to call fetch_sinatra_source, but since the provided context_scope is Grape it fails because there is no views setting for Grape. The simple fix that I tried was replacing:

elsif defined?(Sinatra) && context_scope.respond_to?(:settings) with elsif defined?(Sinatra) && context_scope.respond_to?(:settings) && context_scope.settings.respond_to?(:views)

in the fetch_source method in Rabl::Sources module and everything seemed to work. And just to be clear Sinatra is a dependency of another gem that I'm using which is why defined?(Sinatra) check passes. I do not use it in conjunction with Rabl.

@DouweM
Copy link
Collaborator

DouweM commented Dec 7, 2014

I think this has been fixed through merging #602, so I'm closing. Let me know if it hasn't and I'll reopen this issue.

@DouweM DouweM closed this as completed Dec 7, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants