0.4.4 gem does not work with jruby (v.1.5.6.) It works fine with ruby MRI.
Stack trace:
[java] ArgumentError (wrong # of arguments(3 for 2)):
[java] gems/gems/oauth-0.4.4/lib/oauth/signature/hmac/base.rb:12:in `digest'
[java] gems/gems/oauth-0.4.4/lib/oauth/signature/base.rb:65:in `signature'
[java] gems/gems/oauth-0.4.4/lib/oauth/signature.rb:23:in `sign'
[java] gems/gems/oauth-0.4.4/lib/oauth/client/helper.rb:45:in `signature'
[java] gems/gems/oauth-0.4.4/lib/oauth/client/helper.rb:75:in `header'
[java] gems/gems/oauth-0.4.4/lib/oauth/client/net_http.rb:90:in `set_oauth_header'
[java] gems/gems/oauth-0.4.4/lib/oauth/client/net_http.rb:30:in `oauth!'
[java] gems/gems/oauth-0.4.4/lib/oauth/consumer.rb:225:in `sign!'
[java] gems/gems/oauth-0.4.4/lib/oauth/consumer.rb:191:in `create_signed_request'
[java] gems/gems/oauth-0.4.4/lib/oauth/consumer.rb:162:in `request'
[java] gems/gems/oauth-0.4.4/lib/oauth/consumer.rb:197:in `token_request'
[java] gems/gems/oauth-0.4.4/lib/oauth/consumer.rb:139:in `get_request_token'
[java] app/controllers/twitter_controller.rb:9:in `authorize'
[java] gems/gems/actionpack-3.0.3/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
[java] gems/gems/actionpack-3.0.3/lib/abstract_controller/base.rb:151:in `process_action'
[java] gems/gems/actionpack-3.0.3/lib/action_controller/metal/rendering.rb:11:in `process_action'
[java] gems/gems/actionpack-3.0.3/lib/abstract_controller/callbacks.rb:18:in `process_action'
[java] gems/gems/activesupport-3.0.3/lib/active_support/callbacks.rb:438:in `_run__1732945617__process_action__259020027__callbacks'
[java] gems/gems/activesupport-3.0.3/lib/active_support/callbacks.rb:424:in `_run_process_action_callbacks'
[java] gems/gems/activesupport-3.0.3/lib/active_support/callbacks.rb:93:in `run_callbacks'
[java] gems/gems/actionpack-3.0.3/lib/abstract_controller/callbacks.rb:17:in `process_action'
[java] gems/gems/actionpack-3.0.3/lib/action_controller/metal/instrumentation.rb:30:in `process_action'
[java] gems/gems/activesupport-3.0.3/lib/active_support/notifications.rb:52:in `instrument'
[java] gems/gems/activesupport-3.0.3/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
[java] gems/gems/activesupport-3.0.3/lib/active_support/notifications.rb:52:in `instrument'
[java] gems/gems/actionpack-3.0.3/lib/action_controller/metal/instrumentation.rb:29:in `process_action'
[java] gems/gems/actionpack-3.0.3/lib/action_controller/metal/rescue.rb:17:in `process_action'
[java] gems/gems/actionpack-3.0.3/lib/abstract_controller/base.rb:120:in `process'
[java] gems/gems/actionpack-3.0.3/lib/abstract_controller/rendering.rb:40:in `process'
[java] gems/gems/actionpack-3.0.3/lib/action_controller/metal.rb:138:in `dispatch'
[java] gems/gems/actionpack-3.0.3/lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
[java] gems/gems/actionpack-3.0.3/lib/action_controller/metal.rb:178:in `action'
[java] gems/gems/actionpack-3.0.3/lib/action_dispatch/routing/route_set.rb:62:in `call'
[java] gems/gems/actionpack-3.0.3/lib/action_dispatch/routing/route_set.rb:62:in `dispatch'
[java] gems/gems/actionpack-3.0.3/lib/action_dispatch/routing/route_set.rb:27:in `call'
[java] gems/gems/rack-mount-0.6.13/lib/rack/mount/route_set.rb:148:in `call'
[java] gems/gems/rack-mount-0.6.13/lib/rack/mount/code_generation.rb:111:in `recognize'
[java] gems/gems/rack-mount-0.6.13/lib/rack/mount/code_generation.rb:73:in `optimized_each'
[java] gems/gems/rack-mount-0.6.13/lib/rack/mount/code_generation.rb:110:in `recognize'
[java] gems/gems/rack-mount-0.6.13/lib/rack/mount/route_set.rb:139:in `call'
[java] gems/gems/actionpack-3.0.3/lib/action_dispatch/routing/route_set.rb:492:in `call'
[java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
[java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/head.rb:14:in `call'
[java] gems/gems/rack-1.2.1/lib/rack/methodoverride.rb:24:in `call'
[java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/params_parser.rb:21:in `call'
[java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/flash.rb:182:in `call'
[java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/session/abstract_store.rb:149:in `call'
[java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/cookies.rb:295:in `call'
[java] gems/gems/activerecord-3.0.3/lib/active_record/query_cache.rb:32:in `call'
[java] gems/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/query_cache.rb:28:in `cache'
[java] gems/gems/activerecord-3.0.3/lib/active_record/query_cache.rb:12:in `cache'
[java] gems/gems/activerecord-3.0.3/lib/active_record/query_cache.rb:31:in `call'
[java] gems/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:353:in `call'
[java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/callbacks.rb:46:in `call'
[java] gems/gems/activesupport-3.0.3/lib/active_support/callbacks.rb:430:in `_run_call_callbacks'
[java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/callbacks.rb:44:in `call'
[java] gems/gems/rack-1.2.1/lib/rack/sendfile.rb:107:in `call'
[java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/remote_ip.rb:48:in `call'
[java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/show_exceptions.rb:46:in `call'
[java] gems/gems/railties-3.0.3/lib/rails/rack/logger.rb:13:in `call'
[java] gems/gems/rack-1.2.1/lib/rack/runtime.rb:17:in `call'
[java] gems/gems/railties-3.0.3/lib/rails/application.rb:168:in `call'
[java] file:lib/jruby-rack-1.0.3.jar!/rack/handler/servlet.rb:19:in `call'
[java] :1
[java]
Someone shared a hack that works around the problem:
--- a/WebContent/WEB-INF/gems/gems/oauth-0.4.4/lib/oauth/signature/hmac/base.rb
+++ b/WebContent/WEB-INF/gems/gems/oauth-0.4.4/lib/oauth/signature/hmac/base.rb
@@ -2,6 +2,7 @@
require 'oauth/signature/base'
require 'digest/hmac'
+require 'openssl'
module OAuth::Signature::HMAC
class Base < OAuth::Signature::Base
@@ -9,7 +10,8 @@ module OAuth::Signature::HMAC
private
def digest
self.class.digest_class Object.module_eval("::Digest::#{self.class.digest_klass}")
- Digest::HMAC.digest(signature_base_string, secret, self.class.digest_class)
+ digest = OpenSSL::Digest::Digest.new('sha1')
+ OpenSSL::HMAC.digest(digest, secret, signature_base_string)
end
end
end
0.4.4 gem does not work with jruby (v.1.5.6.) It works fine with ruby MRI.
Stack trace:
[java] ArgumentError (wrong # of arguments(3 for 2)): [java] gems/gems/oauth-0.4.4/lib/oauth/signature/hmac/base.rb:12:in `digest' [java] gems/gems/oauth-0.4.4/lib/oauth/signature/base.rb:65:in `signature' [java] gems/gems/oauth-0.4.4/lib/oauth/signature.rb:23:in `sign' [java] gems/gems/oauth-0.4.4/lib/oauth/client/helper.rb:45:in `signature' [java] gems/gems/oauth-0.4.4/lib/oauth/client/helper.rb:75:in `header' [java] gems/gems/oauth-0.4.4/lib/oauth/client/net_http.rb:90:in `set_oauth_header' [java] gems/gems/oauth-0.4.4/lib/oauth/client/net_http.rb:30:in `oauth!' [java] gems/gems/oauth-0.4.4/lib/oauth/consumer.rb:225:in `sign!' [java] gems/gems/oauth-0.4.4/lib/oauth/consumer.rb:191:in `create_signed_request' [java] gems/gems/oauth-0.4.4/lib/oauth/consumer.rb:162:in `request' [java] gems/gems/oauth-0.4.4/lib/oauth/consumer.rb:197:in `token_request' [java] gems/gems/oauth-0.4.4/lib/oauth/consumer.rb:139:in `get_request_token' [java] app/controllers/twitter_controller.rb:9:in `authorize' [java] gems/gems/actionpack-3.0.3/lib/action_controller/metal/implicit_render.rb:4:in `send_action' [java] gems/gems/actionpack-3.0.3/lib/abstract_controller/base.rb:151:in `process_action' [java] gems/gems/actionpack-3.0.3/lib/action_controller/metal/rendering.rb:11:in `process_action' [java] gems/gems/actionpack-3.0.3/lib/abstract_controller/callbacks.rb:18:in `process_action' [java] gems/gems/activesupport-3.0.3/lib/active_support/callbacks.rb:438:in `_run__1732945617__process_action__259020027__callbacks' [java] gems/gems/activesupport-3.0.3/lib/active_support/callbacks.rb:424:in `_run_process_action_callbacks' [java] gems/gems/activesupport-3.0.3/lib/active_support/callbacks.rb:93:in `run_callbacks' [java] gems/gems/actionpack-3.0.3/lib/abstract_controller/callbacks.rb:17:in `process_action' [java] gems/gems/actionpack-3.0.3/lib/action_controller/metal/instrumentation.rb:30:in `process_action' [java] gems/gems/activesupport-3.0.3/lib/active_support/notifications.rb:52:in `instrument' [java] gems/gems/activesupport-3.0.3/lib/active_support/notifications/instrumenter.rb:21:in `instrument' [java] gems/gems/activesupport-3.0.3/lib/active_support/notifications.rb:52:in `instrument' [java] gems/gems/actionpack-3.0.3/lib/action_controller/metal/instrumentation.rb:29:in `process_action' [java] gems/gems/actionpack-3.0.3/lib/action_controller/metal/rescue.rb:17:in `process_action' [java] gems/gems/actionpack-3.0.3/lib/abstract_controller/base.rb:120:in `process' [java] gems/gems/actionpack-3.0.3/lib/abstract_controller/rendering.rb:40:in `process' [java] gems/gems/actionpack-3.0.3/lib/action_controller/metal.rb:138:in `dispatch' [java] gems/gems/actionpack-3.0.3/lib/action_controller/metal/rack_delegation.rb:14:in `dispatch' [java] gems/gems/actionpack-3.0.3/lib/action_controller/metal.rb:178:in `action' [java] gems/gems/actionpack-3.0.3/lib/action_dispatch/routing/route_set.rb:62:in `call' [java] gems/gems/actionpack-3.0.3/lib/action_dispatch/routing/route_set.rb:62:in `dispatch' [java] gems/gems/actionpack-3.0.3/lib/action_dispatch/routing/route_set.rb:27:in `call' [java] gems/gems/rack-mount-0.6.13/lib/rack/mount/route_set.rb:148:in `call' [java] gems/gems/rack-mount-0.6.13/lib/rack/mount/code_generation.rb:111:in `recognize' [java] gems/gems/rack-mount-0.6.13/lib/rack/mount/code_generation.rb:73:in `optimized_each' [java] gems/gems/rack-mount-0.6.13/lib/rack/mount/code_generation.rb:110:in `recognize' [java] gems/gems/rack-mount-0.6.13/lib/rack/mount/route_set.rb:139:in `call' [java] gems/gems/actionpack-3.0.3/lib/action_dispatch/routing/route_set.rb:492:in `call' [java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/best_standards_support.rb:17:in `call' [java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/head.rb:14:in `call' [java] gems/gems/rack-1.2.1/lib/rack/methodoverride.rb:24:in `call' [java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/params_parser.rb:21:in `call' [java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/flash.rb:182:in `call' [java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/session/abstract_store.rb:149:in `call' [java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/cookies.rb:295:in `call' [java] gems/gems/activerecord-3.0.3/lib/active_record/query_cache.rb:32:in `call' [java] gems/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/query_cache.rb:28:in `cache' [java] gems/gems/activerecord-3.0.3/lib/active_record/query_cache.rb:12:in `cache' [java] gems/gems/activerecord-3.0.3/lib/active_record/query_cache.rb:31:in `call' [java] gems/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:353:in `call' [java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/callbacks.rb:46:in `call' [java] gems/gems/activesupport-3.0.3/lib/active_support/callbacks.rb:430:in `_run_call_callbacks' [java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/callbacks.rb:44:in `call' [java] gems/gems/rack-1.2.1/lib/rack/sendfile.rb:107:in `call' [java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/remote_ip.rb:48:in `call' [java] gems/gems/actionpack-3.0.3/lib/action_dispatch/middleware/show_exceptions.rb:46:in `call' [java] gems/gems/railties-3.0.3/lib/rails/rack/logger.rb:13:in `call' [java] gems/gems/rack-1.2.1/lib/rack/runtime.rb:17:in `call' [java] gems/gems/railties-3.0.3/lib/rails/application.rb:168:in `call' [java] file:lib/jruby-rack-1.0.3.jar!/rack/handler/servlet.rb:19:in `call' [java] :1 [java]Someone shared a hack that works around the problem:
--- a/WebContent/WEB-INF/gems/gems/oauth-0.4.4/lib/oauth/signature/hmac/base.rb
+++ b/WebContent/WEB-INF/gems/gems/oauth-0.4.4/lib/oauth/signature/hmac/base.rb
@@ -2,6 +2,7 @@