包含带链轮的特定文件

时间:2014-12-21 17:00:44

标签: ruby-on-rails jasmine bower sprockets

我通过凉亭安装了茉莉花:

├── angular#1.3.8 (1.3.9-build.3719+sha.a3c3bf3 available)
├─┬ angular-animate#1.3.8 (1.3.9-build.3719+sha.a3c3bf3 available)
│ └── angular#1.3.8 (latest is 1.3.9-build.3719+sha.a3c3bf3)
├─┬ angular-cookies#1.3.8 (1.3.9-build.3719+sha.a3c3bf3 available)
│ └── angular#1.3.8
├─┬ angular-resource#1.3.8 (1.3.9-build.3719+sha.a3c3bf3 available)
│ └── angular#1.3.8
├─┬ angular-route#1.3.8 (1.3.9-build.3719+sha.a3c3bf3 available)
│ └── angular#1.3.8
├─┬ bootstrap#3.3.1
│ └── jquery#2.1.3
├── jasmine#2.1.3
└── require#a45d433fdc

但是,如何将其包含在我的项目中?

根据their homepage,我需要包括:

jasmine.js
jasmine-html.js
boot.js

但是,当我尝试在我的专用规范页面中包含带有链轮的jasmine.js时,我收到错误:

//= require jasmine

给了我:

Sprockets::FileNotFound
couldn't find file 'jasmine'

bootstrap,angular和angular的模块都与链轮完美配合:

//= require jquery
//= require jquery_ujs
//= require angular
//= require angular-resource
//= require angular-route
//= require angular-cookies
//= require bootstrap

但不是茉莉:(

我不想使用宝石,因为我希望凉亭能够吸引我所有的客户端库。

有没有办法用链轮硬编码路径?我可以看到我需要的文件。它们位于:

vendor/assets/bower_components/jasmine/lib/jasmine-core/jasmine.js
vendor/assets/bower_components/jasmine/lib/jasmine-core/jasmine-html.js
vendor/assets/bower_components/jasmine/lib/jasmine-core/boot.js

1 个答案:

答案 0 :(得分:1)

bootstrap,angular,angular modules和jasmine之间的区别在于它们都有 bower.json jasmine缺少它。 Bower将能够在没有bower.json文件的情况下解析包,但它有一些缺点 sprockets与bower组件一起工作的方式在article中有很好的描述。简短版本是在处理像//= require bootstrap sprockets这样的指令时:

  • Sprockets将在资产路径中搜索 bootstrap
  • 如果找到,则检查其文件或目录。在铁轨上 app,bower在目录 bootstrap 下安装了这个lib。
  • 如果是目录,它会检查目录是否包含 bower.json 文件。在 rails app,bootstrap文件夹确实有bower.json文件。
  • 解码json文件,并解析包含文件和的主域 返回所需的资产。

现在,jasmine没有bower.json文件。它并不能阻止Bower解决它,但这意味着链轮将找到主文件。
对此的一个解决方案是为您要包含的jasmine文件提供require directive logical或相对路径,例如:

//= require jasmine/lib/jasmine-core/jasmine.js

这假设vendor/assets/bower _ components是sprockets load path的一部分。