2015-02-27 1 views
1

Я использовал рельсы 4.1.4 с fakefs 0.5.2. Я пытался обновить рельсы 4.2.0 и теперь мои тесты не с этой ошибкой:FakeFS вызывает open-uri open, чтобы вызвать «Нет такого файла или каталога @ rb_sysopen»

Errno::ENOENT: 
    No such file or directory @ rb_sysopen - https://google.com/ 

Я попытался найти и, наконец, прибыл, что это вызвано, вероятно, по FakeFS, как, когда я звоню открыть в консоли рельсы, его работает следующим образом:

2.1.0 :001 > link = open("https://google.com") 
=> #<Tempfile:/tmp/open-uri20150227-21959-18cqr0h> 
2.1.0 :003 > require 'fakefs/spec_helpers' 
=> true 
2.1.0 :004 > FakeFS.activate! 
=> true 
2.1.0 :005 > link = open("https://google.com") 
Errno::ENOENT: No such file or directory - https://google.com 

Кто-нибудь знает причину этого?

Обновление: Итак, в итоге я решил заменить open-uri на curb. Существуют также другие альтернативы, такие как rest-client и Net::HTTP. Благодаря

+1

Смотрите также https://github.com/defunkt/fakefs/issues/290 – HerbCSO

ответ

0

Там ошибка в NET::SSH.sftp.download .use сети/SCP

require 'net/ssh' 
require 'net/sftp' 
require 'net/scp' 

begin 

    puts '------------------------' 
    puts 'Connecting to server...' 

    Net::SSH.start(host, username, :password => password, :port => port) do |ssh| 

     puts '------------------------' 
     puts 'Entered the server...' 

     puts '------------------------' 
     puts 'Listing directory..' 

     puts ssh.sftp.dir.entries(directory.to_s).map { |e| e.name } 

     puts local_filename_path = Dir.pwd+'/'+filename.to_s 

     puts remote_filename_path = "directory.to_s+filename.to_s" 

     puts '------------------------' 
     puts "Download file #{remote_filename_path}..." 

     ssh.scp.download!(remote_filename_path, local_filename_path) do |ch, name, sent, total| 
     puts "#{name}: #{sent}/#{total}" 
     end 
     puts '------------------------' 
     puts "File download #{remote_filename_path}!!" 
     puts '------------------------' 


     puts "done! exit!" 

     ssh.wait! 
     # ssh.execute! 'exit' 
     ssh.close 

    end 

    rescue Timeout::Error 
    @error = " Timed out" 
    rescue Errno::EHOSTUNREACH 
    @error = " Host unreachable" 
    rescue Errno::ECONNREFUSED 
    @error = " Connection refused" 
    rescue Net::SSH::AuthenticationFailed 
    @error = " Authentication failure" 
    end 

    if defined?(@error) then 
    puts @error 
    end 

 Смежные вопросы

  • Нет связанных вопросов^_^