2015-10-01 13 views
-2

Привет, у меня есть строка, переданная из rspec.Возврат Ruby с двойными кавычками

Он должен показать "alias/public_html/ab1/ab2/"

, но я получаю "\"alias/public_html/ab1/ab2/\""

Я получаю Rspec ошибку ниже:

WebServer::HttpdConf#alias_path returns the aliased path     
Failure/Error: expect(httpd_file.alias_path('/ab/')).to eq 'alias/public_html/ab1/ab2/' 

    expected: "alias/public_html/ab1/ab2/" 
     got: "\"alias/public_html/ab1/ab2/\"" 

    (compared using ==) 
# ./spec/lib/config/httpd_conf_spec.rb:90:in `(root)' 

А вот мой фактический файл программы

def alias_path(path) 
    @hash_httpd['Alias'][path] 
end 

Пожалуйста, помогите

EDIT

К сожалению, я новичок в рубин, вот httpd_file

def initialize(httpd_file_content) 
    @hash_httpd = Hash.new 
    httpd_file_content.each_line do | line | 
    @commands = line.split 
    if @commands.length == 2 
     @hash_httpd[@commands[0]] = @commands[1] 
    else 

     if [email protected]_httpd.has_key?(@commands[0]) 
     al = Hash.new 
     @hash_httpd[@commands[0]] = al 
     else 
     al = @hash_httpd[@commands[0]] 
     end 

     al[@commands[1]] = @commands[2] 
    end 
    end 
end 
+1

Ваша строка содержит s кавычки. Мы не можем ничего рассказать о причине этого, а также об ошибке, если вы не покажете, как выглядит '@ hash_httpd' (или, по крайней мере,' @hash_httpd ['Alias'] '). – Amadan

+0

Ваше изменение по-прежнему не отображает значение. Я могу только предположить, что в 'httpd_file_content' есть строка, подобная alias alias/public/html/ab1/ab2 /" '; ваш код не разделяет кавычки, и они сохраняются как есть. Если ваш файл сказал что-то вроде «Alias ​​alias/public/html/ab1/ab2 /», у вас не было бы этой проблемы. Учитывая, что вы используете 'split' без разбора, кавычки вводят в заблуждение и полностью бесполезны (они, например, не будут защищать значение от разделения на пространстве, например, в оболочке). – Amadan

+0

Привет, Амадан, я нашел, откуда взялась строка, и да, они, как вы сказали, содержат кавычки, я пытался использовать gsub, но, похоже, –

ответ

1

Если вы уверены, что ваш alias_path выход будет "alias/public_html/ab1/ab2/", то вы можете просто изменить свой метод alias_path путем удаления котировок (если есть) с возвращенного пути:

def alias_path(path) 
    @hash_httpd['Alias'][path].gsub('"', '') 
end 
Смежные вопросы