1
我一直在轉圈本作的幾個小時,沒有任何運氣找到一個解決問題的參考運行時比...代碼行爲不同從模型
我們正在建設一個存儲在AmazonS3上的視頻庫的簡單索引應用程序。 在編寫我的測試時,我最初將所有內容寫在測試文件上,以確定我想要的結果,並逐漸將實際實現移至模型。
使用Rails 3,AWS-S3的寶石,和RSpec 所以工作,在我的測試中,我開始用下面的代碼:
spec/models/s3import_spec.rb
...
it "gets the names of all objects" do
im = S3import.new
a = []
im.bucket.objects.each do |obj|
a << obj.key
end
a.should == ["Agility/", "Agility/Stationary_Over Stick/",
"Agility/Stationary_Over Stick/2 foot hops over stick.mp4"]
end
這個簡單的測試創建知道S3的導入對象存儲桶名稱和憑證,並遍歷存儲桶中的對象並捕獲對象的名稱。這按預期工作。
當我將代碼移到模型上時,我最終得到以下模型;
app/models/s3import.rb
...
def objNames
a = []
bucket.objects.each do |i|
a << i.key
end
end
和測試更改爲:
it "gets the names of all objects" do
im = S3import.new
a = im.objNames
a.should == ["Agility/", "Agility/Stationary_Over Stick/",
"Agility/Stationary_Over Stick/2 foot hops over stick.mp4"]
end
我的困惑是,當我運行測試呼籲模型端的代碼,我沒有得到的字符串,我是數組期待(正如我在自包含的測試代碼中)。我收到以下內容:
[#<AWS::S3::S3Object:0x2179225400 '/transcode2011/Agility/'>,
+ #<AWS::S3::S3Object:0x2179225380 '/transcode2011/Agility/Stationary_Over Stick/'>,
+ #<AWS::S3::S3Object:0x2179225320 '/transcode2011/Agility/Stationary_Over Stick/2 foot hops over stick.mp4']
正如你可以看到,返回的數組包含原來的AWS :: S3:S3Objects ......彷彿循環簡單地複製原始數組而不是獲取的「鑰匙」爲一個字符串。
我已經在控制檯中測試過,並且我似乎無法弄清楚導致差異的具體差異。
任何幫助將不勝感激。
啊,我有一種感覺,這是一件簡單的事情,那是做的,謝謝! – Tonys 2011-05-18 12:20:08