无法调用undefined的方法'charAt' - 仅在服务器上

时间:2012-02-09 21:38:42

标签: ruby-on-rails-3 twitter-bootstrap passenger less bootswatch

我有一个在本地(OsX,WEBrick)运行良好的rails应用程序。

我已经在服务器(Ubuntu 10.04,Apache,Passenger)上克隆了repo,设置了乘客,但是现在当我尝试连接到我得到的每个页面时

Less::ParseError in Pages#home

Showing /var/www/MYAPP/app/views/layouts/application.html.erb where line #5 raised:

Cannot call method 'charAt' of undefined
  (in /usr/lib/ruby/gems/1.8/gems/twitter-bootstrap-rails-2.0.2/vendor/assets/stylesheets/twitter/bootstrap.css.less)

bootstrap.css.less的内容是:

@import "twitter/bootstrap/bootstrap";

application.html.erb的第5行是:

<%= stylesheet_link_tag    "application" %>

两台机器上的红宝石1.8.7

3 个答案:

答案 0 :(得分:1)

解决了升级到ruby 1.9.3的问题

答案 1 :(得分:1)

在Ubuntu服务器10.04上升级对我的影响不大

对于系统范围:

sudo npm -g install less

仅限用户:

npm install less

答案 2 :(得分:0)

我认为这与Ruby less gem没有正确编译有关。我也在mac本地解决了这个问题。某处我看到了一个使用less(1.3)节点版本而不是ruby gem的建议,你可以用npm install less安装它。

然而,大多数连接bootstrap到rails的宝石使用ruby gem版本,所以它似乎是不行,尤其是heroku等。经过非常令人沮丧的几天,我放弃并切换到sass版本的bootstrap:https://github.com/thomas-mcdonald/bootstrap-sass

与rails集成更简单,但不幸的是没有正式版本的bootstrap。后来我去了整合bootswatch,但这也不适合sass。所以我现在回到普通的旧版css版本的bootswatch,直到有更好的方法来解决这个问题:/