我看到這個錯誤在Heroku上延遲的工作,這是沒有意義對我說:的Rails 3.2.8,Heroku的:未初始化的常數小::引擎
{uninitialized constant Less::Engine
(in /app/app/assets/stylesheets/share_and_earn_recommendation_email.css.less)
/app/vendor/bundle/ruby/1.9.1/gems/tilt-1.3.3/lib/tilt/css.rb:60:in `prepare'
...
爲什麼沒有意義?因爲css.rb
看起來是這樣的:
def prepare
if ::Less.const_defined? :Engine
@engine = ::Less::Engine.new(data) # line 60
else
...
這意味着它是不可能打60行,如果Less::Engine
是不確定的。我錯過了什麼?
編輯
更妙的是從Heroku的控制檯演示:
irb(main):008:0> ::Less.const_defined? :Engine
=> true
irb(main):009:0> ::Less::Engine
NameError: uninitialized constant Less::Engine
EDIT 2
它變得更有趣:
irb(main):011:0> ::Less.const_defined? :Engine, false
=> false
各色的nce是後者不搜索祖先。但也有沒有祖先,因此它不應該有所作爲:
irb(main):012:0> ::Less.ancestors
=> [Less]
http://www.ruby-forum.com/topic/51795這有幫助嗎?它建議使用已定義的?(Less :: Engine)。 –
@JoePym不是真的。該線程是關於'const_defined?'看不到一個定義的常量。在我的情況下,情況正好相反:const缺少,但是'const_defined?'不確定。 – artemave
只是一個想法:大約在同一時間,這開始發生,heroku升級紅寶石https://devcenter.heroku.com/changelog-items/189?utm_source=dlvr.it&utm_medium=twitter雖然本地,與該紅寶石版本,沒有問題 – artemave