Ruby on rails 4 在另一个gem中包装引导sass gem会导致资产清单中断

Ruby on rails 4 在另一个gem中包装引导sass gem会导致资产清单中断,ruby-on-rails-4,gem,bundler,bootstrap-sass,Ruby On Rails 4,Gem,Bundler,Bootstrap Sass,我正在尝试将引导sass gem包装到另一个gem中(让我们称之为我的引擎)。在此过程中,我正在构建一个小型Rails应用程序来进行测试。作为第一步,我想确保引导式sass可以直接在Rails应用程序中工作。Rails应用程序的文件如下所示: gem 'bootstrap-sass', '3.3.1.0' gem 'my-engine, path: "~/dev/my-engine" 这个很好用。引导资产被加载到我的Rails应用程序中,一切看起来都很好。现在,我想从我的Rails应用程序中取

我正在尝试将引导sass gem包装到另一个gem中(让我们称之为我的引擎)。在此过程中,我正在构建一个小型Rails应用程序来进行测试。作为第一步,我想确保引导式sass可以直接在Rails应用程序中工作。Rails应用程序的文件如下所示:

gem 'bootstrap-sass', '3.3.1.0'
gem 'my-engine, path: "~/dev/my-engine"
这个很好用。引导资产被加载到我的Rails应用程序中,一切看起来都很好。现在,我想从我的Rails应用程序中取出引导sass,让它通过我的引擎加载。因此,我的Rails应用程序文件现在看起来像:

gem 'my-engine, path: "~/dev/my-engine"
我的引擎的.gempec有:

spec.add_runtime_dependency 'bootstrap-sass', '3.3.1.0'
我可以重新捆绑我的引擎宝石没有问题。我可以毫无问题地重新绑定Rails应用程序。但是,当我刷新Rails应用程序的页面时,出现以下错误:

File to import not found or unreadable: bootstrap-sprockets.
当Sprocket尝试构建application.css文件时,会发生此中断。有时,这会过去,我会得到一个不同的错误,关于在构建application.js时丢失bootstrap.js javascript文件


为什么会这样?我想知道这是否与我在本地开发gems而没有发布它们有关,尽管我不确定这会影响发布的bootstrap sass的原因。我使用的是Buffer-1.5.3.

,因为您希望使用越来越多的SCSS/JS/COFEFScript文库,您可能想考虑移动到BoW.GeFixes作为引导SASS官方的来源。我们用于rake任务和自动配置。在标准bower上,它是一个非常精简的配置/rake任务层

针对您的答案,通过gem引导的问题是我将引擎切换到bower资产的原因之一。我们现在导入
bootstrap sass official
并拥有完全控制权,但是请注意,对于sass文件,您需要导入到源文件的较长路径,即在我们的引擎
\u应用程序中。scss

# our custom variable overrides
@import 'overrides/variables';

@import 'bootstrap-sass-official/assets/stylesheets/bootstrap-sprockets';
@import 'bootstrap-sass-official/assets/stylesheets/bootstrap';
注意:如果希望
应用程序
sass变量覆盖引擎和sass变量,请确保引擎具有
\u应用程序。scss
不是
应用程序。scss
,前导下划线对于变量上下文/范围至关重要

向前看,您可能需要像我们一样忽略bower传递依赖项。 (即,某些依赖项可能使用“bootstrap”,而其他依赖项则使用“bootstrap-sass-official”等)

我们在我们的
.bowerrc
中这样使用它,如下所示:

{
  "ignoredDependencies": [
    "bootstrap",
    "bootstrap-sass",
    "bootstrap-sass-official"
  ]
}
总之
我们已经成功地使用了几个月
bower rails
将在
/vendor/assets
中安装依赖项,如果在引擎中引用,则根本不需要在应用程序项目中引用它们。维护/添加/更新库以及准确了解文件是如何包含的非常简单快捷。

确保引擎中需要“引导sass”。执行此操作的一个合理位置是lib/my-engine.rb文件:

require 'bootstrap-sass'

当您试图包装gems时,在.gemspec中添加引导sass gem作为运行时依赖项是不够的

多谢各位。我要试一试。