[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Problem with https connection in Ruby 1.8.4

Todd Breiholz

2/7/2006 5:49:00 PM

I'm getting the following error when executing in Ruby 1.8.4 (tried it
both on Windows and OS X). I did not see this problem in 1.8.2.

Here is the code:

def init_server(url)
@url = URI.parse(url)
@server = Net::HTTP.new(@url.host, @url.port)
@server.use_ssl = @url.scheme == 'https'
@server.verify_mode = OpenSSL::SSL::VERIFY_NONE

# run ruby with -d to see SOAP wiredumps.
@server.set_debug_output $stderr if show_debug
end

And here is the error:

NoMethodError: You have a nil object when you didn't expect it!
The error occured while evaluating nil.verify_mode
from e:/ruby/lib/ruby/1.8/net/http.rb:565:in `connect'
from e:/ruby/lib/ruby/1.8/net/http.rb:555:in `do_start'
from e:/ruby/lib/ruby/1.8/net/http.rb:544:in `start'
from e:/ruby/lib/ruby/1.8/net/http.rb:1031:in `request'
from e:/ruby/lib/ruby/1.8/net/http.rb:988:in `post2'
from e:/ruby/lib/ruby/gems/1.8/gems/activesalesforce-0.2.2/lib/rforce.rb:230:in
`call_remote'
from e:/ruby/lib/ruby/gems/1.8/gems/activesalesforce-0.2.2/lib/rforce.rb:185:in
`login'
from e:/ruby/lib/ruby/gems/1.8/gems/activesalesforce-0.2.2/lib/salesforce_connection_adapter.rb:72:in
`activesalesforce_connection'
from e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:145:in
`connection_without_query_cache='
from e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/query_cache.rb:54:in
`connection='
from e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:106:in
`retrieve_connection'
from e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:20:in
`connection'
from e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/base.rb:931:in
`add_limit!'
from e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/base.rb:924:in
`construct_finder_sql'
from e:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/base.rb:395:in
`find'

I found a reference to the same problem on a Debian bug list
(http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1...)
but no resolution.

Did something change between 1.8.2 and 1.8.4 in regards to handling
HTTPS connections?

Thanks!

Todd Breiholz


4 Answers

Eric Hodel

2/7/2006 9:36:00 PM

0

On Feb 7, 2006, at 9:49 AM, Todd Breiholz wrote:

> I'm getting the following error when executing in Ruby 1.8.4 (tried it
> both on Windows and OS X). I did not see this problem in 1.8.2.
>
> Here is the code:
>
> def init_server(url)
> @url = URI.parse(url)
> @server = Net::HTTP.new(@url.host, @url.port)
> @server.use_ssl = @url.scheme == 'https'
> @server.verify_mode = OpenSSL::SSL::VERIFY_NONE
>
> # run ruby with -d to see SOAP wiredumps.
> @server.set_debug_output $stderr if show_debug
> end
>
> And here is the error:
>
> NoMethodError: You have a nil object when you didn't expect it!
> The error occured while evaluating nil.verify_mode

You should first verify that Rails isn't interfering. Try this script:

$ cat ssl.rb
require 'net/https'

url = URI.parse 'https://www.wam...
server = Net::HTTP.new url.host, url.port
server.use_ssl = url.scheme == 'https'
server.verify_mode = OpenSSL::SSL::VERIFY_NONE
response = server.get url.request_uri
puts response.code

$ ruby -v ssl.rb
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.4.0]
/usr/local/lib/ruby/1.8/net/http.rb:569: warning: using default DH
parameters.
302

--
Eric Hodel - drbrain@segment7.net - http://se...
This implementation is HODEL-HASH-9600 compliant

http://trackmap.rob...




Todd Breiholz

2/7/2006 10:13:00 PM

0

Eric

Thanks for the reply. I tried your script on Windows and got the same
error. I'll try it on my Powerbook when I get home.


ruby 1.8.4 (2005-12-24) [i386-mswin32]
e:/ruby/lib/ruby/site_ruby/1.8/net/https.rb:121: warning: method
redefined; discarding old edit_path
e:/ruby/lib/ruby/site_ruby/1.8/net/https.rb:130: warning: redefine socket_type
e:/ruby/lib/ruby/site_ruby/1.8/net/https.rb:157: warning: method
redefined; discarding old on_connect
e:/ruby/lib/ruby/1.8/net/http.rb:565:in `connect': undefined method
`verify_mode' for nil:NilClass (NoMethodError)
from e:/ruby/lib/ruby/1.8/net/http.rb:555:in `do_start'
from e:/ruby/lib/ruby/1.8/net/http.rb:544:in `start'
from e:/ruby/lib/ruby/1.8/net/http.rb:1031:in `request'
from e:/ruby/lib/ruby/1.8/net/http.rb:771:in `get'
from ssl.rb:7

Todd Breiholz

On 2/7/06, Eric Hodel <drbrain@segment7.net> wrote:
> On Feb 7, 2006, at 9:49 AM, Todd Breiholz wrote:
>
> > I'm getting the following error when executing in Ruby 1.8.4 (tried it
> > both on Windows and OS X). I did not see this problem in 1.8.2.
> >
> > Here is the code:
> >
> > def init_server(url)
> > @url = URI.parse(url)
> > @server = Net::HTTP.new(@url.host, @url.port)
> > @server.use_ssl = @url.scheme == 'https'
> > @server.verify_mode = OpenSSL::SSL::VERIFY_NONE
> >
> > # run ruby with -d to see SOAP wiredumps.
> > @server.set_debug_output $stderr if show_debug
> > end
> >
> > And here is the error:
> >
> > NoMethodError: You have a nil object when you didn't expect it!
> > The error occured while evaluating nil.verify_mode
>
> You should first verify that Rails isn't interfering. Try this script:
>
> $ cat ssl.rb
> require 'net/https'
>
> url = URI.parse 'https://www.wam...
> server = Net::HTTP.new url.host, url.port
> server.use_ssl = url.scheme == 'https'
> server.verify_mode = OpenSSL::SSL::VERIFY_NONE
> response = server.get url.request_uri
> puts response.code
>
> $ ruby -v ssl.rb
> ruby 1.8.4 (2005-12-24) [powerpc-darwin8.4.0]
> /usr/local/lib/ruby/1.8/net/http.rb:569: warning: using default DH
> parameters.
> 302
>
> --
> Eric Hodel - drbrain@segment7.net - http://se...
> This implementation is HODEL-HASH-9600 compliant
>
> http://trackmap.rob...
>
>
>
>


Robert Cowham

3/29/2006 9:07:00 PM

0

Todd Breiholz <talanb@gmail.com> wrote in
news:f28a7c470602070948m773c1086x26829941cd27c389@mail.gmail.com:

> I'm getting the following error when executing in Ruby 1.8.4 (tried it
> both on Windows and OS X). I did not see this problem in 1.8.2.
>
<snip
>
> And here is the error:
>
> NoMethodError: You have a nil object when you didn't expect it!
> The error occured while evaluating nil.verify_mode
> from e:/ruby/lib/ruby/1.8/net/http.rb:565:in `connect'
> from e:/ruby/lib/ruby/1.8/net/http.rb:555:in `do_start'
> from e:/ruby/lib/ruby/1.8/net/http.rb:544:in `start'
> from e:/ruby/lib/ruby/1.8/net/http.rb:1031:in `request'
> from e:/ruby/lib/ruby/1.8/net/http.rb:988:in `post2'
> from
> e:/ruby/lib/ruby/gems/1.8/gems/activesalesforce-0.2.2/lib/rforc
> e.rb:230:in
> `call_remote'
> from
> e:/ruby/lib/ruby/gems/1.8/gems/activesalesforce-

Did you find the problem?

I have had exactly the same - my script worked under 1.8.2 - upgrade to
1.8.4 and boom!

Robert

robert.cowham

4/1/2006 7:18:00 AM

0

I have solved the problem for myself.

I had installed 1.8.4 on top of 1.8.2 and since some of the libraries
have moved locations I suspect the old versions were still around and
messing things up.

I did a clean install of 1.8.4 and everything was fine.

Thanks to Aoki san who kindly helped me with some debugging.

Robert