Ruby on Rails错误 "无法加载此文件--less"

41

我对ruby on rails相当新,我一直在尝试使用twitter-bootstrap作为资产,在我的Gemfile中包含它,并捆绑并成功安装。但是我注意到它依赖于某些在执行“bundle”命令时未显示的依赖项。

它所需的依赖关系

(1) Libv8
(2) Less
(3) Less-rails

错误信息:

cannot load such file -- less
  (in c:/Sites/todo/app/assets/stylesheets/bootstrap_and_overrides.css.less)

[code]

Extracted source (around line #8):

5:   <!--[if lt IE 9]>
6:     <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"     type="text/javascript"></script>
7:   <![endif]-->
8:   <%= stylesheet_link_tag    "application", :media => "all" %>
9:   <%= javascript_include_tag "application" %>
10:   <%= csrf_meta_tags %>
11:   <meta name="viewport" content="width=device-width, initial-scale=1.0">

[/code]

Trace
app/views/layouts/application.html.erb:8:in     `_app_views_layouts_application_html_erb__560528188_27183396'
app/controllers/lists_controller.rb:7:in `index'

我注意到已经有很多针对这个问题的答案了,而且我已经选择了显而易见的解决方案,但是不知为何我仍然卡住了,非常需要一些指导。


你使用的是哪个版本的 Twitter Bootstrap? - Leo Correa
我正在使用 Twitter Bootstrap 版本 2.1.9。 - Nicolas Brown
同样的Rails版本 'rails','3.2.9' - Nicolas Brown
5个回答

89

3
这是我目前正在使用的宝石, 但是我没有therubyracer或less-rails这两个宝石。 - Nicolas Brown
我想就这样了...我按照链接上的指南操作,一切都很顺利。 就像我之前说的,Rails使用SASS而不是LESS。这就是为什么需要另外两个宝石的原因。(我正在使用Rails 3) - Helio Santos

27

我只需要重新启动我的服务器。

当我本地服务器正在运行时,我添加了上述三个宝石(less-rails, therubyracertwitter-bootstrap-rails,使用Rails 3.2.13),导致出现上述问题。因此,一旦我关闭并重新启动它,一切都正常加载。


2
那为什么你没有选择这个作为正确答案呢? - max pleaner
@CodeBiker,是的,我的Rails应用程序也需要重新启动。 - ipatch

7

你需要更新therubyracer或将twitter-bootstrap-rails gem 降级至最后一个已知没有此问题的版本2.1.7。

要更新gem,请运行bundle update。如果要修改你的Gemfile文件,请将twitter-bootstrap-rails gem 修改为以下内容:

gem 'twitter-bootstrap-rails', '2.1.7'

请看这个问题:
版本在2.1.7之后的twitter-bootstrap-rails出现了这个问题。
问题详情请见:https://github.com/seyhunak/twitter-bootstrap-rails/issues/465

2
我尝试安装libv8但一直失败,而therubyracer依赖于它,同时"less"也依赖于"therubyracer"。 - Nicolas Brown
@NicolasBrown 尝试卸载并重新安装... gem uninstall libv8 然后运行 bundle install,它将检测到 therubyracer 的依赖关系并安装 libv8。如另一篇帖子中所提到的那样,重新启动您的服务器。 - s2t2

4

2
不存在了(404未找到) - Andre Figueiredo

1
也许你正在使用Windows操作系统...但是由于没有针对Windows的libv8库和二进制文件therubyracer,因此无法使用它,因为它依赖于libv8。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接