加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails 3.2.8,heroku:未初始化的常量Less :: E

发布时间:2020-12-17 02:03:43 所属栏目:百科 来源:网络整理
导读:我在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 `
我在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
  ...

这意味着如果Less :: Engine未定义,则无法命中第60行.我错过了什么?

编辑

从heroku控制台更好的演示:

irb(main):008:0> ::Less.const_defined? :Engine 
=> true
irb(main):009:0> ::Less::Engine
NameError: uninitialized constant Less::Engine

编辑2

它变得更有趣:

irb(main):011:0> ::Less.const_defined? :Engine,false 
=> false

不同之处在于后者不会搜索祖先.但是没有祖先,所以它不应该有所作为:

irb(main):012:0> ::Less.ancestors
=> [Less]

解决方法

如果您刚刚在3.2.x堆栈中升级了rails版本,您会发现较少版本在3.2.2等早期版本中“存在”,而在3.2.9等更高版本中不存在.

我还没有完全调查过这个问题,但是我注意到当我从3.2.2升级到3.2.9时,我遇到了一些“少”问题.

干杯

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读