2016-10-06 34 views
1

我想能够存储变量到一个数组,然后通过它们循环,然后将结果存储在数组中,并返回该新的数组。商店类初始化变量到数组然后循环通过它.. [ruby]

的代码应该解释什么,我试图做的更好:

这是我的尝试:

# Important initializations 
url_check_array = Array.new 
return_array = Array.new 

# The following initializes classes which then does the check by using the two variables that's passed to it 
check_overall = CheckString.new("#{gitlab_cache}", 'success') 
check_cache = CheckString.new("#{gitlab_cache}", 'success') 
check_database = CheckString.new("#{gitlab_database}", 'success') 
check_migrations = CheckString.new("#{gitlab_migrations}", 'success') 

unless @is_verbose == "true" 
    # I haven't done much here as I am not done yet (still trying to get things work on the 'else' part) 
    url_check_array.insert(check_overall) 
    puts "url_check_array = #{check_overall}" # DEBUG 
    puts "Gitlab OVERALL URL is: #{gitlab_overall}" # DEBUG 
else 
    # url_check_array.insert("#{check_cache}", "#{check_database}", "#{check_migrations}") # Results in TypeError - no implicit conversion of String into Integer 
    url_check_array.insert(check_cache, check_database, check_migrations) 
    url_check_array.each do |check_item| 
    return_array.insert(check_item) 
    end 
    #puts "Result is: #{check_cache.class}" # DEBUG 
    return return_array 
end 

我想不出我在做什么错了,因为在错误上面的代码结果。

编辑:所以问题是......我如何成功地将这些类初始化放入数组,然后将它们正确循环并将结果放入另一个数组中?

EDIT2:现在,我发现了以下错误(S):

TypeError - no implicit conversion of CheckString into Integer

EDIT3:所以,我能够通过改变url_check_array.inserturl_check_array.push添加那些数组...但是,我现在的问题是,除了将相同的东西放入return_array(以下内容)后,我所拥有的循环并没有多大作用:

[#<CheckString:0x007ff51e0b5278 @uri_str="https://git.company.com/health_check.json?token=eeMGuv", @pattern="success">, #<CheckString:0x007ff51e0b51b0 @uri_str="https://git.company.com/health_check.json?token=eeMGuv", @pattern="success">, #<CheckString:0x007ff51e0b5110 @uri_str="https://git.company.com/health_check.json?token=eeMGuv", @pattern="success">] 

而不是实际的结果..所以,我真正想要它做的是实际执行CheckString.new("#{gitlab_migrations}", 'success'),然后将结果放入一个数组。

+0

你有问题要问?你有什么具体问题吗?你是否收到错误信息或结果不同于你预计忘记包括在你的问题中? –

+0

我会更新OP。 – Fadi

+1

“Array#insert”的第一个参数应该是一个整数索引,但是您将一个CheckString对象传递给TypeError。 –

回答

1

你把这些类放到你的结果数组中。 你的目的是把结果本身放在那个数组中?

所以在你的班级CheckString你应该有一个方法'检查'或类似的东西,把结果。然后在你的映射中你应该调用thatr检查方法。

url_check_array.each do |check_item| 
    return_array.insert(check_item.check) 
end 

class CheckString 
    def check 
    # do some checking and return something that indicates a succesful check or not, eg 
    @gitlab_migrations == 'success' 
    end 
end 
+0

嗯,我会试试看,看看它是如何工作的。但出于好奇,并不是'return_array。将结果插入TypeError,因为它会查找整数而不是?像它应该是'return_array.push'? – Fadi

+0

顺便说一句,将'return_array.push(check_item)'改成return_array.push(check_item.check)'就像魅力一样工作!再次感谢! <3 – Fadi