2016-11-11 48 views
1

我成功地利用「AWS」(亞馬遜網絡服務)的SDK版本2(NOT「AWS」用大寫字母,因爲這是SDK版本1命名空間,我我使用的是'Aws'版本2),而名稱空間常量'Aws'在代碼中的rails控制器級別是已知的,但是如果我更深入一級,比如嘗試在由同一個控制器創建的模型中使用'Aws', 'Aws'命名空間是未知的。我得到一個未定義的常數'Aws'錯誤。Ruby on Rails的AWS SDK V2常量「AWS」未定義的常量誤差模型

我的假設是,AWS工具包通過在Gemfile中的寶石初始化,它的存在和出現的所有是正確的。捆綁檢查表明所有都已解決,正如我所說,它在Controller中工作,但不在模型類代碼中。

我通過注入AWS SDK到模型規避這一點,但我不認爲這是正確的方式,也許是???我是Ruby和Rails的新手,所以如果你能給我建議或者幫助我設置,那麼Aws工具包就像我預期的那樣在全球範圍內廣爲人知,我會很感激你的幫助。

在此先感謝!

+0

可以發佈整個錯誤跟蹤。 Aws gem包含rails引導期間所需的所有文件,因此它應該可以在模型中使用。 – Sivalingam

+0

我沒有錯誤跟蹤persay。如果控制器初始化對象,那麼我可以在控制器中看到Aws,並在其下面顯示一個類的深度,然後如果該類初始化另一個對象,則在下一個深度處看不到AWS或Aws,除非我使用:: Aws或:: Aws範圍我可以看到控制器下方2的深度。這是正常還是記錄在某個地方? –

+0

哦,我最近運行了bundle,所以不知道這個固定的東西是否與我之前描述的一樣,我沒有在控制器下面看到Aws或AWS一個深度,所以也許事情是固定的,正常的,我只是不明白完全模塊的範圍。謝謝! –

回答

0

答案是範圍操作符需要正常使用。作爲一個新的Ruby用戶,我不習慣常量不是在全球上市,因此爲什麼需要範圍操作員通過這些文獻在一定程度上解釋的解釋:

https://www.tutorialspoint.com/ruby/ruby_operators.htm

紅寶石圓點「」和雙冒號「::」運算符: 您通過在模塊名稱和句點之前調用模塊方法,並使用模塊名稱和兩個冒號引用常量。

的::是一元運算符,其允許:一個類或模塊中定義的常量,實例方法和類方法中,待從類或模塊以外的任何地方訪問。

記住:在Ruby中,類和方法可能太考慮常數。

你只需要與返回相應的類或模塊對象的表達式的前綴:: Const_name。

如果不使用前綴表達式,則默認使用主要的Object類。

相關問題